# -*- coding: utf-8 -*-
#正向最大匹配法
text='研究生命的最初起源'#即將被分詞的文字
dic=['研究','研究生','生命','命','的','最','初','起源'] #在這個字典進行匹配
ww=7 #每次取七個字元來匹配
mmresult=
index=0
text_length=len(text)
while text_length>index:
for size in range(ww+index,index,-1):
print(size,':',ww+index,index,-1)#輸出遍歷索引的過程
piece=text[index:size]
print(piece)#輸出每次嘗試匹配的字串
if piece in dic:
index=size-1
break
index=index+1
print(mmresult)
#逆向最大匹配法
text='研究生命的最初起源'#即將被分詞的文字
dic=['研究','研究生','生命','命','的','最','初','起源'] #在這個字典進行匹配
ww=7 #每次取七個字元來匹配
rmmresult=
index=len(text)
while index>0:
for size in range(index-ww,index):
print(size,':',index-ww,index)#輸出遍歷索引的過程
piece=text[size:index]
print(piece)#輸出每次嘗試匹配的字串
if piece in dic:
index=size+1
break
index=index-1
rmmresult.reverse()
print(rmmresult)
#把正向最大匹配法寫成乙個類
'''class mm(object):
# def __init__(self):
# self.ww=7
def cut(self,text):
ww=7 #每次取七個字元來匹配
result=
index=0
text_length=len(text)
dic=['研究','研究生','生命','命','的','最','初','起源']
while text_length>index:
for size in range(ww+index,index,-1):
print(size,':',ww+index,index,-1)#輸出遍歷索引的過程
piece=text[index:size]
print(piece)#輸出每次嘗試匹配的字串
if piece in dic:
index=size-1
break
index=index+1
print(result)
if __name__=='__main__':
text='研究生命的最初起源'
token=mm()
print(token.cut(text))
'''#把逆向最大匹配法寫成乙個類
'''class rmm(object):
def __init__(self):
self.w=7
def cut(self,text):
dic=['研究','研究生','生命','命','的','最','初','起源'] #在這個字典進行匹配
result=
index=len(text)
while index>0:
for size in range(index - self.w,index):
print(size,':',index - self.w,index)#輸出遍歷索引的過程
piece=text[size:index]
print(piece)#輸出每次嘗試匹配的字串
if piece in dic:
index=size+1
break
index=index-1
result.reverse()
print(result)
if __name__=='__main__':
text="研究生命的最初起源"
tokenn=rmm()
print(tokenn.cut(text))
'''
分詞之正向最大匹配法
完整資料和 獲取位址github zlhcsm 知識普及 正向最大匹配法 對於輸入的一段文字從左至右 以貪心的方式切分出當前位置上長度最大的詞。正向最大匹配演算法是基於詞典的分詞方法,其分詞原理是 單詞的顆粒度越大,所能表示的含義越確切。1,一般從乙個字串的開始位置,選擇乙個最大長度的詞長的片段,如...
分詞演算法的python實現(正向最大匹配法)
正向最大匹配法又稱mm法,其基本思想是 假設分詞詞典中的最長詞由i個漢字字元組成,則 用被處理文件的當前字串中前i個字作為匹配 字段查詢詞典。若詞典中存在這樣乙個字詞,則 匹配成功,匹配字段作為乙個詞被切分出來,否則 匹配失敗。應將匹配欄位中的最後乙個字去掉,對剩下的字串重新進行匹配處理。如此進行下...
分詞演算法 正向最大匹配和逆向最大匹配實現
假設已經有正向匹配演算法原始碼,則可以將文件進行倒序處理,生成逆序文件,然後根據逆序詞典,對逆序文件使用正向最大匹配法處理即可。同理已經存在逆向最大匹配演算法,則只要將文件倒序處理,正向詞典倒序變為逆序詞典,則可以送入逆向西大匹配演算法中進行分詞處理。class imm object def ini...