NLPIR分词系统在线 nlp分词技术_NLPIR分词系统在线


NLPIR分词系统在线 nlp分词技术_github_02


1.导语:

全视角的概览,目标是掌握什么是分词技术、为什么需要分词技术和如何使用分词技术。后续将分不同篇幅对其中内容进行深挖和讲解。文章结构如下(全文阅读时间大约10分钟):


NLPIR分词系统在线 nlp分词技术_NLPIR分词系统在线_03


2.简介:

NLP),是人工智能领域中一个重要的方向,主要研究如何让人类和计算机之间,能够使用人类能够理解的语言进行有效沟通,其涵盖语言学、计算机科学、数学等多种交叉学科。在现如今人工智能技术迅速发展时期,AI技术逐步从感知智能朝认知智能大跨步迈进,NLP技术或许是人类实现强人工智能的关键所在。


NLPIR分词系统在线 nlp分词技术_中文分词_04


词语划分出来的技术,人能够知道哪些是词语,如何让计算机能够理解和划分,其处理过程就是分词。当然,分词只是一种工具,场景不同,要求也不同。


NLPIR分词系统在线 nlp分词技术_使用lucce分词怎么_05


最小粒度有意义的语言成分;英文往往不需要分词,但中文需要,因为中文在基本文法上有其特殊性,主要体现在:1.英文以空格作为天然分隔符,中文词语间没有分隔2.古文词通常是单个汉字,而现在汉语双字多字词比较多3.词和词组边界模糊


NLPIR分词系统在线 nlp分词技术_github_06


3.技术难点

三大难题未完全突破:1.分词的规范:字和词的界限往往很模糊,并没有一个公认、权威的标准,会有很多不同主观上的分词差异2.歧义词的切分,歧义词的情况分为:交集型歧义组合型歧义混合型歧义。另外,更头痛的情况就是真歧义,即使是人都无法判断的情况3.未登录词识别,就是新词的意思,如人名、地名、网络用词等等


NLPIR分词系统在线 nlp分词技术_NLPIR分词系统在线_07


NLPIR分词系统在线 nlp分词技术_中文分词_08


NLPIR分词系统在线 nlp分词技术_中文分词_09


NLPIR分词系统在线 nlp分词技术_自然语言处理_10


4.分词算法概述

4.1算法中的数据结构

词典,一个是词图

需要了解Trie树、KMP算法、AC自动机可以在后续的推文中学习)。


NLPIR分词系统在线 nlp分词技术_自然语言处理_11


图作为一种常见的数据结构,其存储方式一般有两种:邻接矩阵和邻接表。所谓矩阵其实就是二维数组,所谓邻接矩阵存储结构,就是每个顶点用一个一维数组存储每条边的信息,就能用矩阵表示图中各顶点之间的邻接关系。


NLPIR分词系统在线 nlp分词技术_NLPIR分词系统在线_12


邻接表,存储方法跟树的子链表示法相类似,是一种顺序分配和链式分配相结合的存储结构。


NLPIR分词系统在线 nlp分词技术_github_13


4.2.分词算法简介


NLPIR分词系统在线 nlp分词技术_NLPIR分词系统在线_14


1.基于规则的分词算法 2.基于统计的分词算法 3.基于语义的分词算法 4.基于理解的分词算法(该部分内容在本期后续推文中会展开讲解)

基于规则的分词算法主要思想是按照一定的策略将待分析的汉字串与一个“充分大的”机器词典中的词条进行匹配。若在词典中找到某个字符串,则匹配成功。该方法有三个要素,即分词词典、文本扫描顺序和匹配原则。
优点是简单,容易实现。缺点是:匹配速度慢;存在交集型和组合型歧义切分问题;词本身没有一个标准的定义,没有统一标准的词集;不同词典产生的歧义也不同;缺乏自学习的智能性。


NLPIR分词系统在线 nlp分词技术_github_15


基于统计的分词算法的主要核心是词是稳定的组合,因此在上下文中,相邻的字同时出现的次数越多,就越有可能构成一个词。因此字与字相邻出现的概率或频率能较好地反映成词的可信度。可以对训练文本中相邻出现的各个字的组合的频度进行统计,计算它们之间的互现信息。互现信息体现了汉字之间结合关系的紧密程度。当紧密程 度高于某一个阈值时,便可以认为此字组可能构成了一个词。该方法又称为无字典分词。
实际运用中会结合基于规则的分词方法,不仅发挥词典匹配的速度快的优势,又结合无词典分词能够结合上下文识别、消歧的优势。


