【题目和解决《NLTK PYTHON》天然说话处理惩罚中文翻译版中的一处代码错误

    添加时间:2013-5-20 点击量:

        我也是一名NLP的新手,导师给了我们入门的进修材料,便是《Natural Language Processing with Python》的国内爱好者免费翻译的中文版。在中文版中,不免有一些小错误,大项目组错误经过本身的稍微细心研读可以更正过来。


        在这里发了然一处代码上的小错误,供大师分享。


    在11.3数据采集中的“处理惩罚濒危说话时希罕重视事项”末节里面,有一处将辅音字母次序规范化的代码。这段代码其实并不难懂得。然则在中文版的翻译中,可能是因为排版者的不警惕忽视,造成了排版错误。


    在中文版的傍边,这段代码是如许的:



    >>>mappings= [(phf), (ghtt), (^knn), (qukw),
    
    ... (
    [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 = [(phf), (ghtt), (^knn), (qukw),
    
    ... (
    [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



    再次感激热情翻译作者为我们带来的入门经典作品!

    我们永远不要期待别人的拯救,只有自己才能升华自己。自己已准备好了多少容量,方能吸引对等的人与我们相遇,否则再美好的人出现、再动人的事情降临身边,我们也没有能量去理解与珍惜,终将擦肩而过。—— 姚谦《品味》
    分享到: