我有一个空间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
中的每个令牌转换为其引理?
答案 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 .']