前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >偶述 Wolfram 中文分词算法

偶述 Wolfram 中文分词算法

作者头像
WolframChina
发布2018-08-16 10:44:46
9830
发布2018-08-16 10:44:46
举报
文章被收录于专栏:WOLFRAMWOLFRAM

吴飞

从 2000 年开始学习和使用 Mathematica,《Mathematica 演示项目笔记》作者,发表Wolfram Demonstrations Projects 50 余篇。

引言:

助人间才子佳人兴,轻歌曼舞,星移斗横。 ——《群音类选 玉如意记 赏月登仙》

概念

一国的创新能力应当看该国语言是否占有某领域的统治地位或极大的影响力。如十八世纪,法国成为启蒙运动的中心,法语成为欧美上流社会和知识分子的国际语言,更是外交和法律的统治语言。又如十九世纪,德国成为世界科学和研究的中心,当时的一流科技文献中德语占 70% 以上。二十世纪至今的英美语系取而代之成为当代的国际通用语言,尤其是电子、计算机和信息化产业,发源地就是美国硅谷。

在西方语言,如英语的行文中,单词之间是以空格作为自然分界符。而中文只有字、句和段能通过明显的分界符来划界,唯独词没有一个形式上的分界符。虽然英文在部分短语的划分问题也存在同样问题,不过在词这一层上,中文确实要比英文复杂得多、困难得多。

古代汉语中,除了人名、地名等,词通常就是单个汉字,所以当时没有分词书写的必要。而现代汉语中双字或多字词居多,一个字不再等同于一个词。现代汉语的基本表达单元也不再是单个的字了,而是以词作为最小单元,且以双字或者多字词居多。

中文分词是指将现代汉语中的句子切分成单独的表达含义的字或词。或者说,分词就是将连续的汉字序列按照一定的规范重新组合成字或词序列的过程。如下以一个顺口溜举例,如果没有进行分词,未经练习的人恐怕很难说得利索。经过分词后,分词符号为 | ,就变得比较容易理解和区分了。

原始语句: 黑化肥发灰会挥发;灰化肥挥发会发黑。

分词结果: 黑化肥 | 发灰 | 会 | 挥发;灰化肥 | 挥发 | 会 | 发黑。

但由于人们认识水平的不同,对词和短语的边界很难去区分。例如:“对制造和销售假冒商品给予严厉处罚”,“制造和销售假冒商品” 本身是一个词还是一个短语,不同的人会有不同的标准。即使是完全相同的文本和句子,不同的分词会产生完全不同的语义,并给读者造成不同的理解,存在歧义。

例如:| 羽毛球拍卖完了 |,可以切分成 | 羽毛 | 球拍 | 卖完了 |、也可切分成 | 羽毛球 | 拍卖 | 完了 |,如果没有上下文或其他的补充,恐怕谁也不能断言 | 拍卖 |在这里算不算一个词。

算法简述

对于一句话,人可以通过自己的知识和智力来明白哪些是词,哪些不是词,但如何让计算机也能理解并进行处理,这样的过程就是中文分词算法。分词算法是自然语言处理和文本挖掘的基础,中文分词算法指在输入一段中文字符串后,通过计算机自动识别语句中所应包含的字或词,最终能成功地输出该段语句所对应的分词结果,该分词结果经一步为语句和语义的识别奠定基础。

现有的中文分词算法可归纳为如下策略:首先基于公知的中文词典,先将常用的词在计算机中进行建档,随后将待处理的文本以字符串的方式同词典进行匹配和比较,若在词典中能找到某一对应的字符串,则成功匹配或识别出一个词。

对于较难鉴定的词,则可根据不同的权重函数或文本中词出现的频率进行评估,最终通过评分,计算机得出结论,并认为已识别出了语句中的字或词。更先进的算法还可包含同义词和反义词的语义评估,以进一步提高分词和识别的正确率。常用的中文分词算法举例如下:

  • 正向最大匹配算法:Maximum Matching
  • 逆向最大匹配算法:Reverse Maximum Matching
  • 正向最小匹配算法:Minimum Matching
  • 逆向最小匹配算法:Reverse Minimum Matching
  • 双向最大匹配算法:Bidirectional Maximum Matching
  • 双向最小匹配算法:Bidirectional Minimum Matching
  • 双向最大最小匹配算法:Bidirectional Maximum Minimum Matching
  • 全切分算法:Full Segmentation
  • 最少词计数算法:Minimal Word Count
  • 最大多元计数算法:Max N-gram Count
  • 最大概率分词算法:Max Probability Value

