从令牌中仅提取某些命名实体

Extract Only Certain Named Entities From Tokens

快速提问(希望如此)。除了带有 CARDINAL 标签(标签为 397)的令牌之外,我是否有可能获得令牌的命名实体。下面是我的代码:

spacy_model = spacy.load('en-core-web-lg')
f = open('temp.txt')
tokens = spacy_model(f.read())
named_entities = tokens.ents #Except where named_entities.label = 397

这可能吗?任何帮助将不胜感激。

您可以使用列表理解过滤掉实体:

named_entities = [t for t in tokens.ents if t.label_ != 'CARDINAL']

这是一个测试:

import spacy
nlp = spacy.load("en_core_web_sm")
tokens = nlp('The basket costs . I bought 6.')
print([(ent.text, ent.label_) for ent in tokens.ents])
# => [('10', 'MONEY'), ('6', 'CARDINAL')]
print([t for t in tokens.ents if t.label_ != 'CARDINAL'])
# => [10]