首页 > 解决方案 > 优化 spacy 中的单个词库形式提取(词形还原)

问题描述

我希望在不使用上下文信息的情况下将单词简化为其基本形式。我尝试了 spacy,这需要用 nlp 来获得单个单词的基本形式,但这会增加执行时间。

我已经阅读了这篇文章,其中禁用解析器和 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 作为额外的参数。

标签: spacylemmatization

解决方案


如果您只需要查找表中的引理,您可以安装查找表并初始化仅包含标记器的非常基本的管道。如果安装了查找表,token.lemma_将在表中查找表格。

安装查找表(否则仅保存在提供的模型中,不包含在主spacy包中以节省空间):

pip install spacy[lookups]

标记化和词形还原:

import spacy

nlp = spacy.blank("en")
assert nlp("doing")[0].lemma_ == "do"
assert nlp("done")[0].lemma_ == "do"

推荐阅读