中文路径_中文分词的原理、方法与工具

9cde3da9ca8777048c3191e8e53d724c.png

海德格尔说“词语破碎处,无物可存在”。中文句子不像英文那样的词与词之间有显示空格边界,使得词和词组边界模糊。

为了让计算机更容易理解文本,通常中文信息处理的第一步是中文分词。中文分词是在中文句子中的词与词之间加上边界标记。

本文首先介绍词、词组、句子、语言模型等基本概念及基本原理,比如:短语结构语法(PSG)模型、n元语法模型( n-gram)、神经网络语言模型(NNLM)、Masked Language Model(MLM);

接着介绍主要中文分词方法,比如最短路径分词、n元语法分词、由字构词分词、循环神经网络分词、Transformer分词;

然后介绍当前主要使用的分词工具,比如jieba、HanLP、FoolNLTK;

最后抛出个人认为垂直领域如何中文分词及发展趋势。

文章目录如下:

一、中文分词原理
1、中文分词
2、词、词组、句子
3、语言模型
4、中文分词发展简史
二、中文分词方法
1、最短路径分词
2、n元语法分词
3、由字构词分词
4、循环神经网络分词
5、Transformer分词
三、中文分词工具
1、jieba
2、HanLP
3、FoolNLTK
四、总结
1、规则 VS 统计 VS 深度
2、垂直领域中文分词
3、中文分词发展趋势

直接上PPT

438da8276520458620a9530da92691e5.png
中文分词的原理、方法与工具

为什么要中文分词?

ff20c1ff8ed77107a246cba9d2a90142.png
为什么要中文分词?

一、中文分词原理

29f4be8a706642188a75b4cf657484e5.png
中文分词原理的目录

1、中文分词

什么是中文分词?

给出定义:中文分词是在中文句子中的词与词之间加上边界标记。

cef8ea04f0d8469b197e77dc7fa5bdc3.png
什么是中文分词?

中文分词总的来说就两种方法:一种是由句子到词;另一种是由字到词。

aa7a76cc001578bedd38a70a87705d17.png
中文分词的基本概念、语言模型

中文分词本质:划分词的边界

2d4868a8084dec77cc01ee7e8986869c.png
中文分词本质:划分词的边界

同时,中文分词也面临着分词规范、歧义切分、新词识别等挑战。

537262d4078f70728233d6dc61a3afaa.png
中文分词面临

2、词、词组、句子

什么是词?什么是词组?什么是句子?

搞懂这些基本概念,更容易处理它们。

16ab446a2cf3b2f331abbb66b6d9daf3.png
什么是词?什么是词组?什么是句子?

3、语言模型

什么是语言模型?

由语音、词汇、语法构成的交流模型。

08fcb2d0e12446b15bd4c56edee1b3e2.png
语言模型

短语结构语法( Phrase Structure Grammar, PSG)

57e187b17bb9ea1dea26bcec84a95e5a.png
语言模型——PSG

n元语法模型( n-gram)

fd9dc06d717bf05a13f5728133c95fb8.png
语言模型—— -gram

常见的n元语法模型如下表所示:

d0a2fc1278befaeadf33129f438c6f45.png
常见的n元语法模型

神经网络语言模型(NNLM)

df771fad34c99372c8a13f33d5d6ba56.png
神经网络语言模型(NNLM)

Masked Language Model(MLM)

185d658cf42ec06fdb76fd38db86af89.png
Masked Language Model(MLM)

4、中文分词发展简史

d78d95858a4359af40ec7c83453cf72a.png
中文分词发展简史

二、中文分词方法

中文分词代表方法有最短路径分词、n元语法分词、由字构词分词、循环神经网络分词、Transformer分词等。

a9ebada96cf42285be349e87310e2164.png
中文分词方法的目录

1、最短路径分词

cfc74fb2685a8f0a8304258f9c64344f.png
最短路径分词

2、n元语法分词

5a2fd8fe205ece67bf6ac324445a8f97.png
n元语法分词

举一个n元语法分词的例子。

a3ca31a1ec5c33fa87389a5accfa5c7f.png
一个n元语法分词的例子

3、由字构词分词

