如果您在Google中搜索某些内容并使用“正在运行”这样的字词,Google就足够聪明地匹配“运行”或“运行”。那是因为搜索引擎在匹配单词之前会执行所谓的词干化。
在英语中,词干化涉及从单词中删除共同结尾以产生基本单词。很难想出一套适用于所有单词的完整规则,但这个简化的集合做得非常好:
如果单词以大写字母开头,则输出它而不做任何更改。 如果单词以's','ed'或'ing'结尾,则删除这些字母,但如果得到的词干只有1或2个字母长(例如从唱歌中删除),请使用原始单词。 您的程序应该读取一个输入的单词并打印出相应的词干。例如:
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)
答案 0 :(得分:1)
我看到两个选项。这是一个家庭作业问题,在这种情况下 - 请尝试解决你自己的作业。
另一种情况 - 你在现实生活中需要这个。如果是这样,请查看NLTK的Python自然语言处理需求。特别参见http://nltk.org/api/nltk.stem.html
答案 1 :(得分:0)
安装NLTK工具包 并尝试这个
from nltk.stem.porter import PorterStemmer
PorterStemmer.stem_word(word)