【问题标题】:stemming words in pythonpython中的词干提取
【发布时间】:2015-05-26 12:23:56
【问题描述】:

我正在使用这段代码来词干,这是它的工作原理,首先有一个后缀列表,程序检查单词的结尾是否与列表中的结尾相同,如果是肯定的,它会删除后缀,但是,当我运行代码时,我得到了这个结果:

suffixes = ['ing']
def stem(word):
for suff in suffixes:
    return word[:-len(suff)]

stem ('having')
print (stem)

【问题讨论】:

  • “程序检查单词的结尾是否与列表中的单词相同” - 不,它没有...此外,词干提取还有更多只是剥离'ing' - 如果你需要这样做,请查看nltk
  • anmol_uppal 写了正确的答案,但正如 jonsrharpe 建议的那样,我会看看 nltk 或这个 pypi.python.org/pypi/stemming/1.0
  • 实际上我正在为波斯语编写一个词干分析器,这只是部分代码不起作用,我不想为此使用 NLTK。

标签: python nlp stemming


【解决方案1】:

尝试查看 Porter Stemmer (http://tartarus.org/martin/PorterStemmer/),Python 也有一个。

【讨论】:

    【解决方案2】:

    对于给定列表中的每个后缀,您可以检查给定单词是否以任何给定后缀结尾,如果是则删除后缀,否则返回单词。

    suffixes = ['ing']
    def stem(word):
        for suff in suffixes:
            if word.endswith(suff):
                return word[:-len(suff)]
    
        return word
    
    print(stem ('having'))
    >>> hav
    

    【讨论】:

    • 这只会在返回前检查第一个后缀。列表理解中也存在类似的问题。
    • 我得到语法错误 ==> 打印词干 ('have') ^ SyntaxError: invalid syntax
    • 你在使用 Python3 @adelrahimi 吗?
    • 编辑了@adelrahimi,还是看不懂投反对票的意思?
    • @anmol_uppal 我没有否决你的答案,我什至没有足够的声誉来投票 Stackoverflow,无论如何,我如何在 python 3 中使用此代码?
    猜你喜欢
    • 2017-11-18
    • 2013-05-25
    • 1970-01-01
    • 2018-06-17
    • 1970-01-01
    • 2017-06-21
    • 1970-01-01
    • 2016-09-23
    • 2014-08-30
    相关资源
    最近更新 更多