NLPIR分词系统在线 nlp分词技术_github_16


基于语义的分词算法引入了语义分析,对自然语言自身的语言信息进行更多的处理。


NLPIR分词系统在线 nlp分词技术_中文分词_17


基于理解的分词算法,是通过让计算机,模拟人对句子的理解,达到识别词组的效果。基本思想是在分词的同时进行句法、语义的分析,利用句法和语义信息来处理歧义现象。通常包含三部分:分词子系统、句法语义子系统、总控部分。在总控部分的协调下,分词子系统可以获得有关词、句子等的句法和语义信息,来对分词歧义进行判断,模拟人对句子的理解过程。目前基于理解的分词方法主要有专家系统分词法和神经网络分词法等。


NLPIR分词系统在线 nlp分词技术_自然语言处理_18


5.python工具


NLPIR分词系统在线 nlp分词技术_自然语言处理_19


(该部分内容在本期后续推文中会展开讲解如何使用)

1.jieba:专用于分词的python库,分词效果好.支持三种分词模式:精准模式、全模式和搜索引擎模式;并且支持繁体分词;可以自定义词典。它主要使用的分词算法是基于统计的分词算法:
a.基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图(DAG)
b.采用动态规划查找最大概率路径,找出基于词频的最大切分组合c.对未登录词,采用基于汉字成词能力的HMM模型,使用Viterbi算法Github地址:https://github.com/fxsjy/jieba

2.THULAC:由清华大学自然语言处理与社会人文计算实验室研制推出的一套中文词法分析工具包,具有中文分词和词性标注功能。THULAC具有如下几个特点:
a.能力强。利用集成的目前世界上规模最大的人工分词和词性标注中文语料库(约含5800万字)训练而成,模型标注能力强大。b.准确率高。该工具包在标准数据集Chinese Treebank上分词的F1值可达97.3%,词性标注的F1值可达到92.9%,与该数据集上最好方法效果相当。c.速度较快。同时进行分词和词性标注速度为300KB/s,每秒可处理约15万字。只进行分词速度可达到1.3MB/s.Github地址:https://github.com/thunlp/THULAC-Python

3.pkuseg:由北京大学语言计算与机器学习研究组研制推出的一套全新的中文分词工具包。具有如下几个特点:
a.分词准确率。相比于其他的分词工具包,该工具包在不同领域的数据上都大幅提高了分词的准确度。根据测试结果,pkuseg分别在示例数据集(MSRA和CTB8)上降低了79.33%和63.67%的分词错误率。b.多领域分词。该分词包训练了多种不同领域的分词模型。根据待分词的领域特点,用户可以自由地选择不同的模型。c.支持用户自训练模型。支持用户使用全新的标注数据进行训练。Github地址:https://github.com/lancopku/PKUSeg-python

4.FoolNLTK:根据该项目所述,这个中文工具包的特点有如下几点:
a.可能不是最快的开源中文分词,但很可能是最准的开源中文分词b.基于 BiLSTM 模型训练而成c.包含分词,词性标注,实体识别, 都有比较高的准确率d.用户自定义词典Github地址:https://github.com/rockyzhengwu/FoolNLTK

5.LTP:语言技术平台(Language Technology Platform,LTP)是哈工大社会计算与信息检索研究中心历时十年开发的一整套中文语言处理系统。LTP制定了基于XML的语言处理结果表示,并在此基础上提供了一整套自底向上的丰富而且高效的中文语言处理模块(包括词法、句法、语义等6项中文处理核心技术),以及基于动态链接库(Dynamic Link Library, DLL)的应用程序接口、可视化工具,并且能够以网络服务(Web Service)的形式进行使用。GitHub地址:https://github.com/HIT-SCIR/pyltptp
另外运行的时候需要下载模型,模型还比较大,下载地址:http://ltp.ai/download.html

6.SnowNLP: Simplified Chinese Text Processing,可以方便的处理中文文本内容,是受到了 TextBlob 的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的,于是写了一个方便处理中文的类库,并且和 TextBlob 不同的是,这里没有用 NLTK,所有的算法都是自己实现的,并且自带了一些训练好的字典。GitHub 地址:https:http://github.com/isnowfy/snownlp