题目内容:
实现逆向最大匹配分词算法,即从右向左扫描,找到最长的词并切分。如句子“研究生命的起源”,逆向最大匹配分词算法的输出结果为“研究 生命 的 起源”。
输入格式:
第一行是以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: words.append(word) 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]
我不知道为什么,