gpt4 book ai didi

python - python中动词词干的问题

转载 作者:行者123 更新时间:2023-11-28 19:43:24 25 4
gpt4 key购买 nike

我想找到动词的词干。我将要删除的后缀放在一个变量中。问题是它只删除列表中的第一项,而不删除其余项,并返回没有词干的动词。我应该如何更改它才能读取列表中的所有项目?

def stemming (verb):
suffix=["ing", "ed", "es", "s"]
for i in suffix:
stem=verb.replace(i, "")
return stem
i+=1

>>> stemming ("wanting")
'want'
>>> stemming ("wanted")
'wanted'

最佳答案

因为你返回太早了。 Python 在关闭函数中遇到 return 的那一刻;它立即返回给被调用者(调用词干提取的函数)。

将函数 词干提取 更改为:

def stemming (verb):
suffixs = ["ing", "ed", "es", "s"]
for suffix in suffixs:
stem = verb.replace(suffix, "")
return stem # XXX: Moving the return outside of the loop

你也不需要在这里递增i;无论如何,它甚至都不是整数;您正在遍历字符串列表。 suffixes 的每次迭代(我重命名了一些变量以使其更具可读性)将依次成为列表中指定的字符串。


如果您真的想要使用计数器变体来索引后缀:

def stemming (verb):
suffixs = ["ing", "ed", "es", "s"]
i = 0
while i < len(suffixes):
stem = verb.replace(suffixs[i], "")
i += 1
return stem

但是;这真的没有必要,因为您可以在列表上使用正常的和更 Pythonic 的迭代:for suffix in suffixes:


我也相信你的功能也意味着:

代码:

def stemming(verb):
suffixs = ["ing", "ed", "es", "s"]
for suffix in suffixs:
verb = verb.replace(suffix, "")
return verb

输出:

>>> stemming("singing")
''

想想吧! :)


顺便说一句;你真的应该使用nltk除非您只是出于教育目的这样做,否则无论如何都是为了阻止。

参见:nltk.stem

示例:

>>> from nltk.stem.lancaster import LancasterStemmer
>>> st = LancasterStemmer()
>>> st.stem("singing")
'sing' # NOT an empty string!!!
>>> st.stem("wanting")
'want'
>>> st.stem("wanted")
'want'

关于python - python中动词词干的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30915247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com