使用spacy使文档合法化?

时间:2018-08-02 16:16:13

标签: python nlp spacy lemmatization

我有一个空间doc,我想对其进行定形。

例如:

import spacy
nlp = spacy.load('en_core_web_lg')

my_str = 'Python is the greatest language in the world'
doc = nlp(my_str)

如何将doc中的每个令牌转换为其引理?

3 个答案:

答案 0 :(得分:2)

如果不需要管道中的特定组件,例如 NER 解析器,则可以禁用加载它。有时可能会产生很大的不同,并提高加载速度

对于您的案例(使用spaCy合法化文档),您只需要 tagger 组件。

这是示例代码:

import spacy

# keeping only tagger component needed for lemmatization
nlp = spacy.load('en_core_web_lg',  disable=["parser", "ner"])

my_str = 'Python is the greatest language in the world'

doc = nlp(my_str)
words_lemmas_list = [token.lemma_ for token in doc]
print(words_lemmas_list)

输出:

[“ Python”,“ be”,“ the”,“ great”,“ language”,“ in”,“ the”,“ world”]

答案 1 :(得分:1)

每个令牌都有许多属性,您可以遍历文档以访问它们。

例如:[token.lemma_ for token in doc]

如果您想重构句子,可以使用:' '.join([token.lemma_ for token in doc])

有关令牌属性的完整列表,请参见:https://spacy.io/api/token#attributes

答案 2 :(得分:1)

这个答案涵盖了您的文本由多个句子组成的情况。

如果您想获得被词形还原的所有标记的列表,请执行以下操作:

import spacy
nlp = spacy.load('en')
my_str = 'Python is the greatest language in the world. A python is an animal.'
doc = nlp(my_str)

words_lemmata_list = [token.lemma_ for token in doc]
print(words_lemmata_list)
# Output: 
# ['Python', 'be', 'the', 'great', 'language', 'in', 'the', 'world', '.', 
# 'a', 'python', 'be', 'an', 'animal', '.']

如果您想获得每个词形还原的所有句子的列表,请执行以下操作:

sentences_lemmata_list = [sentence.lemma_ for sentence in doc.sents]
print(sentences_lemmata_list)
# Output:
# ['Python be the great language in the world .', 'a python be an animal .']