Python 从SpaCy获取标记列表

Python 从SpaCy获取标记列表,python,spacy,Python,Spacy,SpaCy是否提供了获取POS标签列表的方法?例如,我可以编写以下代码: test1 = "The brown fox is pretty." doc1 = nlp(test1) for word in doc1: print(word.tag_) 此代码生成以下输出: DT JJ NN VBZ JJ . 我想得到这样一份清单: ["DT","JJ","NN","VBZ","

SpaCy是否提供了获取POS标签列表的方法?例如,我可以编写以下代码:

test1 = "The brown fox is pretty."
doc1 = nlp(test1)
for word in doc1:
    print(word.tag_)
此代码生成以下输出:

DT
JJ
NN
VBZ
JJ
.
我想得到这样一份清单:

["DT","JJ","NN","VBZ","JJ","."]

显然,我可以编写代码来创建列表,但每次这样做似乎效率低下。我原以为SpaCy提供了一种获取列表的简单方法,但到目前为止,我还没有找到一个示例或解决方法。有人知道怎么做吗?

您可以尝试将标签列表提取添加为管道的一部分,并创建 在文档级别。 我不知道这在性能方面是否更有效,但您将能够使用该扩展访问标记

也许是这样的,, 代码:

import spacy
nlp = spacy.load("en_core_web_md")
def tag_list_component(doc):
    tags = [token.tag_ for token in doc]
    doc.set_extension('tags_', default=False, force=True)
    doc._.tags_ = tags
    
    return doc

if(nlp.has_pipe("tag_list_pipe")):
    nlp.remove_pipe("tag_list_pipe")
nlp.add_pipe(tag_list_component, name="tag_list_pipe")

doc = nlp("This is sparta!")
print(doc._.tags_)
doc = nlp("Brown fox is pretty!")
print(doc._.tags_)
['DT', 'VBZ', 'NNP', '.']
['NNP', 'NN', 'VBZ', 'JJ', '.']
输出:

import spacy
nlp = spacy.load("en_core_web_md")
def tag_list_component(doc):
    tags = [token.tag_ for token in doc]
    doc.set_extension('tags_', default=False, force=True)
    doc._.tags_ = tags
    
    return doc

if(nlp.has_pipe("tag_list_pipe")):
    nlp.remove_pipe("tag_list_pipe")
nlp.add_pipe(tag_list_component, name="tag_list_pipe")

doc = nlp("This is sparta!")
print(doc._.tags_)
doc = nlp("Brown fox is pretty!")
print(doc._.tags_)
['DT', 'VBZ', 'NNP', '.']
['NNP', 'NN', 'VBZ', 'JJ', '.']

tags=[word.tag uu for word in doc]
真的这么低效吗?嗨,Kriograbek,这段代码不是低效的,除非SpaCy的模型中已经有一个列表,那么我就不需要为我在大量文本中评估的每一段文本创建自己的列表。如果SpaCy中没有任何内容,那么您的代码正是我需要做的。