首页 > 编程知识 正文

算法是自然语言吗,生成词库理论

时间:2023-05-04 17:28:10 阅读:107025 作者:2424

分词目前有三种主要的分词方法:基于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法。

1 .基于字符串匹配的分词方法——基于字符串匹配的分词方法,也称为机器分词方法,需要初始的足够大的字典,将被分词的字符串与字典的元素进行匹配,如果匹配成功,则截取该词。

根据扫描方向的不同,字符串匹配分词方法可以分为正匹配和逆匹配; 根据不同长度的匹配优先级可以分为最大匹配和最小匹配。

1.1正向最大匹配1 .将从左向右分割的句子的m个字符作为匹配字符,m是初始词典的最长词条的长度。

2 .将字符与词典中的元素匹配:

2.1 .匹配成功时,将该文字切为一个单词

2.2 .匹配失败时,去除该字符的最后一个字符,匹配,重复上述过程,直到切分出整个文本为止,了解清楚。

举个例子:

设切分句子为“南京市长江大桥”,词典中最长的要素长度为5,则先取切分句子的前5个字“南京市长江”。 词典中没有与之匹配的要素,长度减少1就成为“南京市长”,成功匹配。

对剩下三个字“江大桥”再次进行正向最大匹配,切成“江”、“大桥”;

整篇文章的间隔是南京市长、江、大桥;

1.2反向最大匹配反向最大匹配的思路与正向最大匹配的思路基本相同,不同之处在于扫描方向从右向左改变,当匹配不成功时,去除最左边的字符。

实验表明,逆向最大匹配算法效果要优于正向最大匹配算法。

“南京市长江大桥”逆向最大匹配:

1 .将“南京市长江大桥”后5个字“市长江大桥”取出,因词典中无匹配因素,删去“市”字样,发现词典有匹配项,删去;

2 .将剩下的“南京市”分词化,整体结果为南京市、长江大桥

1.3双向最大匹配双向最大匹配法是将正向最大匹配法得到的分词结果与反向最大匹配法得到的结果进行比较,确定正确的分词方法。

还是在上面的例子中,双向最大匹配的划分结果是南京市长、南京市长江大桥、江、大桥。

这类算法的优点是速度快,时间复杂度为O(n),实现简单;但是对于歧义和未登录词表现不佳。

2、基于理解的分词方法的基本思想是在分词的同时进行句法、语义分析,利用句法信息和语义信息处理歧义现象。 通常包括分词子系统、句法语义子系统、总统制部分三部分。 由于汉语语言知识的笼统、复杂,难以将各种语言信息组织成机器可读的形式,目前基于理解的分词系统还处于试验阶段。

3、基于统计的分词方法主要思想:每个单词是单词的最小单位,连续单词在不同文本中出现的频率越高,这就越有可能是单词。 因此,可以用相邻单词出现的频率来衡量组词的可能性,如果频率高于某个阈值,则认为这些单词有可能构成一个单词。

主要统计模型:N元语法模型(N-gram )、隐马尔可夫模型(Hidden Markov Model,HMM )、最大熵模型(ME )、条件随机场) condd

优势:实际运用中多将字符串匹配分词与统计分词结合使用,具有匹配分词速度快、效率高的优点,同时具有利用统计分词识别单词、自动消除歧义等特点

3.1 N-gram模型该模型基于第n个词出现只有前面的n-1个词,与其他词无关的假设。 句子整体概率是各个词出现概率的乘积。

对于一个句子t,假设其由n个词w1、w2、w3、w n w 1、w2、w3、wn构成,则p(t(p ) w1w2w3wn )=p ) w1 ) p(w2|w1 ) p ) w3

w 3 ⋯ w n ) = p ( w 1 ) p ( w 2 | w 1 ) p ( w 3 | w 1 w 2 ) ⋯ p ( w n | w 1 w 2 ⋯ w n − 1 ) ,计算这个式子很麻烦,我们引入马尔科夫假设:一个词的出现仅依赖于它前面有限的几个词。如果一个词的出现仅依赖于它前面出现的一个词,我们就称之为bigram。则上式变为: p(T)=p(w1)p(w2|w1)p(w3w2)⋯p(wnwn−1) p ( T ) = p ( w 1 ) p ( w 2 | w 1 ) p ( w 3 w 2 ) ⋯ p ( w n w n − 1 )
如果一个词的出现仅依赖于它前面出现的两个词,那么我们就称之为trigram。
以此类推,N元模型就是假设当前词的出现概率只同它前面的N-1个词有关。(实际中通常只用到二元模型)

3.2 隐马尔可夫模型(HMM) 3.2.1 隐马尔可夫模型简介

隐马尔可夫模型中的变量有两组。一组为状态变量{y1, y2, …, yn},其中yi表示第i时刻所处的状态,这些状态是隐藏的、不可观测的,因此又称为隐变量,隐变量的取值通常是离散的。第二组是观测变量{x1, x2, …, xn},其中xi表示第i时刻的观测值。
在任一时刻,观测变量的取值只与该时刻的状态变量有关,即xi由yi决定。而当前状态只与前一时刻的状态有关,与其他状态无关。

3.2.2 隐马尔可夫模型的三大问题

一般的,一个HMM可以表示为u=(S, K, A, B, π), 其中S是状态集合,K是输出符号也就是观察集合,A是状态转移概率,B是符号发射概率,π是初始状态的概率分布。HMM主要解决三个基本问题:
估计问题,给定一个观察序列O=O1,O2,O3,… ,Ot和模型u=(A,B,π),计算观察序列的概率;
序列问题,给定一个观察序列O=O1,O2,O3… Ot和模型μ=(A, B, π),计算最优的状态序列Q=q1,q2,q3…qt;
参数估计问题,给定一个观察序列O=O1,O2,O3… Ot,如何调节模型μ=(A,B, π)的参数,使得P(O|μ)最大。
三类问题的求解在这里略去。

3.2.3 隐马尔可夫模型分词方法

隐马尔可夫的三大问题分别对应了分词中的几个步骤。参数估计问题就是分词的学习阶段,通过海量的预料数据来学习归纳出分词模型的各个参数。状态序列问题是分词的执行阶段,通过观测变量(待分词句子的序列)来预测出最优的状态序列(分词结构)。
设状态集合S=(B.M,E,S),每个状态代表的是这个字在词语中的位置,B代表该字是词语中的起始字,M代表是词语中的中间字,E代表是词语中的结束字,S则代表是单字成词;观察值集合K =(所有的汉字);则中文分词的问题就是通过观察序列来预测出最优的状态序列。
比如观察序列为:
O = 南京市长江大桥
预测的状态序列为:
Q = BMEBMME
根据这个状态序列我们可以进行切词:
BME/BMME/
所以切词结果如下:
南京市/长江大桥/
因为HMM分词算法是基于字的状态(BEMS)来进行分词的,因此很适合用于新词发现,某一个新词只要标记为如“BMME”,就算它没有在历史词典中出现过,HMM分词算法也能将它识别出来。

中文分词工具介绍

python常用的分词包有jieba分词、SnowNLP、THULAC、NLPIR 等。

1、jieba分词

jieba分词是国内使用人数最多的中文分词工具。

1.1、jieba分词的三种模式

(1)精确模式:试图将句子最精确地切分,适合文本分析;
(2)全模式:把句子中所有可以成词的词语都扫描出来,速度非常快,但是不能解决歧义;
(3)搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。

1.2、jieba分词涉及的算法

jieba分词过程中主要涉及如下几种算法:
(1)基于前缀词典实现高效的词图扫描,生成句子中汉字所有可能成词情况所构成的有向无环图 (DAG);
(2)采用了动态规划查找最大概率路径, 找出基于词频的最大切分组合;
(3)对于未登录词,采用了基于汉字成词能力的 HMM 模型,采用Viterbi 算法进行计算;
(4)基于Viterbi算法做词性标注;
(5)基于tf-idf和textrank模型抽取关键词;
jieba分词测试如下

import jiebau="我来到北京清华大学"#全模式test1 = jieba.cut(u, cut_all=True)print("全模式: " + "| ".join(test1))#精确模式test2 = jieba.cut(u, cut_all=False)print("精确模式: " + "| ".join(test2))#搜索引擎模式test3= jieba.cut_for_search(u) print("搜索引擎模式:" + "| ".join(test3))

全模式: 我| 来到| 北京| 清华| 清华大学| 华大| 大学
精确模式: 我| 来到| 北京| 清华大学
搜索引擎模式:我| 来到| 北京| 清华| 华大| 大学| 清华大学

2、SnowNLP

SnowNLP可以方便的处理中文文本内容,是受到了TextBlob的启发而写的。SnowNLP主要包括如下几个功能:
(1)中文分词(Character-Based Generative Model);
(2)词性标注(3-gram HMM);
(3)情感分析(简单分析,如评价信息);
(4)文本分类(Naive Bayes)
(5)转换成拼音(Trie树实现的最大匹配)
(6)繁简转换(Trie树实现的最大匹配)
(7)文本关键词和文本摘要提取(TextRank算法)
(8)计算文档词频(TF,Term Frequency)和逆向文档频率(IDF,Inverse Document Frequency)
(9)Tokenization(分割成句子)
(10)文本相似度计算(BM25)
SnowNLP的最大特点是特别容易上手,用其处理中文文本时能够得到不少有意思的结果,但不少功能比较简单,还有待进一步完善。

3、THULAC

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

4、NLPIR

NLPIR分词系统是由北京理工大学还单身的鸡博士研发的中文分词系统,经过十余年的不断完善,拥有丰富的功能和强大的性能。NLPIR是一整套对原始文本集进行处理和加工的软件,提供了中间件处理效果的可视化展示,也可以作为小规模数据的处理加工工具。主要功能包括:中文分词,词性标注,命名实体识别,用户词典、新词发现与关键词提取等功能。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。