从词干(stemming)中获取词

Get the word from stem (stemming)

我正在使用 porter stemmer 来获取我的话的词干。

from nltk.stem.porter import PorterStemmer
stemmer = PorterStemmer()
def stem_tokens(tokens, stemmer):
    stemmed = []
    for item in tokens:
        stemmed.append(stemmer.stem(item))
    return stemmed

现在,我想知道从词干中提取一些词以使其可读的可能性。例如environenvironmenteduceducation等。是否可以做到?

什么,所以你想取一个词干并将其映射到词典中的可能词列表,这些词可以追溯到它?

这很困难,因为词干提取过程是有损的,而且它不是 1:1 转换。

也就是说,在某些情况下,例如 environ -> {environment, environments, environmental}educ -> {educate, educational, education, educated, educating},您可以使用 trie 结构来进行前缀查找。对于像 happi 这样必须映射回 happy

的词干,事情会变得更有趣

在一般情况下,您必须从字典开始,然后通过提取每个词并将词干映射回索引中的源词来生成倒排索引。使用倒排索引,您可以查找给定词干的匹配项。

希望这对您有所帮助..

正如@MikeDinescu 所解释的那样,词干提取是有损的,"un-stemming" 并不是那么简单。

但是假设您有一个固定的词汇列表和一个词干列表,您可以将每个词干与词汇表中的所有条目进行比较,并计算某种字符串距离。

这是一个例子https://gist.github.com/alvations/a4a6e0cc24d2fd9aff86