Python Spacy的Lemmatizer:以最高效率获得引理的所有选项

时间:2018-11-05 15:45:10

标签: python performance nlp spacy lemmatization

使用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”管道,并且不应该删除“ tagger”,但是没有收到有关解析器等的直接答案。通过语料库的模拟,结果似乎相同,但我认为“解析器”或“ 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上有很好的答案,那么我可以根据需要将“定格”的单词用于其他需求。

谢谢!

0 个答案:

没有答案