jieba分詞 正向最大匹配法和逆向最大匹配法

2021-09-24 18:28:12 字數 2332 閱讀 5441

# -*- 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...