Python的nltk库中是否有一种方法可以反转词干?

4
我有一个NLTK/Python词干列表,想要获得可以创建该词干的可能单词列表。
在Python中,是否有一种方法可以获取一个词干,并获得可以转化为该词干的单词列表?
1个回答

1
据我所知,答案是否定的。根据不同的词干处理器,要想找到一种全面撤销词干提取规则影响的搜索方式可能很困难,其结果大多数情况下会是任何标准都算不上的无效单词。例如,对于 Porter 词干处理器:
from nltk.stem.porter import *
stemmer = PorterStemmer()
stemmer.stem('grabfuled')
# results in "grab" 

因此,反转函数会生成“grabfuled”作为有效单词之一,因为在词干处理过程中连续删除了“-ed”和“-ful”后缀。 但是,如果给定有效的词典,则可以执行以下操作,这与词干提取方法无关:
from nltk.stem.porter import *
from collections import defaultdict

vocab = set(['grab', 'grabbing', 'grabbed', 'run', 'running', 'eat'])

# Here porter stemmer, but can be any other stemmer too
stemmer = PorterStemmer()

d = defaultdict(set)
for v in vocab:
    d[stemmer.stem(v)].add(v)  

print(d)
# defaultdict(<class 'set'>, {'grab': {'grab', 'grabbing', 'grabbed'}, 'eat': {'eat'}, 'run': {'run', 'running'}})

现在我们有一个字典,将词干映射到可以生成它们的有效单词。对于任何词干,我们可以执行以下操作:
print(d['grab'])
# {'grab', 'grabbed', 'grabbing'}

为了建立词汇表,您可以对语料库进行分词,或使用nltk内置的英语单词词典


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接