所有可能的字形完成(生物医学)词的词干

时间:2015-07-23 19:30:27

标签: python r nlp bioinformatics text-mining

我熟悉R中tm包的词干和完成。

我试图找出一种快速而肮脏的方法来查找给定单词的所有变体(在某些语料库中)。例如,我想得到白血球和#34; ;和" leuckocytic"如果我的输入是"白细胞"。

如果我现在必须这样做,我可能只会选择:

library(tm)
library(RWeka)
dictionary <- unique(unlist(lapply(crude, words)))
grep(pattern = LovinsStemmer("company"), 
    ignore.case = T, x = dictionary, value = T)

我使用了Lovins,因为Snowball的Porter看起来不够激进。

我对其他词干分析器,脚本语言(Python?)或完全不同的方法持开放态度。

1 个答案:

答案 0 :(得分:1)

此解决方案需要预处理您的语料库。但是一旦完成,它就是一个非常快速的字典查找。

from_proto()

对于from collections import defaultdict from stemming.porter2 import stem with open('/usr/share/dict/words') as f: words = f.read().splitlines() stems = defaultdict(list) for word in words: word_stem = stem(word) stems[word_stem].append(word) if __name__ == '__main__': word = 'leukocyte' word_stem = stem(word) print(stems[word_stem]) 语料库,这会产生结果

/usr/share/dict/words

它使用可以随

一起安装的stemming模块
['leukocyte', "leukocyte's", 'leukocytes']