-
【题目和解决《NLTK PYTHON》天然说话处理惩罚中文翻译版中的一处代码错误
添加时间:2013-5-20 点击量:我也是一名NLP的新手,导师给了我们入门的进修材料,便是《Natural Language Processing with Python》的国内爱好者免费翻译的中文版。在中文版中,不免有一些小错误,大项目组错误经过本身的稍微细心研读可以更正过来。
在这里发了然一处代码上的小错误,供大师分享。
在11.3数据采集中的“处理惩罚濒危说话时希罕重视事项”末节里面,有一处将辅音字母次序规范化的代码。这段代码其实并不难懂得。然则在中文版的翻译中,可能是因为排版者的不警惕忽视,造成了排版错误。
在中文版的傍边,这段代码是如许的:
>>>mappings= [(ph, f), (ght, t), (^kn, n), (qu, kw),
... ([aeiou]+, a), (r(.)\1, r\1)]
>>>def signature(word):
... for patt,repl in mappings:
... word= re.sub(patt, repl, word)
... pieces= re.findall([âeiou]+, word)
... return .join(char for piecein pieces for charin sorted(piece))[:8]
>>>signature(illefent)
lfnt
>>>signature(ebsekwieous)
bskws
>>>signature(nuculerr)
nclr存眷pieces=re.findall…这一行,发明a上方多了一个^符号,这里是不正确的。
应当把这句代码写成pieces= re.findall([^aeiou]+, word),学过正则表达式和读过这一段的读者们应当都知道为什么要如许改。
完全的代码如下:
>>> mappings = [(ph, f), (ght, t), (^kn, n), (qu, kw),
... ([aeiou]+, a), (r(.)\1, r\1)]
>>> def signature(word):
... for patt, repl in mappings:
... word = re.sub(patt, repl, word)
... pieces = re.findall([^aeiou]+, word)
... return .join(char for piece in pieces for char in sorted(piece))[:8]
>>> signature(illefent)
lfnt
>>> signature(ebsekwieous)
bskws
>>> signature(nuculerr)
nclr
再次感激热情翻译作者为我们带来的入门经典作品!
我们永远不要期待别人的拯救,只有自己才能升华自己。自己已准备好了多少容量,方能吸引对等的人与我们相遇,否则再美好的人出现、再动人的事情降临身边,我们也没有能量去理解与珍惜,终将擦肩而过。—— 姚谦《品味》