【Python自然语言处理】中文分词技术——规则分词
中文分詞方法
本文參考自書籍《Python自然語言處理實戰:核心技術與算法》
用做個人的學習筆記和分享
1. 規則分詞
規則分詞是一種機械分詞方法,主要通過維護詞典,在切分語句時將語句的每個字符串和詞表中的詞逐一匹配找到則切分,找不到則不切分。
具體包括正向最大匹配法、逆向最大匹配法和雙向最大匹配法
1.1 正向最大匹配法
1.1.1 算法描述
①從左向右取待切分漢語句的m 個字符作為匹配字段, m 為機器詞典中最長詞條的
字符數。
②查找機器詞典并進行匹配。
若匹配成功, 則將這個匹配字段作為一個詞切分出來。
若匹配不成功,則將這個匹配宇段的最后一個字去掉,剩下的字符串作為新的匹配字段, 進行再次匹配。
③重復以上過程,直到切分出所有詞為止。
1.1.2 算法實現
# 正向最大匹配 class MM(object):def __init__(self, dic_path):self.dictionary = set()self.maximum = 0with open(dic_path, 'r', encoding='utf8') as f:for line in f:line = line.strip()if not line:continueself.dictionary.add(line)if len(line) > self.maximum:self.maximum = len(line)def cut(self, text):result = []size = self.maximumtext_len = len(text)while text_len > 0:word = text[0:size]while word not in self.dictionary:if len(word) == 1:breakword = word[0:len(word) - 1]result.append(word)text = text[len(word):]text_len = len(text)return resultif __name__ == '__main__':text = "南京市長江大橋"tokenizer = MM('dic.utf8')print(tokenizer.cut(text))注:dic.utf8文件是自定義的詞典文件
這個詞典包括一下詞匯:
南京市
南京市長
長江大橋
人名解放軍
大橋
1.2 逆向最大匹配法
1.2.1 算法描述
①從被處理文擋的末端開始匹配掃描
②每次取最末端i個字符( i 為詞典中最長詞數)作為匹配字段
若匹配失敗,則去掉匹配字段最前面的一個字,繼續匹配。
若匹配成功則保存字段,它使用的分詞詞典是逆序詞典, 其中的每個詞條都將按逆序方式存放。
③在實際處理時,可以先將文檔進行倒排處理成逆序文檔。然后根據逆序詞典,對逆序文檔用正向最大匹配法處理即可。
由于漢語中偏正結構較多,若從后向前匹配,可以適當提高精確度。所以,逆向最大匹配法比正向最大匹配法的誤差要小。
統計結果表明,單純使用正向最大匹配的錯誤率為1/169 ,單純使用逆向最大匹配的錯誤率為1/245
1.2.2 算法實現
# 逆向最大匹配 class IMM(object):def __init__(self, dic_path):self.dictionary = set()self.maximum = 0with open(dic_path, 'r', encoding='utf8') as f:for line in f:line = line.strip()if not line:continueself.dictionary.add(line)if len(line) > self.maximum:self.maximum = len(line)def cut(self, text):result = []index = len(text)while index > 0:word = Nonefor size in range(self.maximum, 0, -1):if index - size < 0:continuepiece = text[(index - size):index]if piece in self.dictionary:word = pieceresult.append(word)index -= sizebreakif word is None:index -= 1return result[::-1]if __name__ == '__main__':text = "南京市長江大橋"tokenizer = IMM('dic.utf8')print(tokenizer.cut(text))1.3 雙向最大匹配法
1.3.1 算法描述
將正向最大匹配法得到的分詞結果和逆向最大匹配法得到的結果進行比較
按照最大匹配原則,選取詞數切分最少的作為結果。
雙向匹配法被廣泛應用
據SunM.S. 和Bejamin K.T. ( 1995 )的研究表明,中文中90.0% 左右的句子,正向最大匹配法和逆向最大匹配法完全重合且正確,只有大概9.0% 的句子兩種切分方法得到的結果不一樣,但其中必有一個是正確的(歧義檢測成功),只有不到1.0%的句子,使用正向最大匹配法和逆向最大匹配法的切分雖重合卻是錯的,或者正向最大匹配法和逆向最大匹配法切分不同但兩個都不對(歧義檢測失敗) 。
2. 統計分詞
統計分詞的詳細筆記
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的【Python自然语言处理】中文分词技术——规则分词的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 翻译:A DSL in 5 Langua
- 下一篇: python下载网上的文件