从词干(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
现在,我想知道从词干中提取一些词以使其可读的可能性。例如environ
到environment
或educ
到education
等。是否可以做到?
什么,所以你想取一个词干并将其映射到词典中的可能词列表,这些词可以追溯到它?
这很困难,因为词干提取过程是有损的,而且它不是 1:1 转换。
也就是说,在某些情况下,例如 environ -> {environment, environments, environmental}
和 educ -> {educate, educational, education, educated, educating}
,您可以使用 trie 结构来进行前缀查找。对于像 happi
这样必须映射回 happy
的词干,事情会变得更有趣
在一般情况下,您必须从字典开始,然后通过提取每个词并将词干映射回索引中的源词来生成倒排索引。使用倒排索引,您可以查找给定词干的匹配项。
希望这对您有所帮助..
正如@MikeDinescu 所解释的那样,词干提取是有损的,"un-stemming" 并不是那么简单。
但是假设您有一个固定的词汇列表和一个词干列表,您可以将每个词干与词汇表中的所有条目进行比较,并计算某种字符串距离。
这是一个例子https://gist.github.com/alvations/a4a6e0cc24d2fd9aff86
我正在使用 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
现在,我想知道从词干中提取一些词以使其可读的可能性。例如environ
到environment
或educ
到education
等。是否可以做到?
什么,所以你想取一个词干并将其映射到词典中的可能词列表,这些词可以追溯到它?
这很困难,因为词干提取过程是有损的,而且它不是 1:1 转换。
也就是说,在某些情况下,例如 environ -> {environment, environments, environmental}
和 educ -> {educate, educational, education, educated, educating}
,您可以使用 trie 结构来进行前缀查找。对于像 happi
这样必须映射回 happy
在一般情况下,您必须从字典开始,然后通过提取每个词并将词干映射回索引中的源词来生成倒排索引。使用倒排索引,您可以查找给定词干的匹配项。
希望这对您有所帮助..
正如@MikeDinescu 所解释的那样,词干提取是有损的,"un-stemming" 并不是那么简单。
但是假设您有一个固定的词汇列表和一个词干列表,您可以将每个词干与词汇表中的所有条目进行比较,并计算某种字符串距离。
这是一个例子https://gist.github.com/alvations/a4a6e0cc24d2fd9aff86