Python 词干提取问题:错误的词干

0 投票
1 回答
2283 浏览
提问于 2025-04-18 16:28

你好,我正在用Python的词干提取器处理单词。我试过Porter和Lancaster这两种方法,但它们都有同样的问题。它们无法正确处理以“er”或“e”结尾的单词。

比如,它们处理的结果是

computer -->  comput

rotate   -->  rotat

这是代码的一部分

line=line.lower()
line=re.sub(r'[^a-z0-9 ]',' ',line)
line=line.split()
line=[x for x in line if x not in stops]
line=[ porter.stem(word, 0, len(word)-1) for word in line]
# or 'line=[ st.stem(word) for word in line]'
return line

有没有什么办法可以解决这个问题?

1 个回答

4

引用一下维基百科上的内容,在计算语言学中,词干是指一个词中即使在变化形式时也不会改变的部分,而词元是这个词的基本形式。比如,单词“produced”的词元是“produce”,但是它的词干是“produc”,这是因为还有像“production”这样的词。所以你的代码可能是给你正确的结果。你似乎期待得到一个词元,但词干提取器给出的不是这个(除非词元恰好等于词干)。

撰写回答