分詞演算法的python實現(正向最大匹配法)

2021-07-05 14:00:06 字數 1320 閱讀 7580

正向最大匹配法又稱mm法,其基本思想是: 假設分詞詞典中的最長詞由i個漢字字元組成,則 用被處理文件的當前字串中前i個字作為匹配 字段查詢詞典。若詞典中存在這樣乙個字詞,則 匹配成功,匹配字段作為乙個詞被切分出來,否則 匹配失敗。應將匹配欄位中的最後乙個字去掉, 對剩下的字串重新進行匹配處理。如此進行下 去,直到匹配成功。然後取下乙個字字串進行匹 配處理,直到文件被掃瞄完為止。

下面是我用python對mm演算法的簡單實現。其中用到的詞庫大家可以在網上找到。

#!/usr/bin/python

# -*- coding: utf-8 -*-

import os

note1=input("enter your input: "); #鍵入文字內容

head1=0;

i1=10;

wordlist1= #分詞存放列表

typeis=input("敏感詞檢測輸入0,分詞輸入其他任意數字:")

if (typeis=='0'): #選擇詞庫

f=open('./mingan.txt','r')

else:

f=open('./ciku.txt','r')

for eachline in f:

nlen=len(eachline)-1;

f.close()

deffunction1

(note,wordlist,head,i):

#分詞演算法

won=

while (head <= len(note)):

if (head>=(len(note)-i)):

i=len(note)-head

for p in range(i):

rear=head+i-p;

flag=0

for each in wordlist:

if (note[head:rear]==each):

print ("詞有",each);

head=head+len(each);

flag=1;

break;

if (flag==1):

break;

if (flag==0):

head=head+1;

return won

won1=function1(note1,wordlist1,head1,i1)

print(won1)

os.system("pause")

中文分詞之正向最大匹配演算法

中文分詞目前可以分為 規則分詞 統計分詞 混合分詞 規則 統計 這三個主要流派。這次介紹下基於規則的分詞,其是一種機械的分詞方法,主要通過維護詞典,在切分語句時,將語句的每個字串與詞表中的詞逐一進行匹配,找到則切分,否則不予切分。正向最大匹配演算法 這裡需要知道兩點,乙個是分詞詞典 也即是已經分詞過...

分詞 最大正向匹配演算法及demo

最大匹配演算法作為分詞的最初級分詞演算法,作為學習,簡單實現一下。流程圖 line 姚明喜歡打籃球 res tokenize line,dic print res 輸出為 姚明 喜歡 打籃球作為學習,先簡單實現一下,後期不斷豐實。todo 1.停用詞 2.中文和其他字元混合 3.有日期 時間 url...

分詞演算法 正向最大匹配和逆向最大匹配實現

假設已經有正向匹配演算法原始碼,則可以將文件進行倒序處理,生成逆序文件,然後根據逆序詞典,對逆序文件使用正向最大匹配法處理即可。同理已經存在逆向最大匹配演算法,則只要將文件倒序處理,正向詞典倒序變為逆序詞典,則可以送入逆向西大匹配演算法中進行分詞處理。class imm object def ini...