首页 > 解决方案 > Python Spacy 的 Lemmatizer:以最高效率获取所有引理选项

问题描述

使用 spacy 时,令牌 (lemma_) 的引理取决于 POS。因此,一个特定的字符串可以有多个引理。例如:

import spacy
nlp = spacy.load('en')
for tok in nlp(u'He leaves early'):
    if tok.text == 'leaves':
        print (tok, tok.lemma_)
for tok in nlp(u'These are green leaves'):
    if tok.text == 'leaves':
        print (tok, tok.lemma_) 

将产生“叶子”的引理可以是“离开”或“叶子”,具体取决于上下文。我感兴趣的是:

1) 无论上下文如何,获取特定字符串的所有可能引理。这意味着,在不依赖 POS 或异常的情况下应用 Lemmatizer,只需获得所有可行的选项。

此外,但独立地,我还想应用标记化并获得“正确”的引理。

2) 尽可能高效地在大型语料库中运行仅标记化和词形还原器,而不会损坏词形还原器。例如,我知道我可以删除“ner”管道,并且不应该删除“标记器”,但没有收到关于解析器等的直接答案。从对语料库的模拟来看,结果似乎是相同的,但我认为'parser'或'sentenzicer'应该影响?我目前的代码是:

import multiprocessing
our_num_threads = multiprocessing.cpu_count()
corpus = [u'this is a text', u'this is another text'] ## just an example
nlp = spacy.load('en', disable = ['ner', 'textcat', 'similarity', 'merge_noun_chunks', 'merge_entities', 'tensorizer', 'parser', 'sbd', 'sentencizer'])
nlp.pipe(corpus, n_threads = our_num_threads)

如果我对 1+2 有一个好的答案,那么我可以根据我的需要使用“词形还原”的词,考虑其他可能的变体。

谢谢!

标签: pythonperformancenlpspacylemmatization

解决方案


推荐阅读