fed5b5fce44168c58c14b192bd214933.png
由字构词分词

常用的三类由字构词

04b2e5042ecc3a259d361029a5ef588e.png
常用的三类由字构词

4、循环神经网络分词

67ee4036ed009e11e475d83d57d99ca4.png
循环神经网络分词

循环神经网中文分词有:LSTM、LSTM+CRF、BiLSTM-CRF、LSTM-CNNs-CRF等。

循环神经网络中文分词的结构图如下:

da60f2530040167027a2c59d61df540a.png
循环神经网络中文分词的结构图

5、Transformer分词

2014年,Google在《Recurrent Models of Visual Attention》论文中提出Attention机制。

2017年,Google在《Attention is All You Need》论文中提出Transformer模型。

465a0b9c33bcb4ec2cbfb63db5c3b052.png
Transformer分词

2019年,邱锡鹏在《Multi-Criteria Chinese Word Segmentation with Transformer》论文中提出Transformer中文分词模型如下图所示:

89e98bc3e8998c497e71a8141a41e19f.png
Transformer中文分词模型

Transformer中文分词学习结果如下图所示:

234be04499b7865ca7cc7aa99f87c775.png
Transformer中文分词学习结果

三、中文分词工具

中文分词工具工具很多,这里我们选择使用较多,关注度较高的jieba、HanLP、FoolNLTK等来介绍。

b17a66a4fa9c4bbab53f53ad9f57ad55.png
中文分词工具的目录

jieba、HanLP、snownlp、FoolNLTK、LTP、THULAC等分词工具概览。

164200cdcfc8b31a759fa59f5c0cba80.png
jieba、HanLP、snownlp、FoolNLTK、LTP、THULAC等分词工具概览

1、jieba

jieba概述

d24c7fa7047c851ac650de22257617c3.png
jieba概述

jieba分词原理:HMM(隐马尔可夫模型)。更多HMM内容可参考:

刘启林:隐马尔可夫模型HMM的原理及应用​zhuanlan.zhihu.com
6de57d670d632faffacc4cef3313c4bf.png

fa15da57e2de146249eb174e768aef70.png
HMM中文分词的图结构

jieba中文分词代码实例如下:

# jieba 0.42.1

import jieba

string = '我喜欢北京冬奥会'

print(",".join(jieba.cut(string)))

2、HanLP

HanLP概述

bfadee42626d7490cb67a667e8f719c3.png
HanLP概述

HanLP实现的基于CRF分词原理如下:

339afba67380f96e92b3b5e2f82f881d.png
CRF中文分词的图结构

HanLP中文分词代码实例如下:

# HanLP1.7.7

from pyhanlp import *

string = '我喜欢北京冬奥会'

HanLP.Config.ShowTermNature = False

print(HanLP.segment(string))

3、FoolNLTK

FoolNLTK概要

c2e2035b63446611ef4b7a6f30a9bd44.png
FoolNLTK概要

FoolNLTK分词原理如下:

BiLSTM-CRF模型架构

30430a5b0c2c70f7b8c9d5b5a81da06d.png
BiLSTM-CRF模型架构

各分词工具对比表如下:

9a9992aea705fd9b76d3e5e5bb7682f0.png
分词工具对比表

中文分词工具使用总结如下:

cde2f46c79d02ca6dce3a83d0a91611a.png
中文分词工具使用总结

四、总结

4655b9871523d8baf550fa76ee320808.png
总结的目录

1、规则 VS 统计 VS 深度

基于规则分词、基于统计分词与基于深度学习分词的对比。

881c48337596c24bae5e0d7583310ce4.png
基于规则分词、基于统计分词与基于深度学习分词的对比

2、垂直领域中文分词

垂直领域的中文分词现状与挑战。

0294b2138dd1148efc6719a8035d6f50.png
垂直领域中文分词

3、中文分词发展趋势

69201047e66d826a7cfd6094f23bdf9f.png
中文分词发展趋势

中文分词呈现两个发展趋势:

1、越来越多的Attention方法应用到中文分词上。

2、数据科学与语言科学融合,发挥彼此优势。

由于当前自己的能力和水平的限制,我的可能是错的,或者是片面,这里抛砖引玉,期待与您一起交流探讨。

