【问题标题】:Need a python module for stemming of text documents需要一个 python 模块来提取文本文档
【发布时间】:2012-05-09 07:25:12
【问题描述】:

我需要一个好的 python 模块来在预处理阶段提取文本文档。

我找到了这个

http://pypi.python.org/pypi/PyStemmer/1.0.1

但我在提供的链接中找不到文档。

我有人知道在哪里可以找到文档或任何其他好的词干算法,请帮忙。

【问题讨论】:

    标签: python module preprocessor nlp stemming


    【解决方案1】:

    你可以试试NLTK

    >>> from nltk import PorterStemmer
    >>> PorterStemmer().stem('complications')
    

    【讨论】:

    • PorterStemmer 不是在 1980 年代开发的吗?肯定有更高级的选项吗?
    • 你说得对,还有其他词干分析器。从Natural Language Processing with Python section on stemmers 的预览中,他们将 Lancaster 与 Porter 进行了简单的比较,然后声明“词干提取不是一个定义明确的过程,我们通常会选择最适合我们心目中的应用程序的词干分析器。Porter Stemmer 是如果您正在为某些文本编制索引并希望支持使用其他形式的单词进行搜索,这是一个不错的选择。”
    【解决方案2】:

    Python 词干提取模块实现了各种词干提取算法,例如 Porter、Porter2、Paice-Husk 和 Lovins。 http://pypi.python.org/pypi/stemming/1.0

        >> from stemming.porter2 import stem
        >> stem("factionally")
        faction
    

    【讨论】:

    • 请注意,这是一个纯 python 实现,并且在规模上的执行速度比 PyStemmer 之类的东西要慢,后者是快速 C 实现的包装器
    【解决方案3】:

    这里讨论的所有这些词干分析器都是算法词干分析器,因此它们总是会产生意想不到的结果,例如

    In [3]: from nltk.stem.porter import *
    
    In [4]: stemmer = PorterStemmer()
    
    In [5]: stemmer.stem('identified')
    Out[5]: u'identifi'
    
    In [6]: stemmer.stem('nonsensical')
    Out[6]: u'nonsens'
    

    要正确获取词根,需要一个基于字典的词干分析器,例如 Hunspell Stemmer。下面是 link 中的一个 python 实现。示例代码在这里

    >>> import hunspell
    >>> hobj = hunspell.HunSpell('/usr/share/myspell/en_US.dic', '/usr/share/myspell/en_US.aff')
    >>> hobj.spell('spookie')
    False
    >>> hobj.suggest('spookie')
    ['spookier', 'spookiness', 'spooky', 'spook', 'spoonbill']
    >>> hobj.spell('spooky')
    True
    >>> hobj.analyze('linked')
    [' st:link fl:D']
    >>> hobj.stem('linked')
    ['link']
    

    【讨论】:

    • -1:词干分析器的目标不是找到词根(或词形还原,nltk 也有一个模块),而是找到其他词形变化也会缩短的词的缩短版本到。词干分析器是否找不到词根并不重要;只要stem('nonsense') == stem('nonsensical') != stem('bananas')就可以了。
    【解决方案4】:

    【讨论】:

      【解决方案5】:

      用于主题建模的 gensim package 带有 Porter Stemmer 算法:

      >>> from gensim import parsing
      >>> gensim.parsing.stem_text("trying writing nonsense")
      'try write nonsens'
      

      PorterStemmer 是在gensim 中实现的唯一词干提取选项。

      附注:我可以想象(无需进一步参考)大多数与文本挖掘相关的模块都有自己的实现,用于简单的预处理过程,例如 Porter 的词干提取、空格删除和停用词删除。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-10
        • 1970-01-01
        • 2023-04-07
        • 1970-01-01
        • 1970-01-01
        • 2011-12-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多