題目內容:
實現逆向最大匹配分詞演算法,即從右向左掃瞄,找到最長的詞並切分。如句子「研究生命的起源」,逆向最大匹配分詞演算法的輸出結果為「研究 生命 的 起源」。
輸入格式:
第一行是以utf-8格式輸入的詞表,每個詞之間以空格分隔。
接下來是若干行以utf-8格式輸入的中文句子。
輸出格式:
以utf-8格式輸出的逆向最大匹配的分詞結果,每個詞之間使用空格分隔。每個輸入對應一行輸出。
輸入樣例:
你 我 他 愛 北京 天安門 研究 研究生 命 生命 的 起源
研究生命的起源
我愛北京天安門
輸出樣例:
研究 生命 的 起源
我 愛 北京 天安門
我的無法通過的錯誤的解答:
#coding=utf-8
def word_seg(sentence,word_dic,max_length):
begin=0
words=
sent = unicode(sentence,'utf-8' );
end=len(sent);
while end>0:
for begin in range( max(end-max_length,0) ,end ,1 ):
word =sent[begin:end]
if word in word_dic or end==begin+1:
break
end=begin
return words
def load_dic_text(text):
lst=;
lst=text.split(' ')
word_dic=set()
max_length=1
for one_word in lst:
word=unicode(one_word.strip(),'utf-8')
word_dic.add(word)
if len(word)>max_length:
max_length=len(word)
return max_length,word_dic
# print load_dic('lexicon.dic')
s=raw_input()
max_len,dic= load_dic_text(s)
stopword = ''
for s in iter(raw_input, stopword):
my_list= word_seg(s,dic,max_len);
my_list.reverse();
new_s="";
new_list=;
for on in my_list:
new_s=new_s+on+" ";
print new_s[0:len(new_s)-1]
我不知道為什麼,
python 字典練習題
標準的字典資料 dict 1 兩字典相加 one dict two list 兩個字典相加 合併為 第三個字典 one dict.update two list print one dict 修改字典 修改字典 one dict age 10 print one dict age 等同於 print...
python 字典的綜合練習題
數字重複統計 1 隨機生成1000個整數 2 數字的範圍 20,100 3 公升序輸出所有不同的數字及其每個數字重複的次數 import random all nums 定義空列表儲存數字 for item in range 1000 20,100 print all nums sorted num...
pyhthon字典練習題
有如下集合 11,22,33,44,55,66,77,88,99 將所有大於55的值儲存至第乙個key值中,將所有小於55的值儲存至第二個key值中。方法一 li 11,22,33,44,55,66,77,88,99 dic 定義乙個空的字典 for i in li 設定乙個迴圈 if i 66 設...