【发布时间】:2020-06-20 06:05:21
【问题描述】:
我希望在不使用上下文信息的情况下将单词简化为其基本形式。我尝试了 spacy,这需要用 nlp 来获得单个单词的基本形式,但这会增加执行时间。
我浏览过this 帖子,其中禁用解析器和 NER 管道组件在一定程度上加快了执行时间,但我只想要一个进程直接查找单词及其引理形式的数据库(基本上是一个不考虑上下文信息的词
my_list = ["doing", "done", "did", "do"]
for my_word in my_list:
doc = nlp(my_word, disable=['parser', 'ner'])
for w in doc:
print("my_word {}, base_form {}".format(w, w.lemma_))
想要的输出
my_word doing, base_form do
my_word done, base_form do
my_word did, base_form do
my_word do, base_form do
注意:我也尝试了 spacy.lemmatizer,但这并没有给出预期的结果,并且需要 pos 作为附加参数。
【问题讨论】:
-
Lemmatization 是获取词根实际需要的,但任何 NLP 库的 Lemmatization 都有点昂贵,因为它需要查找字典以获取给定单词的词形还原词。因此,如果您传递 n 大小的单词列表,它首先需要找到其适当的 POS 标签,然后查找带有单词、POS 标签的字典。如果您对如何完成词形还原感兴趣,这里是 OpenNLP 的示例代码(与 NLTK 等相同的策略)
标签: spacy lemmatization