2015-05-26 32 views
0

我使用这段代码来填词,这里是它是如何工作的,首先有一个后缀列表,程序检查该词的结尾是否与列表中的结尾相同后缀,但是,当我运行代码,我得到这样的结果:在python中填词词组

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

stem ('having') 
print (stem) 
+3

*“程序检查单词的结尾是否与列表中的单词结尾相同”* - 不,它不会...此外,除了剥离“ing”外,还有更多词干 - 如果您需要这样做,看看'nltk'。 – jonrsharpe

+1

anmol_uppal写了正确的答案,但正如jonsrharpe所示,我会看看nltk或https://pypi.python.org/pypi/stemming/1.0 –

+0

其实我正在为波斯语编写一个词干,这是只有一部分代码不起作用,我不想在这方面使用NLTK。 –

回答

0

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

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

    return word 

print(stem ('having')) 
>>> hav 
+1

这只会在返回之前检查第一个后缀。在列表理解中也存在类似的问题。 – interjay

+0

@interjay编辑。 – ZdaR

+0

我得到语法错误==> print stem('having') ^ SyntaxError:无效的语法 –