“验证程序”的版本间差异

来自典枢
跳到导航 跳到搜索
第9行: 第9行:
[https://github.com/YeeZTech/verification-programs/tree/main/src/dianshu2.0/csv 开源地址]
[https://github.com/YeeZTech/verification-programs/tree/main/src/dianshu2.0/csv 开源地址]


CSV统计程序用于统计各种CSV数据的相关信息,包括:
输入csv格式的文件,本算法将对文件的数据进行质量评估的统计,并在算法结束后将统计结果输出。统计结果包括csv的行数,列数,总缺失值数,列缺失值数量统计、行缺失值数量统计。算法将以列数最多的行为起点统计缺失值情况。


* 行数
CSV统计程序运行后输出结果的结构如下所示:<syntaxhighlight lang="json" line="1">
* 列数
{
* 缺失值
  "rows": 58,
  "cols": 6,
  "totalNulls": 48,
  "NullProportion": 13.79,
  "col_nulls": [
    { "null_num": 6, "count": 1 },
    { "null_num": 7, "count": 1 },
    { "null_num": 8, "count": 2 },
    { "null_num": 9, "count": 1 },
    { "null_num": 10, "count": 1 }
  ],
  "row_nulls": [
    { "null_num": 0, "count": 34 },
    { "null_num": 1, "count": 16 },
    { "null_num": 2, "count": 2 },
    { "null_num": 3, "count": 1 },
    { "null_num": 4, "count": 1 },
    { "null_num": 5, "count": 3 },
    { "null_num": 6, "count": 1 }
  ]
}
 
</syntaxhighlight>输出的内容有
 
* '''<code>rows</code>''':csv中的总行数
* '''<code>cols</code>''':csv中的总列数
* '''<code>totalNulls</code>''':总缺失值的数量
* '''<code>NullProportion</code>''':缺失值百分比,该缺失值精确到小数点后两位。
* '''<code>col_nulls</code>''':每列中有多少个缺失行的数量统计
** '''<code>null_num</code>''':表示缺失x行
** '''<code>count</code>''':缺失x行的数据共有多少列  '''注''':若缺失x行的数量为0时'''<code>(count=0)</code>,将不会输出''';<code>null_num > 1000</code> 时的统计将统一存储在<code>null_num=1001</code>的条目中。这两个条件对缺失列的数据统计同样适用。
* '''<code>row_nulls</code>''':每行中有多少个缺失列的数量统计
** '''<code>null_num</code>''':表示缺失x列
** '''<code>count</code>''':缺失x列的数据共有多少行


=== 文本抽样程序 ===
=== 文本抽样程序 ===
输入txt格式的文本文件,本算法将对txt文件进行质量评估,将txt文件的前中后位置上的部分内容打包输出到一个json文件中。目前的算法中,当输入txt文件后,将返回该txt内容的前150字,尾部150字以及中间300字。当txt中内容太段(目前该限制为小于1500字)时,将改为取txt的前15%,后15%以及中间30%的内容。
注:在分析中,一个“字”表示一个 英文字母/汉字/符号/操作符 等内容。
文本抽样运行后输出结果的结构如下所示:<syntaxhighlight lang="json">
{
  "head": "#include \"user_type.h\"\n#include \"string_process.h\"\n#include \"ypc/core_t/analyzer/data_source.h\"\n#include \"ypc/stbox/ebyte.h\"\n#include \"ypc/stbox/stx_c",
  "mid": "一个batch的所需长度\n    int start_pos = total_size / 2 - 50; // 中间的100字节的起始位置\n    int mid_batch_no = start_pos / batch_max_size; // 中间的100字节所在的batch的编号\n    \n    start_pos = start_pos % batch_max_size; // 中间的100字节的起始位置在batch中的位置\n\n    LOG(INFO) << \"Batch Num: \" << batch_num;\n    LOG(INFO) << \"Start Position:",
  "tail": " process_string(middle_100) + \"\\\"}\";\n    return result;\n  }\n\nprotected:\n  std::vector<std::shared_ptr<ypc::data_source_with_dhash>> m_datasources;\n};\n",
  "total": "3474"
}
</syntaxhighlight>输出的内容有:
* '''<code>head</code>''':txt文件头部150字内容
* '''<code>mid</code>''':txt文件中部300字内容
* '''<code>tail</code>''':txt文件尾部150字内容
* '''<code>total</code>''':文本文件中的总字数统计
以上例子中展示的是一个包含代码内容的txt文件,除了普通文字内容,代码中包含了更多的换行符以及引号,换行符将在结果中以''''<code>'\n'</code>'''的形式被输出内容中的引号为了防止json解析失败也会以'''<code>'\"'</code>'''的格式输出。


=== 视频抽样程序 ===
=== 视频抽样程序 ===
输入mp4格式的文件,本算法将读取mp4的内容并截取其中的数帧的画面编码成base64格式的json数据输出,输出图片不固定,在每次运行时都将随机选取图片输出,目前规定输出的内容视频总时间、三张视频截图(以Base64编码表示)以及其三张截图的截取时间,
==== 输出形式 ====
<syntaxhighlight lang="json">
{
  totalDuration: // 总时长
  positions: [
    {
      duration:  // 时间点
      picture:  // 截取图片
    },
    {
      duration: 
      picture: 
    },
    {
      duration: 
      picture: 
    }
  ]
}
</syntaxhighlight>
* '''<code>totalDuration</code>''':该字段中包含了所有视频截图的编码数据,每一条数据都代表一张视频截图的base64编码,可通过解码获取原图。
* '''<code>positions</code>''':
** '''<code>duration</code>''':截取图片对应时间(以秒为单位表示)。
** '''<code>picture</code>''':该字段中包含了所有视频截图的编码数据,每一条数据都代表一张视频截图的base64编码,可通过解码获取原图。

2024年3月29日 (五) 06:38的版本

验证程序是一种特殊的微处理程序,用于披露数据某些维度的信息,以供买方参考。通常,验证程序不会披露额外的信息,这是由隐私计算技术保证的。

本文说明了典枢中各种验证程序的细节信息。


未来,典枢还将支持用户自定义验证程序。

CSV统计程序

开源地址

输入csv格式的文件,本算法将对文件的数据进行质量评估的统计,并在算法结束后将统计结果输出。统计结果包括csv的行数,列数,总缺失值数,列缺失值数量统计、行缺失值数量统计。算法将以列数最多的行为起点统计缺失值情况。

CSV统计程序运行后输出结果的结构如下所示:

{
  "rows": 58,
  "cols": 6,
  "totalNulls": 48,
  "NullProportion": 13.79,
  "col_nulls": [
    { "null_num": 6, "count": 1 },
    { "null_num": 7, "count": 1 },
    { "null_num": 8, "count": 2 },
    { "null_num": 9, "count": 1 },
    { "null_num": 10, "count": 1 }
  ],
  "row_nulls": [
    { "null_num": 0, "count": 34 },
    { "null_num": 1, "count": 16 },
    { "null_num": 2, "count": 2 },
    { "null_num": 3, "count": 1 },
    { "null_num": 4, "count": 1 },
    { "null_num": 5, "count": 3 },
    { "null_num": 6, "count": 1 }
  ]
}

输出的内容有

  • rows:csv中的总行数
  • cols:csv中的总列数
  • totalNulls:总缺失值的数量
  • NullProportion:缺失值百分比,该缺失值精确到小数点后两位。
  • col_nulls:每列中有多少个缺失行的数量统计
    • null_num:表示缺失x行
    • count:缺失x行的数据共有多少列 :若缺失x行的数量为0时(count=0),将不会输出null_num > 1000 时的统计将统一存储在null_num=1001的条目中。这两个条件对缺失列的数据统计同样适用。
  • row_nulls:每行中有多少个缺失列的数量统计
    • null_num:表示缺失x列
    • count:缺失x列的数据共有多少行

文本抽样程序

输入txt格式的文本文件,本算法将对txt文件进行质量评估,将txt文件的前中后位置上的部分内容打包输出到一个json文件中。目前的算法中,当输入txt文件后,将返回该txt内容的前150字,尾部150字以及中间300字。当txt中内容太段(目前该限制为小于1500字)时,将改为取txt的前15%,后15%以及中间30%的内容。

注:在分析中,一个“字”表示一个 英文字母/汉字/符号/操作符 等内容。

文本抽样运行后输出结果的结构如下所示:

{
  "head": "#include \"user_type.h\"\n#include \"string_process.h\"\n#include \"ypc/core_t/analyzer/data_source.h\"\n#include \"ypc/stbox/ebyte.h\"\n#include \"ypc/stbox/stx_c",
  "mid": "一个batch的所需长度\n    int start_pos = total_size / 2 - 50; // 中间的100字节的起始位置\n    int mid_batch_no = start_pos / batch_max_size; // 中间的100字节所在的batch的编号\n    \n    start_pos = start_pos % batch_max_size; // 中间的100字节的起始位置在batch中的位置\n\n    LOG(INFO) << \"Batch Num: \" << batch_num;\n    LOG(INFO) << \"Start Position:",
  "tail": " process_string(middle_100) + \"\\\"}\";\n    return result;\n  }\n\nprotected:\n  std::vector<std::shared_ptr<ypc::data_source_with_dhash>> m_datasources;\n};\n",
  "total": "3474"
}

输出的内容有:

  • head:txt文件头部150字内容
  • mid:txt文件中部300字内容
  • tail:txt文件尾部150字内容
  • total:文本文件中的总字数统计

以上例子中展示的是一个包含代码内容的txt文件,除了普通文字内容,代码中包含了更多的换行符以及引号,换行符将在结果中以''\n'的形式被输出内容中的引号为了防止json解析失败也会以'\"'的格式输出。

视频抽样程序

输入mp4格式的文件,本算法将读取mp4的内容并截取其中的数帧的画面编码成base64格式的json数据输出,输出图片不固定,在每次运行时都将随机选取图片输出,目前规定输出的内容视频总时间、三张视频截图(以Base64编码表示)以及其三张截图的截取时间,

输出形式

{
  totalDuration: // 总时长
  positions: [
    {
      duration:  // 时间点
      picture:  // 截取图片
    },
    {
      duration:  
      picture:  
    },
    {
      duration:  
      picture:  
    }
  ] 
}
  • totalDuration:该字段中包含了所有视频截图的编码数据,每一条数据都代表一张视频截图的base64编码,可通过解码获取原图。
  • positions
    • duration:截取图片对应时间(以秒为单位表示)。
    • picture:该字段中包含了所有视频截图的编码数据,每一条数据都代表一张视频截图的base64编码,可通过解码获取原图。