分词工具(一):分词工具概述

对数据标准化工作很有用的单词提取工具的概述,尤其是对于创建标准候选单词。

一、分词工具概述

1.1.为什么我们开发词提取工具

在数据标准化的初始任务中,最困难的任务是收集尽可能多的候选词并迅速注册为标准词。数据标准检查工具(参见: 数据标准检查工具_1.概述) 可用于提取标准候选词,但存在以下困难。

  • 如果数据库表、列注释数据中含有较多的特殊字符(#、$、%、.、\等符号、行分隔符等),去除或细化需要相当大的努力。
  • 很难知道词的出现频率,因此很难确定是只注册单词,只注册复合词,还是同时注册单词和复合词。
  • 如果在确定标准词后又识别出复合词,影响到已经登记的标准词的物理名称,则标准命名规则的例外情况会给管理带来困难。

单词提取工具的开发就是为了缓解其中的一些困难。特别是,我们希望它对以下情况有所帮助。

  • 如果没有当前的数据标准词典或者即使标准词的数量很少
  • 你的工作很独特,没有适合参考的数据标准字典。
  • 当数据库表和列注释过大,手动抽取词耗费大量时间时
  • 或者反过来,当数据库表和列注释内容较少时,不宜抽取标准词,宜从工作手册等文件中抽取。
  • 另外,如果需要从文档中提取词和频率

1.2.词提取工具概念

词提取工具是接收各类文件作为输入,使用自然语言处理词素分析器提取词和复合词,输出频率和来源(文件名、表名、列名等)作为Excel文件。

Mecab 是一种韩语自然语言处理 (NLP) 词素分析器,在 Python v3.8 中使用和开发。 Kkma、Komoran、Hannanum、Okt(以前称为 Twitter)和 Mecab 是韩国自然语言处理词素分析器中的代表性库。其中,Mecab 因其性能最好而被选中。

自然语言处理语素分析器的性能比较可以在下面的链接中找到。

参考: https://konlpy.org/ko/latest/morph/#comparison-between-pos-tagging-classes

한국어 형태소 분석기 성능 비교 (출처: 참조 Link에서 발췌)
韩国词素分析器的性能比较(来源:参考链接摘录)

根据输入字符数的增加,执行时间可以总结如下。 (从左到右执行时间减少,性能提高)

Kkma > Komoran > Hannanum > Okt (推特) > Mecab

作为参考,上面的链接是 KoNLPy 包这是开发它的人的网站。 KoNLPy是一个基于 Python 的包,它将多个语素分析器捆绑在一起。

KoNLPy: https://konlpy.org/ko/latest/

1.3.单词提取器的工作原理

简要看一下输入数据、处理逻辑和输出数据。

1.3.1.词提取工具输入材料

可以通过以下两种方式之一或两种方式指定输入数据。

  1. 文档:MS Word、PowerPoint、文本文件
    • 在撰写本文时(2021-08-29),尚不支持 HWP 和 PDF 格式。
  2. 数据库表,列注释来源:Excel 文件
    • 表注释数据项:Database、Schema、Table Name、Table Comment
    • 列注释数据项:Database, Schema, Table Name, Table Comment, Column Name, Column Comment

▼ 表格注释数据示例如下。

数据库图式表名表注释
DB1所有者1计算机管理代码行政代码
DB1所有者1COMTCADMINIST代码接收日志管理代码接收日志
DB1所有者1COMTCCMNCL代码常用分类码
DB1所有者1COMTCCMN代码公共代码
DB1所有者1COMTCCMN详细代码常用明细代码
表注释数据示例

▼ 栏目评论数据示例如下。这是上表列表中COMTCADMINISTCODE(管理代码)的列列表。

数据库图式表名列名专栏评论
DB1所有者1计算机管理代码ADMINIST_ZONE_SE行政区划
DB1所有者1计算机管理代码ADMINIST_ZONE_CODE行政区划代码
DB1所有者1计算机管理代码使用_AT是否使用
DB1所有者1计算机管理代码ADMINIST_ZONE_NM行政区名
DB1所有者1计算机管理代码UPPER_ADMINIST_ZONE_CODE上行政区代码
DB1所有者1计算机管理代码创建_DE创建日期
DB1所有者1计算机管理代码ABL_DE废除日期
DB1所有者1计算机管理代码FRST_REGIST_PNTTM首次注册
DB1所有者1计算机管理代码FRST_REGISTER_ID初始注册人 ID
DB1所有者1计算机管理代码LAST_UPDT_PNTTM最后修改时间
DB1所有者1计算机管理代码LAST_UPDUSR_ID最后修改 ID
列注释数据示例

* 上面的示例数据是使用电子政务标准框架v3.8的“公共组件表配置信息”页面中的表和列注释脚本创建的。

(资源: https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:com:v3.8:init_table)

1.3.2.分词工具处理逻辑

整个处理逻辑简单总结如下。

  1. 通过按顺序打开输入数据来提取文本(逐行、表格/列)
  2. 使用自然语言词素分析器包Mecab提取1个名词、n个名词、前缀+n个名词、n个名词+后缀、前缀+n个名词+后缀形式的候选词
  3. 查找从整个输入数据中提取的单词的频率,并将单词提取结果保存为输出文件
  4. 使用单词列表和频率创建单词云并将其保存为 png 文件
  5. 输出总所需时间并退出

上述过程的简化图如下。

단어 추출 도구 처리 과정
分词工具流程

1.3.3.词提取工具输出数据

输出数据是处理输入数据的结果,是一个 Excel 文件和一个词云形式的图像 (png) 文件。

Excel 文件由两张表组成。以下是以DB Table 和Column 注释数据作为输入的示例。

▼ “单词提取结果示例”表

单词文件名文件类型文本D B图式桌子柱子
1行政表格,列评论.xlsx柱子0行政区划DB1所有者1计算机管理代码ADMINIST_ZONE_SE
2区域表格,列评论.xlsx柱子0行政区划DB1所有者1计算机管理代码ADMINIST_ZONE_SE
3分配表格,列评论.xlsx柱子0行政区划DB1所有者1计算机管理代码ADMINIST_ZONE_SE
4行政区划[复合]表格,列评论.xlsx柱子0行政区划DB1所有者1计算机管理代码ADMINIST_ZONE_SE
5行政表格,列评论.xlsx柱子0行政区划代码DB1所有者1计算机管理代码ADMINIST_ZONE_CODE
6区域表格,列评论.xlsx柱子0行政区划代码DB1所有者1计算机管理代码ADMINIST_ZONE_CODE
7代码表格,列评论.xlsx柱子0行政区划代码DB1所有者1计算机管理代码ADMINIST_ZONE_CODE
8行政区号[复合]表格,列评论.xlsx柱子0行政区划代码DB1所有者1计算机管理代码ADMINIST_ZONE_CODE
9使用表格,列评论.xlsx柱子0是否使用DB1所有者1计算机管理代码使用_AT
10无论表格,列评论.xlsx柱子0是否使用DB1所有者1计算机管理代码使用_AT
11是否使用[复合词]表格,列评论.xlsx柱子0是否使用DB1所有者1计算机管理代码使用_AT
12地区表格,列评论.xlsx柱子0行政区名DB1所有者1计算机管理代码ADMINIST_ZONE_NM
13站名表格,列评论.xlsx柱子0行政区名DB1所有者1计算机管理代码ADMINIST_ZONE_NM
14行政区名[复合]表格,列评论.xlsx柱子0行政区名DB1所有者1计算机管理代码ADMINIST_ZONE_NM
“单词提取结果示例”表
  • “文本”列:这是从输入数据中提取的原始值,在本例中对应表、列注释。
  • “Word”列:使用 Mecab 从文本中提取的候选词。对于复合词,指定“[复合词]”作为后缀。
    • 第12行“行政区”、第13行“站名”是从麦卡客的“行政名称”中提取出来的词。
    • 可以看出准确率不是100%,因为提取的和实际使用的词不一样。

▼ “词频”表格示例

单词频率来源
代码110DB1.OWNER1.COMTCADMINISTCODE.ADMINIST_ZONE_CODE(行政区域代码)
DB1.OWNER1.COMTCADMINISTCODERECPTNLOG.CHANGE_SE_CODE(更改标识码)
DB1.OWNER1.COMTCADMINISTCODERECPTNLOG.CTPRVN_CODE(尝试代码)
……
数字103DB1.OWNER1.COMTCADMINISTCODERECPTNLOG.OPERT_SN(作业流水号)
DB1.OWNER1.COMTCZIP.ZIP(邮政编码)
DB1.OWNER1.COMTHCONFMHISTORY.CONFM_NO(批准号)
……
人数88DB1.OWNER1.COMTNADBKMANAGE.ADBK_NM(地址簿名称)
DB1.OWNER1.COMTCCMMNCLCODE.CL_CODE_NM(分类代号)
DB1.OWNER1.COMTCCMNDETAILCODE.CODE_NM(代号)
……
85DB1.OWNER1.COMTCADMINISTCODE.CREAT_DE(创建日期)
DB1.OWNER1.COMTCADMINISTCODE.ABL_DE(停用日期)
DB1.OWNER1.COMTCADMINISTCODERECPTNLOG.OCCRRNC_DE(发生日期)
……
信息77DB1.OWNER1.COMTHDBMNTRNGLOGINFO.LOG_INFO(日志信息)
DB1.OWNER1.COMTNBAKUPRESULT.ERROR_INFO(错误信息)
DB1.OWNER1.COMTNINDVDLINFOPOLICY.INDVDL_INFO_POLICY_ID(隐私政策 ID)
……
无论75DB1.OWNER1.COMTCADMINISTCODE.USE_AT(是否使用)
DB1.OWNER1.COMTNANNVRSRYMANAGE.REPTIT_AT(是否重复)
DB1.OWNER1.COMTNBANER.REFLCT_AT(是否反射)
……
“词频”表的示例
  • “Word”列:这是从“Word Extraction Result”表的“Word”列中去除重复项得到的字符串值。该值是要注册为标准词的候选值。
  • “Freq”列:这是频率计数,表示该词被使用了多少次。结果列表按从这些高频词到低频词的相反顺序排序。
  • “出处”栏:表示词的出处。最多显示 10 个来源。
    • 如果源是Table,则格式为:DB.Schema.TableName(Table comment)
    • 如果源是Column,则格式为:DB.Schema.TableName.ColumnName(Column comment)
    • 如果来源是文件格式:文件名:页码:文本

提取词频生成的词云图示例如下。高频词以大号显示。

단어 추출 결과 Word cloud
词提取结果词云

分词工具是使用Python开发的工具,在执行前需要安装Python和必要的包等环境配置过程。接下来,我们来看一下环境配置过程。


<< 相关文章列表 >>

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

zh_CN简体中文