Nlp 在Spacy中标记命名实体

Nlp 在Spacy中标记命名实体,nlp,tokenize,spacy,ner,Nlp,Tokenize,Spacy,Ner,谁能帮忙吗 我正在尝试使用Spacy对文档进行标记化,通过Spacy对命名实体进行标记化。例如: “纽约是美国的一个城市” 将标记为: [‘纽约’、‘是’、‘a’、‘城市’、‘在’、‘美国’] 任何关于如何做到这一点的提示都是非常受欢迎的。我已经研究过使用span.merge(),但没有成功,但我对编码还不熟悉,所以可能错过了一些东西 提前感谢使用上下文管理器将实体范围合并为单个标记。将其包装在一个容器中,并将该组件添加到您的语言模型中 import spacy class EntityRet

谁能帮忙吗

我正在尝试使用Spacy对文档进行标记化,通过Spacy对命名实体进行标记化。例如:

“纽约是美国的一个城市”

将标记为:

[‘纽约’、‘是’、‘a’、‘城市’、‘在’、‘美国’]

任何关于如何做到这一点的提示都是非常受欢迎的。我已经研究过使用span.merge(),但没有成功,但我对编码还不熟悉,所以可能错过了一些东西

提前感谢

使用上下文管理器将实体范围合并为单个标记。将其包装在一个容器中,并将该组件添加到您的语言模型中

import spacy

class EntityRetokenizeComponent:
  def __init__(self, nlp):
    pass
  def __call__(self, doc):
    with doc.retokenize() as retokenizer:
        for ent in doc.ents:
            retokenizer.merge(doc[ent.start:ent.end], attrs={"LEMMA": str(doc[ent.start:ent.end])})
    return doc

nlp = spacy.load('en')
retokenizer = EntityRetokenizeComponent(nlp) 
nlp.add_pipe(retokenizer, name='merge_phrases', last=True)

doc = nlp("German Chancellor Angela Merkel and US President Barack Obama "
          "converse in the Oval Office inside the White House in Washington, D.C.")

[tok for tok in doc]

#[German,
# Chancellor,
# Angela Merkel,
# and,
# US,
# President,
# Barack Obama,
# converse,
# in,
# the Oval Office,
# inside,
# the White House,
# in,
# Washington,
# ,,
# D.C.]

到目前为止你有什么代码?您是否使用Spacy的NER标记功能来标识实体标记的开始和结束?我已经取得了一些进展,下面是代码:从Spacy导入Spacy.pipeline导入合并实体打印(“设置管道”)coref\U nlp=Spacy.load('en\u coref\u md')Spacy\u nlp=Spacy.load('en\u coref\u web\u sm')Spacy\u nlp.add\u pipe(合并实体)spacy_nlp.add_pipe(spacy_nlp.create_pipe(‘判刑者’)doc='纽约是美国的一个城市。这是一个令人兴奋的地方,可以参观“print('applicating pipelines')new_doc=spacy_nlp(coref_nlp(doc)。\uu.coref_解析)#用根引用替换共同引用实体,下面是它的标记化方式:doc_array=[]打印('Tokenized doc')新_doc.sents:doc_array.append([(token.text)。如果(不是token.is_stop和token.pos!=“PUNCT”和token.text!='\n')])打印(doc_数组)你对如何改进这一点有什么想法吗?我想分析的主要文件是乔治·布什在9/11后的演讲:请编辑你的问题,将你粘贴在评论中的代码包括在内,使用适当的标记将其格式化为代码。粘贴在评论中的代码很难审核。如果你正确格式化代码并添加到你的问题中,l获得好答案的可能性更高。