方法一:轻歌曼舞

Jlink 调用 Java Class

轻:安装分词组件

调用 JLink 安装包,并设置和查阅功能项。

“Java 分布式中文分词组件 - word 分词” 是由杨尚川在 Github 开发一个“轻”量级中文分词开源工具,获得较多业内人士和爱好者的认可和支持。

项目简介:https://github.com/ysc/word

下载链接:https://pan.baidu.com/s/1dDziDFz#list/path=%2F

歌:创建 Java Class

载入 Java Class 中文分词 wordSegmenter。分词英语叫 Segment 就是分割,同音字通假一下,就是“歌”了。

创建新的 JavaNew 中文分词,并将它赋值为 JavaObject。

可查看 Java 静态变量值

曼:调用Java Class

取一段字符串作为分词的输入。

调用 JavaObject 生成结果矩阵链表。

再将中文分词结果,从矩阵中取出来,得到输出。当然输入数据量大的话,稍微有点“慢”。

舞:应用分词结果

案例一:翻译

接下来结合 Mathematica 的一体化算法平台,就可应用中文分词结果,如中文翻译成多国语言。

案例二:词云

也可应用中文分词结果生成一种中文词云,简单地说就是要让词“舞”动起来。

更进一步,可以直接从网页上爬下一段文本作为输入字符串,然后出词云图,如世界杯的新闻词云。

方法二:星移斗转

Wolfram N-gram 方法

如下我们以Wolfram 语言,对多元计数(N-gram Count)方法展开进行详述。

星:简介多元单词概念

在文本和单词中,通常多元词汇拥有更高的信息熵,如下以《爱丽丝梦游仙境》为例。

采用多元单词计数(N-gram count)统计熵,一般情况下 4-gram 以接近整体的熵。

移:英语多元计数算法

如下以英文文本作为研究对象,采用多元单词计数方法提取分词。以高阶多元词识别优先,将高阶多元词的词频减去低阶多元词的词频,以此类推,最终获得多元词识别的结果。

调用以上函数,以爱丽丝为文本,默认情况下为 4-gram 算法。

采用词云展示一下,可以看见 “小白兔”(white rabbit)了。

斗:中文多元计数算法

如下以中文文本作为研究对象,也采用多元单词计数方法提取分词,也以高阶多元词识别优先。

主要区别在于如下两行代码,由于英语中采用空格符(white space)作为单词之间的分割符,因此将中文变通的处理一下,也采用空格符作为字与字之间的分割符,随后再塞到 WordCounts 中,此后一样处理。

横:调用中文分词算法

调用以上函数,以道德经为文本,默认情况下为 4-gram 方法。

采用词云展示一下,可以看见 “是以圣人” 等多元词了,词组终于都横出来了。

需要指出的是此处以介绍方法为目标,多元(n-gram)计数的方法是一种基于输入文本统计词频方法,它没有 “先验的经验”,如额外中文词典为支持,完全是基于输入文本的信息统计后得出分词结果,因此对于小文本和短文本识别效果是有限的。此外,在识别的精度和准确率上也低于之前 Java Class 的。毕竟方法一是 10M 的文件包,而方法二仅有 10 行代码。

总结

一国的语言是一国人的表达方式,也是该国科技和文化的载体。每一位热爱自己祖国的人都会觉得本国的母语是世界上最美的语言,并为本国的语言而感到自豪和骄傲。汉语经历五千年文明的沉淀和演化,逐步形成现在人们所使用的现代汉语。在人工智能即将来临之际,希望有更多的有志之士,将中文作为自然语言处理(NLP)的研究对象,将科技之光和文化之美,通过母语来传承和发扬。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-08-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 WOLFRAM 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
NLP 服务
NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档