如何确定令牌是否是 Spacy 内实体的一部分?

Sak*_*aku 9 python spacy

我有

import spacy
nlp = spacy.load("en_core_web_lg")
line = "Rio de Janeiro is the capital of.."
doc = nlp(line)
for tok in doc:
    printf(tok.lemma_)
for ent in doc.ents:
    printf(e.lemma_)
Run Code Online (Sandbox Code Playgroud)

我想获得维基化:“[[里约热内卢]] [[be|is]] [[the]] [[capital]] [[of]]..”如何确定令牌“Rio”是否是实体的一部分“里约热内卢”?

tho*_*onc 8

使用ent_typeorent_type_属性,如果值不是空字符串,则它是一个实体。

\n

编辑:对于属性ent_iobent_iob_ \xe2\x80\x9cB\xe2\x80\x9d表示令牌开始一个实体,\xe2\x80\x9cI\xe2\x80\x9d表示它在实体内部,\xe2\x80\x9cO\ xe2\x80\x9d表示在实体之外,“”表示没有设置实体标签。

\n
 import spacy\n    nlp = spacy.load("en_core_web_lg")\n    line = "Rio de Janeiro is the capital of.."\n    doc = nlp(line)\n    for tok in doc:\n        print(tok, tok.ent_type_, tok.ent_iob_)\n
Run Code Online (Sandbox Code Playgroud)\n

输出:

\n
Rio GPE B\nde GPE I\nJaneiro GPE I\nis  O\nthe  O\ncapital  O\nof  O\n..  O\n
Run Code Online (Sandbox Code Playgroud)\n