SpaCy:你如何检查两个特定实体是否出现在一个句子中?

SpaCy: How do you check if two specific entities occur in a sentence?

我需要从一个句子列表(字符串)中提取所有包含两个特定实体的句子,并将它们存储在一个新列表中。我尝试使用的代码看起来像这样,但不幸的是它不起作用。我正在使用 Python 和 SpaCy。

sents_required = []

for s in sentences:
    if token.ent_type_=='SPECIES' in s and token.ent_type_=='KEYWORD' in s:            
        sents_required.append(s)

非常感谢您的帮助。

您声明条件的方式是 SQL-like,但这在 Python 中不起作用 - 您需要自己遍历列表并访问数据。有很多方法可以做到这一点,但这里有一个。

for s in sentences:
    etypes = [tok.ent_type_ for tok in s]
    if "SPECIES" in etypes and "KEYWORD" in etypes:
        sents_required.append(s)

这段代码对我有用。感谢您的帮助!

sents_required = []

for s in sentences:
    token_types = [token.ent_type_ for token in s]
    if ('SPECIES' in token_types) and ('KEYWORD' in token_types):            
        sents_required.append(s)