zoukankan      html  css  js  c++  java
  • 【问题和解决《NLTK PYTHON》自然语言处理中文翻译版中的一处代码错误

        我也是一名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'

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

  • 相关阅读:
    Connection termination(by client)” 错误的处理方法
    Loadrunner教程读后感-VuGen
    通过HP Loadrunner VuGen来录制安卓的应用
    Test Android with QTP
    Junit单步调试
    魔法方法
    手写配置文件
    理解self与this
    幂等性
    Python assert作用
  • 原文地址:https://www.cnblogs.com/createMoMo/p/3087711.html
Copyright © 2011-2022 走看看