一、在语言理解中,词是最小的能够独立活动的有意义的语言成分。
中文自动分词主要有三个方法:规则分词,统计分词,混合分词
中文分词的难处:
没有分词规范;存在歧义词;存在未登录词
分词的主要目的是:词性标注
词法分析主要包括,中文分词,命名实体识别和词性标注
二、规则分词
基于规则的分词是一种机械分词方法,主要是通过维护词典,在切分语句时,将语句的每个字符串与词表中的词进行逐一匹配
分为三部分
正向最大匹配法(MM)
基本思想为:假定分词词典中的最长词有i个汉字字符,则用被处理文档的当前子串中的前i个字作为匹配字段,查找字典。
比如词典最大词长度为5,词典中现在存在“南京市长”和“长江大桥”这两个词段,现在对“南京市长江大桥”进行分词,取出前五个字,“南京市长江”,没有该词,进行-1操作,词典中存在“南京市长”这个词,确认切分,再将剩下的“江大桥”进行切分,具体操作为:同样取5,现在没有这么多,直接取三个,词典中没有“江大桥”这个词,-1,没有“江大”这个词,再-1,此时切分单字“江”,“大桥”(这里假定词典里面有“大桥”这个字段,如果没有的话,那实际上也都是单字切分)
逆向最大匹配法(RMM)
基本思想只是从处理文档的末端开始,其余思想一致。
双向最大匹配法(BMM)
将正向最大匹配法和逆向最大匹配法得到的结果进行比较,然后按照最大匹配原则,选择词数划分最少得作为结果
三、统计分词
基于统计的分词往往需要先建立统计语言模型,后对句子进行划分,对划分结果进行概率计算,获得概率最大的分词结果
语言模型:为长度为m的字符串确定其概率分布P(w1,w2,...,wn),其中w到 wn是指文本中的各个词语
n=1时称为一元模型,在一元模型中,整个句子的概率等于各个词语概率的乘积。
n=2或者3或者更多时,该模型是可以保留一定的词序信息的,而且n越大时,保留的次序信息越丰富,单计算成本也呈指数级增长,
HMM模型:
HMM中给定每一个字一个状态,BMES
首先 计算初始矩阵,也就是给出的语料库中每个句子开头的状态 ,一般只有B和S开头
计算好他们出现的概率
其次,计算转移概率,转移矩阵就是在某状态下,从当前状态向下一状态转移的概率
然后,计算所有字出现的概率
四、混合分词
事实上目前不管是基于规则的方法还是基于HMM,CRF或深度学习的方法,差距不太明显,实际应用中,往往基于一种分词算法,然后用其他分词算法加以辅助。
五、jieba分词
jieba分词的三种分词模式:
精确模式:将句子精确切开,适合文本分析。(和默认精确模式实际上是一样的)
seg_list=jieba.cut(text,cut_all=False)
全模式:把句子中所有可以成词的词语都扫描出来,但是不能解决歧义
seg_list=jieba.cut(text,cut_all=True)
搜索引擎模式:在精确模式的基础上,对长次进行切分,提升召回率,适合用于搜索引擎分词
seg_list=jieba.cut_for_search(text)
- 全模式:输出更多的词语,包括大量冗余词。
- 搜索引擎模式:输出适量的词语,确保分词结果的准确性和召回率。
-
- 全模式:速度较快,因为只是简单的扫描所有可能词语。
- 搜索引擎模式:相对较慢,因为需要先进行精确分词,再对长词进行细分。