參考部落格參考部落格
# given a dict
li =
["北京大學"
,"生前"
,"來"
,"應聘"
,"大學生"
,"前來"
,"北京"
]dic =
print
(dic)
視窗從前面開始滑動,每次取maxlength
匹配不上也是捨棄後面的
# forward max matching
# given the longest word in dict , the length is 4
# string: test string
max_length =
5string =
"北京大學生前來應聘"
# store the answers
ans =
while
len(string)
>0:
right =
max(
len(string)
, max_length)
sub_string = string[
:right]
while
len(sub_string)
>0:
if sub_string in dic:
string = string[
len(sub_string):]
break
else
: sub_string = sub_string[
:len
(sub_string)-1
]print
(ans)
[『北京大學』, 『生前』, 『來』, 『應聘』]
視窗從最後面開始滑動,匹配不上是捨棄前面的
# backward max matching
res =
max_length =
5string =
"北京大學生前來應聘"
while
len(string)
>0:
l =len(string)
iflen
(string)
< max_length:
sub_string = string
else
: sub_string = string[
len(string)
- max_length:
]while
len(sub_string)
>0:
if sub_string in dic:
string = string[
:l -
len(sub_string)
]break
else
: sub_string = sub_string[1:
]print
(res[::
-1])
[『北京』, 『大學生』, 『前來』, 『應聘』]
演算法流程:
比較正向最大匹配和逆向最大匹配結果 如果分詞數量結果不同,那麼取分詞數量較少的那個 如果分詞數量結果相同 分詞結果相同,可以返回任何乙個 分詞結果不同,返回單字數比較少的那個
逆向最大匹配分詞演算法C
逆向順序 程式設計師 序員 員 名程式 程式 序 一名程 名程 程 是一名 一名 名 我是一 是一 一 x我是 我是 是 xx我 x我 我 叫xx xx x 我叫x 叫x x 好我叫 我叫 叫 家好我 好我 我 大家 家 大class program else if flag else len st...
逆向最大匹配分詞演算法C
逆向順序 程式設計師 序員 員 名程式 程式 序 一名程 名程 程 是一名 一名 名 我是一 是一 一 x我是 我是 是 xx我 x我 我 叫xx xx x 我叫x 叫x x 好我叫 我叫 叫 家好我 好我 我 大家 家 大class program else if flag else len st...
遞迴實現前向匹配分詞
coding utf 8 功能 遞迴實現前向匹配分詞 說明 zhuanma這個包借鑑自jieba分詞源 用於 將任意格式編碼的字串轉換為unicode編碼,統一 字典和待分詞語句的編碼後,便於句子切分和分詞.author date 2016 04 16 import re from zhuanma ...