0

如果您在 Google 中搜索某些内容并使用“running”之类的词,Google 会很聪明地匹配“run”或“runs”。这是因为搜索引擎在匹配单词之前会执行所谓的词干提取。

在英语中,词干提取涉及从单词中删除常见的词尾以产生基本词。很难想出一套适用于所有单词的完整规则,但这个简化的规则集做得很好:

如果单词以大写字母开头,则原样输出。如果单词以 's'、'ed' 或 'ing' 结尾,则删除这些字母,但如果生成的词干单词只有 1 或 2 个字母长(例如从 sing 中删除 ing),则使用原始单词。你的程序应该读取输入的一个单词并打印出相应的词干。例如:

Enter the word: states
state

与您的程序交互的另一个示例是:

Enter the word: rowed
row

请记住,大写的单词不应该是词干:

Enter the word: James
James

词干后的词也不应该变得太短:

Enter the word: sing
sing

这是代码:

word = input("Enter the word:") 
x = 'ing' 
y = 'ed' 
z = 's' 
first = word[:1] 
last = word[-1:] 
uppercase = first.upper 
if word == uppercase: 
 print("")

elif (x in word) == True: 
 word = (word.replace('ing',''))
 print(word)

elif (y in word) == True: 
 word = (word.replace('ed',''))
 print(word)

elif (z in word) == True: 
 word = (word.replace('s',''))
 print(word)
4

2 回答 2

1

我看到两个选项。要么这是一个家庭作业问题,在这种情况下 - 请尝试解决你自己的家庭作业。

另一种情况 - 你在现实生活中需要这个。如果是这样,请查看用于 Python 自然语言处理需求的 NLTK。特别参见http://nltk.org/api/nltk.stem.html

于 2013-08-25T04:30:16.470 回答
0

安装 NLTK 工具包并尝试这个

from nltk.stem.porter import PorterStemmer
PorterStemmer.stem_word(word)
于 2013-09-12T10:59:15.353 回答