参考文献:

1、中国社会科学院语言研究所词典编辑室, 现代汉语词典(第7版), 商务印书馆[M], 2017.01

2、宗成庆, 统计自然语言处理(第2版), 清华大学出版社[M], 2013.08

3、黄昌宁, 赵海, 由字构词——中文分词新方法, 中国中文信息学会二十五周年学术会议[J], 2006

4、姜维, 文本分析与文本挖掘, 科学出版社[M], 2018.12

5、Xipeng Qiu等, Multi-Criteria Chinese Word Segmentation with Transformer, 2019.06

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
word分词是一个Java实现的中文分词组件,提供了多种基于词典的分词算法,并利用ngram模型来消除歧义。 能准确识别英文、数字,以及日期、时间等数量词,能识别人名、地名、组织机构名等未登录词。 同时提供了Lucene、Solr、ElasticSearch插件。 分词使用方法: 1、快速体验 运行项目根目录下的脚本demo-word.bat可以快速体验分词效果 用法: command [text] [input] [output] 命令command的可选值为:demo、text、file demo text 杨尚川是APDPlat应用级产品开发平台的作者 file d:/text.txt d:/word.txt exit 2、对文本进行分词 移除停用词:List words = WordSegmenter.seg("杨尚川是APDPlat应用级产品开发平台的作者"); 保留停用词:List words = WordSegmenter.segWithStopWords("杨尚川是APDPlat应用级产品开发平台的作者"); System.out.println(words); 输出: 移除停用词:[杨尚川, apdplat, 应用级, 产品, 开发平台, 作者] 保留停用词:[杨尚川, 是, apdplat, 应用级, 产品, 开发平台, 的, 作者] 3、对文件进行分词 String input = "d:/text.txt"; String output = "d:/word.txt"; 移除停用词:WordSegmenter.seg(new File(input), new File(output)); 保留停用词:WordSegmenter.segWithStopWords(new File(input), new File(output)); 4、自定义配置文件 默认配置文件为类路径下的word.conf,打包在word-x.x.jar中 自定义配置文件为类路径下的word.local.conf,需要用户自己提供 如果自定义配置和默认配置相同,自定义配置会覆盖默认配置 配置文件编码为UTF-8 5、自定义用户词库 自定义用户词库为一个或多个文件夹或文件,可以使用绝对路径或相对路径 用户词库由多个词典文件组成,文件编码为UTF-8 词典文件的格式为文本文件,一行代表一个词 可以通过系统属性或配置文件的方式来指定路径,多个路径之间用逗号分隔开 类路径下的词典文件,需要在相对路径前加入前缀classpath: 指定方式有三种: 指定方式一,编程指定(高优先级): WordConfTools.set("dic.path", "classpath:dic.txt,d:/custom_dic"); DictionaryFactory.reload();//更改词典路径之后,重新加载词典 指定方式二,Java虚拟机启动参数(中优先级): java -Ddic.path=classpath:dic.txt,d:/custom_dic 指定方式三,配置文件指定(低优先级): 使用类路径下的文件word.local.conf来指定配置信息 dic.path=classpath:dic.txt,d:/custom_dic 如未指定,则默认使用类路径下的dic.txt词典文件 6、自定义停用词词库 使用方式和自定义用户词库类似,配置项为: stopwords.path=classpath:stopwords.txt,d:/custom_stopwords_dic 7、自动检测词库变化 可以自动检测自定义用户词库和自定义停用词词库的变化 包含类路径下的文件和文件夹、非类路径下的绝对路径和相对路径 如: classpath:dic.txt,classpath:custom_dic_dir, d:/dic_more.txt,d:/DIC_DIR,D:/DIC2_DIR,my_dic_dir,my_dic_file.txt classpath:stopwords.txt,classpath:custom_stopwords_dic_dir, d:/stopwords_more.txt,d:/STOPWORDS_DIR,d:/STOPWORDS2_DIR,stopwords_dir,remove.txt 8、显式指定分词算法 对文本进行分词时,可显式指定特定的分词算法,如: WordSegmenter.seg("APDPlat应用级产品开发平台", SegmentationA
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值