一种基于TOKEN匹配的中文数据清洗方法
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
字符串比较算法是异常数据检测的重要方法,其中主要有 编辑距离,如 SmithWaterman[2]、Jaro[3];标记的相似度,如 Jac card、TFDF[4]等。数据清洗的研究大多都集中在国外,而这些 关于数据清洗的算法主要是针对西文表示的数据,由于中文和 西文之间存在诸多差异,上述数据清洗算法不一定完全适用于 中文表示的数据。中文数据清洗在理论研究上的不足,也使得 在市场上几乎看不到有关中文数据清洗的软件工具。本文提出 了一种基于 Token匹配的中文数据清洗方法,重点对中文数据 中的拼写错误和缩写识别问题进行了研究,并在实际项目中得 到了应用,取得了较好的效果。
2.3 异常数据处理
数据清洗引擎是清洗操作的调度中心和执行环境,也是数 据清洗系统中最核心的部分。在完成异常数据检测之后,数据 清洗引擎通过 Token匹配结果来判断异常数据的类型并对其作 相应的处理。
对异常数据进行处理时,按照处理方式可以分为:自动处理 和人工处理。数据清洗引擎根据异常数据的错误类型执行 T SQL语句自动处理。对于无法确定错误类型的异常数据,系统 将抛出此类异常数据进行人工处理。
2009年
∑ Match(A,B) =
1 A
|A|
score(Ai,Bj)
i=1
(1)
定义 4 如果 Match(A,B)=1,且︱A︱ =︱B︱,则称字符
串 A、B完全匹配;如果 Match(A,B)=1,且 0<︱A︱ <︱B︱,
则称 A是 B的缩写匹配。
1.2 算法思想
Token匹配算法主 要 用 于 异 常 数 据 检 测 和 处 理,将 一 条 记 录中的某个拼音字段中的字符串当作一个对象,与多个字符串 进行匹配,从中查找是否存在可以完全匹配的记录。在每一个 字符串匹配中,运用递归的思想,从上到下,计算字符串中每一 个 Token的匹配度,从而得到两个字符串的匹配度,最后根据匹 配度来判断两个字符串是否匹配及匹配类型。算法的具体流程 如下:
Step4比较两个字符串(A、B)中 Token的个数,根据条件判 断匹配类型。
Step5如果两个字符串(A、B)能够返回匹配类型,则停止匹 配,并替换找到匹配的 字 符 串。如 果 两 个 字 符 串 (A、B)无 法 返 回匹配类型,则选取其它字符串(C、D、E…)与字符串 A进行匹 配,判断匹配类型。
第 11期
刘嘉等:一种基于 Token匹配的中文数据清洗方法
45
3 数据清洗实例与结果分析
确结果如表 4所示。
表 4 输出的“干净”数据
3.1 实 例
本文提出的基于 Token匹配的中文数据清洗方法,在某农 村饮水工程信息 管 理 系 统 中 得 以 应 用,以 该 系 统 中 的 “规 划 管 理”数据表为例(为了保密,将部分真实数据替换),来说明其具 体的清洗过程。
为了便于描述,只取“规划管理”表和“标准数据”表中的部 分记录,并隐藏了部分无关的字段。
(1)目标数据源为 EXCEL文件,表 1为部分数据。首先对 目标数据源进行规格化,根据业务需求可知,在建设地点和审批 单位两字段中可能存在脏数据,故将这两个字段中的中文字符全 部转换为拼音并保存到新字段中,每个汉字对应的拼音用空格分 隔,规格化后数据保存在数据库中的 plan表中,具体如表 2所示。
第 26卷第 11期 2009年 11月
计算机应用与软件 ComputerApplicationsandSoftware
Vol26 No.11 Nov.2009
一种基于 Token匹配的中文数据清洗方法
刘 嘉 张 瞡 李军怀
(西安理工大学计算机科学与工程学院 陕西 西安 710048)
摘 要 拼写错误和缩写问题是中文数据清洗的核心问题,目前相关研究还很欠缺。提出了一种基于 Token匹配的中文数据清 洗方法,将中文字符串转换成拼音字符串,采用 Token匹配算法检测处理中文数据中的“脏数据”。实验表明,提出的方法能够有效 地提高数据的准确度,大大减少了人工工作量。 关键词 中文数据清洗 Token 拼写错误 缩写
图 1 数据清洗原理图
2.1 数据规格化
首先目标数据源通过 OLEDB导入到应用程序中,利用检
查类(check.cs)对数据源进行基本格式检查,消除冗余属性,从 而缩小数据搜索空间以提高清洗速度。然后调用拼音转换类 (ChineseToPy.cs)对于需要清洗的含有中文字符的字段进行转 换,将字段中的中文字符转换成内码,再通过内码和拼音的对照 表来查找,在完成转换之后每个汉字对应的拼音之间以空格隔 开,并将转换结果保存到新字段中。完成全部规格化操作之后, 将数据保存到与其映射的数据库的表中。
收稿日期:2008-06-27。国家高技术研究发 展 计 划 (863)课 题 (2007AA010305);陕西省科 技 计 划 项 目 (222)。刘嘉,硕士生,主研领域:信息系统集 成及数据挖掘。
44
计算机应用与软件
2.2 异常数据检测
对规格化数据进行异常数据检测主要采用 “对比、排除”的 思想,执行存储过程对数据进行批量异常检测,根据标识位字段 mark的值,将表中的记录进行区分,确定异常数据处理的范围。 具体过程为:以含有中文字符的某些字段完全匹配(相等)为条 件,存储规格化数据的表与标准数据表进行连接操作(join),筛 选出不能完全匹配的数据,即异常数据。对于可以完全匹配的 记录,更新其标识位字段 mark为 0;对于不能完全匹配的记录, 更新其标识位字段 mark的值为 1,并将这些记录转入数据清洗 引擎,等待处理。
文献[5]中介绍了 Token匹配算法,在一个字符串中,可以 包含多种定界符,如空格、逗号、@等,不同的定界符具有不同的 优先级。首先按照优先级最高的定界符划分字符串,形成最上 层的子串;然后对于划分出的子串,采用优先级次之的定界符来 划分。重复上述过程,直到子字符串无法再划分为止。字符串 以这种方式 划 分 形 成 一 组 子 字 符 串,称 这 些 子 字 符 串 为 标 记 (token)。
(2)缩写识别和 处 理 对 余 下 的 “mark=1”的 记 录,继 续 进行 Token匹配判断。如果发现可以缩写匹配的字符串,则表 明此条记录中的拼音字段是标准数据表中对应的拼音字段的真 子集,即两者是缩写关系。随后对此条记录进行如下更新操作, “记录中拼音字段对应的原字段 =标准数据表中匹配记录的拼 音对应字段 ”、“mark=3”。对 于 未 能 找 到 缩 写 匹 配 的 记 录,更 新其标识位字段 mark的值为 9,并将此类异常数据抛出进行人 工处理。
ANAPPROACH FORCHINESEDATACLEANING BASEDONTOKEN
LiuJia ZhangJing LiJunhuai
(SchoolofComputerScienceandEngineering,Xi’anUniversityofTechnology,Xi’an710048,Shaanxi,China)
Step6重复上述步骤,遍历剩下的字符串,直到找到可以匹 配的字符串为止。如果遍历完成,仍然没有找到可以匹配的字 符串,则返回一个值标识异常。
2 中文数据清洗方法的实现
针对中文数据中存在的问题,本文设计并初步实现了一种 基于 Token匹配的中文数据清洗系统,清洗原理如图 1所示。 在进行中文数据清洗时,主要考虑两个问题:一是拼写错误;二 是缩写。在消除拼写错误方面,产生错误的原因主要是同音字、 近音字或字型相似的字。中文的不同缩写习惯造成了缩写的多 样性和不稳定性,给缩写的处理带来了较大的困难。该系统处 理这些异常数据的具体方法描述如下。
0 引 言
1 Token匹配算法
随着信息化的不断发展和互联网的广泛应用,政府和企业 产生的大量数据需要进行有效管理,另一方面,大量的历史数据 和新产生的数据中存在很多“脏数据”。如果不能对这些“脏数 据”进行有效处理,可能造成决策失误、工作效率的降低及其他 一些问题。
目前国外公司开发出一些数据清洗的工具,数据清洗的重 点则是异常数据检测,主要有下列方法[1]:(1)采用统计学的方 法来检测数值型属性,计算属性值的均值和标准差,考虑每一个 属性的置信区间来识别异常属性和记录;(2)采用基于距离的 聚类的方法来识别异常记录;(3)采用基于模式的方法来发现 不符合数据集中现存模式的异常记录;(4)采用关联规则的方 法来发现数据集中不符合具有高置信度和支持度的规则的异常 数据。
2.4 输 出
为了保证“干净”的数据与原始数据源在结构上的一致性, 将正确的数据和经过清洗的数据合并,剔除添加的拼音字段,结 果集以原数据格式输出。在清洗过程中对异常数据进行的全部 操作的详细信息(异常数据的原始值和位置、错误类型、操作后 的值)都记录在 日 志 文 件 中,用 户 可 以 根 据 其 中 的 信 息 定 位 修 改后的数据,验证这些数据的正确性。在完成上述操作后,将日 志文件与结果集同步输出。
(1)拼写错误 (错别字)识别和处理 对于“mark=1”的 记录,根据规格化操作后添加的拼音字段与标准数据表中的相 应的拼音字段的字符串匹配结果逐行进行判断。如果找到完全 匹配的字符串,则说明记录中的拼音字段对应的原字段中存在 错别字,标准数据表中所映射的字段值即为原字段的真实值;随 后对此条记录进 行 如 下 更 新 操 作,“记 录 中 拼 音 字 段 对 应 的 原 字段 =标准数据表中匹配记录的拼音对应字段”、“mark=2”。 如果未能找到完全匹配的字符串,则进入缩写处理阶段。
Abstract SpellingerrorsandabbreviationsarethecoreissuesinChinesedatacleaning,butatpresenttherelatedresearchisstillmuchto bedesired.ThispaperpresentsanapproachforChinesedatacleaningbasedonTokenmatch.FirstlyitconvertstheChinesecharacterstrings intotheChinesePinyincharacterstrings,andthendetectsanddealswiththe“dirtyones”inChinesedatawithTokenmatchalgorithm.Theex perimentresultsindicatethatthemethodcanimprovetheaccuracyofthedataeffectively,andreducemanualworkloadagreatdeal. Keywords Chinesedataclean Token Spellingerrors Abbreviation
Step1利用字符串 A中的定界符来划分 Token,并计算字符 串 A中 Token的个数︱A︱。
Step2判断两个 字 符 串 (A、B)是 否 完 全 相 等,如 果 完 全 相 等,则是完全匹配;如果不是,则进行 Token匹配度判断。
Step3计算字符串 A中每 一 个 Token的 匹 配 度 Score(Ai, Bj),根据公式(1)得到两个字符串(A、B)的匹配度 Match(A,B)。
1.1 基本概念
下面给出算法中用到的定义。 定义 1 设 A、B分别为两个不同字符串,字符串 A的 Token 集合为{A1,A2,…,An};字符串 B的 Token集合为{B1,B2,…, Bn};︱A︱、︱B︱表示 A、B的划分的 Token个数;Ai、Bj(1≤ i ≤︱A︱,1≤j≤︱B︱)则表示 A、B的划分某个子字符串。 定义 2 设 A、B分别为两个不同字符串,Score(Ai,Bj)表示 为 Ai、Bj两个子字符串的 Token匹配度。如果两个子字符串相 等或者完全匹配,则 Score(Ai,Bj)=1;否则 Score(Ai,Bj)=0。 定义 3 设 A、B分别为两个不同字符串,两个字符串的匹 配度由其子字符串的 Token匹配度的平均值决定,即:
2.3 异常数据处理
数据清洗引擎是清洗操作的调度中心和执行环境,也是数 据清洗系统中最核心的部分。在完成异常数据检测之后,数据 清洗引擎通过 Token匹配结果来判断异常数据的类型并对其作 相应的处理。
对异常数据进行处理时,按照处理方式可以分为:自动处理 和人工处理。数据清洗引擎根据异常数据的错误类型执行 T SQL语句自动处理。对于无法确定错误类型的异常数据,系统 将抛出此类异常数据进行人工处理。
2009年
∑ Match(A,B) =
1 A
|A|
score(Ai,Bj)
i=1
(1)
定义 4 如果 Match(A,B)=1,且︱A︱ =︱B︱,则称字符
串 A、B完全匹配;如果 Match(A,B)=1,且 0<︱A︱ <︱B︱,
则称 A是 B的缩写匹配。
1.2 算法思想
Token匹配算法主 要 用 于 异 常 数 据 检 测 和 处 理,将 一 条 记 录中的某个拼音字段中的字符串当作一个对象,与多个字符串 进行匹配,从中查找是否存在可以完全匹配的记录。在每一个 字符串匹配中,运用递归的思想,从上到下,计算字符串中每一 个 Token的匹配度,从而得到两个字符串的匹配度,最后根据匹 配度来判断两个字符串是否匹配及匹配类型。算法的具体流程 如下:
Step4比较两个字符串(A、B)中 Token的个数,根据条件判 断匹配类型。
Step5如果两个字符串(A、B)能够返回匹配类型,则停止匹 配,并替换找到匹配的 字 符 串。如 果 两 个 字 符 串 (A、B)无 法 返 回匹配类型,则选取其它字符串(C、D、E…)与字符串 A进行匹 配,判断匹配类型。
第 11期
刘嘉等:一种基于 Token匹配的中文数据清洗方法
45
3 数据清洗实例与结果分析
确结果如表 4所示。
表 4 输出的“干净”数据
3.1 实 例
本文提出的基于 Token匹配的中文数据清洗方法,在某农 村饮水工程信息 管 理 系 统 中 得 以 应 用,以 该 系 统 中 的 “规 划 管 理”数据表为例(为了保密,将部分真实数据替换),来说明其具 体的清洗过程。
为了便于描述,只取“规划管理”表和“标准数据”表中的部 分记录,并隐藏了部分无关的字段。
(1)目标数据源为 EXCEL文件,表 1为部分数据。首先对 目标数据源进行规格化,根据业务需求可知,在建设地点和审批 单位两字段中可能存在脏数据,故将这两个字段中的中文字符全 部转换为拼音并保存到新字段中,每个汉字对应的拼音用空格分 隔,规格化后数据保存在数据库中的 plan表中,具体如表 2所示。
第 26卷第 11期 2009年 11月
计算机应用与软件 ComputerApplicationsandSoftware
Vol26 No.11 Nov.2009
一种基于 Token匹配的中文数据清洗方法
刘 嘉 张 瞡 李军怀
(西安理工大学计算机科学与工程学院 陕西 西安 710048)
摘 要 拼写错误和缩写问题是中文数据清洗的核心问题,目前相关研究还很欠缺。提出了一种基于 Token匹配的中文数据清 洗方法,将中文字符串转换成拼音字符串,采用 Token匹配算法检测处理中文数据中的“脏数据”。实验表明,提出的方法能够有效 地提高数据的准确度,大大减少了人工工作量。 关键词 中文数据清洗 Token 拼写错误 缩写
图 1 数据清洗原理图
2.1 数据规格化
首先目标数据源通过 OLEDB导入到应用程序中,利用检
查类(check.cs)对数据源进行基本格式检查,消除冗余属性,从 而缩小数据搜索空间以提高清洗速度。然后调用拼音转换类 (ChineseToPy.cs)对于需要清洗的含有中文字符的字段进行转 换,将字段中的中文字符转换成内码,再通过内码和拼音的对照 表来查找,在完成转换之后每个汉字对应的拼音之间以空格隔 开,并将转换结果保存到新字段中。完成全部规格化操作之后, 将数据保存到与其映射的数据库的表中。
收稿日期:2008-06-27。国家高技术研究发 展 计 划 (863)课 题 (2007AA010305);陕西省科 技 计 划 项 目 (222)。刘嘉,硕士生,主研领域:信息系统集 成及数据挖掘。
44
计算机应用与软件
2.2 异常数据检测
对规格化数据进行异常数据检测主要采用 “对比、排除”的 思想,执行存储过程对数据进行批量异常检测,根据标识位字段 mark的值,将表中的记录进行区分,确定异常数据处理的范围。 具体过程为:以含有中文字符的某些字段完全匹配(相等)为条 件,存储规格化数据的表与标准数据表进行连接操作(join),筛 选出不能完全匹配的数据,即异常数据。对于可以完全匹配的 记录,更新其标识位字段 mark为 0;对于不能完全匹配的记录, 更新其标识位字段 mark的值为 1,并将这些记录转入数据清洗 引擎,等待处理。
文献[5]中介绍了 Token匹配算法,在一个字符串中,可以 包含多种定界符,如空格、逗号、@等,不同的定界符具有不同的 优先级。首先按照优先级最高的定界符划分字符串,形成最上 层的子串;然后对于划分出的子串,采用优先级次之的定界符来 划分。重复上述过程,直到子字符串无法再划分为止。字符串 以这种方式 划 分 形 成 一 组 子 字 符 串,称 这 些 子 字 符 串 为 标 记 (token)。
(2)缩写识别和 处 理 对 余 下 的 “mark=1”的 记 录,继 续 进行 Token匹配判断。如果发现可以缩写匹配的字符串,则表 明此条记录中的拼音字段是标准数据表中对应的拼音字段的真 子集,即两者是缩写关系。随后对此条记录进行如下更新操作, “记录中拼音字段对应的原字段 =标准数据表中匹配记录的拼 音对应字段 ”、“mark=3”。对 于 未 能 找 到 缩 写 匹 配 的 记 录,更 新其标识位字段 mark的值为 9,并将此类异常数据抛出进行人 工处理。
ANAPPROACH FORCHINESEDATACLEANING BASEDONTOKEN
LiuJia ZhangJing LiJunhuai
(SchoolofComputerScienceandEngineering,Xi’anUniversityofTechnology,Xi’an710048,Shaanxi,China)
Step6重复上述步骤,遍历剩下的字符串,直到找到可以匹 配的字符串为止。如果遍历完成,仍然没有找到可以匹配的字 符串,则返回一个值标识异常。
2 中文数据清洗方法的实现
针对中文数据中存在的问题,本文设计并初步实现了一种 基于 Token匹配的中文数据清洗系统,清洗原理如图 1所示。 在进行中文数据清洗时,主要考虑两个问题:一是拼写错误;二 是缩写。在消除拼写错误方面,产生错误的原因主要是同音字、 近音字或字型相似的字。中文的不同缩写习惯造成了缩写的多 样性和不稳定性,给缩写的处理带来了较大的困难。该系统处 理这些异常数据的具体方法描述如下。
0 引 言
1 Token匹配算法
随着信息化的不断发展和互联网的广泛应用,政府和企业 产生的大量数据需要进行有效管理,另一方面,大量的历史数据 和新产生的数据中存在很多“脏数据”。如果不能对这些“脏数 据”进行有效处理,可能造成决策失误、工作效率的降低及其他 一些问题。
目前国外公司开发出一些数据清洗的工具,数据清洗的重 点则是异常数据检测,主要有下列方法[1]:(1)采用统计学的方 法来检测数值型属性,计算属性值的均值和标准差,考虑每一个 属性的置信区间来识别异常属性和记录;(2)采用基于距离的 聚类的方法来识别异常记录;(3)采用基于模式的方法来发现 不符合数据集中现存模式的异常记录;(4)采用关联规则的方 法来发现数据集中不符合具有高置信度和支持度的规则的异常 数据。
2.4 输 出
为了保证“干净”的数据与原始数据源在结构上的一致性, 将正确的数据和经过清洗的数据合并,剔除添加的拼音字段,结 果集以原数据格式输出。在清洗过程中对异常数据进行的全部 操作的详细信息(异常数据的原始值和位置、错误类型、操作后 的值)都记录在 日 志 文 件 中,用 户 可 以 根 据 其 中 的 信 息 定 位 修 改后的数据,验证这些数据的正确性。在完成上述操作后,将日 志文件与结果集同步输出。
(1)拼写错误 (错别字)识别和处理 对于“mark=1”的 记录,根据规格化操作后添加的拼音字段与标准数据表中的相 应的拼音字段的字符串匹配结果逐行进行判断。如果找到完全 匹配的字符串,则说明记录中的拼音字段对应的原字段中存在 错别字,标准数据表中所映射的字段值即为原字段的真实值;随 后对此条记录进 行 如 下 更 新 操 作,“记 录 中 拼 音 字 段 对 应 的 原 字段 =标准数据表中匹配记录的拼音对应字段”、“mark=2”。 如果未能找到完全匹配的字符串,则进入缩写处理阶段。
Abstract SpellingerrorsandabbreviationsarethecoreissuesinChinesedatacleaning,butatpresenttherelatedresearchisstillmuchto bedesired.ThispaperpresentsanapproachforChinesedatacleaningbasedonTokenmatch.FirstlyitconvertstheChinesecharacterstrings intotheChinesePinyincharacterstrings,andthendetectsanddealswiththe“dirtyones”inChinesedatawithTokenmatchalgorithm.Theex perimentresultsindicatethatthemethodcanimprovetheaccuracyofthedataeffectively,andreducemanualworkloadagreatdeal. Keywords Chinesedataclean Token Spellingerrors Abbreviation
Step1利用字符串 A中的定界符来划分 Token,并计算字符 串 A中 Token的个数︱A︱。
Step2判断两个 字 符 串 (A、B)是 否 完 全 相 等,如 果 完 全 相 等,则是完全匹配;如果不是,则进行 Token匹配度判断。
Step3计算字符串 A中每 一 个 Token的 匹 配 度 Score(Ai, Bj),根据公式(1)得到两个字符串(A、B)的匹配度 Match(A,B)。
1.1 基本概念
下面给出算法中用到的定义。 定义 1 设 A、B分别为两个不同字符串,字符串 A的 Token 集合为{A1,A2,…,An};字符串 B的 Token集合为{B1,B2,…, Bn};︱A︱、︱B︱表示 A、B的划分的 Token个数;Ai、Bj(1≤ i ≤︱A︱,1≤j≤︱B︱)则表示 A、B的划分某个子字符串。 定义 2 设 A、B分别为两个不同字符串,Score(Ai,Bj)表示 为 Ai、Bj两个子字符串的 Token匹配度。如果两个子字符串相 等或者完全匹配,则 Score(Ai,Bj)=1;否则 Score(Ai,Bj)=0。 定义 3 设 A、B分别为两个不同字符串,两个字符串的匹 配度由其子字符串的 Token匹配度的平均值决定,即: