Python 在spaCy中,解析句子时如何将专有名词保持在一起?
我正在使用spaCy 2.3.2和Python 3.8。我想分析一个句子,把专有名词放在一起。我可以使用下面的代码来提取专有名词Python 在spaCy中,解析句子时如何将专有名词保持在一起?,python,python-3.x,spacy,Python,Python 3.x,Spacy,我正在使用spaCy 2.3.2和Python 3.8。我想分析一个句子,把专有名词放在一起。我可以使用下面的代码来提取专有名词 doc = nlp("Jill laughed at John Johnson.") entity_types = ((ent.text, ent.label_) for ent in doc.ents) print(tabulate(entity_types, headers=['Entity', 'Entity Type'])) print(
doc = nlp("Jill laughed at John Johnson.")
entity_types = ((ent.text, ent.label_) for ent in doc.ents)
print(tabulate(entity_types, headers=['Entity', 'Entity Type']))
print()
产生
Entity Entity Type
------------ -------------
Jill PERSON
John Johnson PERSON
然后我可以用它来提取我句子中的所有标记
token_entity_info = ((token.text, token.ent_iob_, token.ent_type_,) for token in doc)
print(tabulate(token_entity_info, headers=['Token', 'IOB Annotation', 'Entity Type']))
这就产生了
Token IOB Annotation Entity Type
------- ---------------- -------------
Jill B PERSON
laughed O
at O
John B PERSON
Johnson I PERSON
但我如何组合或修改上述内容,以便
Token
--------
Jill
laughed
at
John Johnson
您希望合并命名实体。您可以使用
merge_entities
管道组件。发件人:
您希望合并命名实体。您可以使用
merge_entities
管道组件。发件人:
请提供预期的价格。显示中间结果与预期结果的偏差。我们应该能够将单个代码块粘贴到文件中,运行它,并重现您的问题。特别是,我们不知道未定义函数的作用。我使用的是Stanford软件包,它已经把名词短语放在一起了。@Prune这里的示例代码完全适合他们所做的事情,他们没有做错。@polm23我想Prune要问的是关于
nlp
和tablate
函数的导入和初始化。对于那些熟悉这些工具的人来说,它可能是标准的,但是仍然需要精确的MRE。我想这在技术上对MRE是必要的,但是spaCy对nlp
对象有一个非常一致的初始化过程,制表的行为与这个问题无关。我不认为numpy问题会因为省略了np
导入numpy而受到批评。定义确实是缺少的部分<代码>nlp几乎不是唯一的名称。对于那些只知道OP正在使用的软件包的人来说,这可能很清楚;作为堆栈溢出的未来搜索项,它需要缺少的上下文。请提供预期的上下文。显示中间结果与预期结果的偏差。我们应该能够将单个代码块粘贴到文件中,运行它,并重现您的问题。特别是,我们不知道未定义函数的作用。我使用的是Stanford软件包,它已经把名词短语放在一起了。@Prune这里的示例代码完全适合他们所做的事情,他们没有做错。@polm23我想Prune要问的是关于nlp
和tablate
函数的导入和初始化。对于那些熟悉这些工具的人来说,它可能是标准的,但是仍然需要精确的MRE。我想这在技术上对MRE是必要的,但是spaCy对nlp
对象有一个非常一致的初始化过程,制表的行为与这个问题无关。我不认为numpy问题会因为省略了np
导入numpy而受到批评。定义确实是缺少的部分<代码>nlp几乎不是唯一的名称。对于那些只知道OP正在使用的软件包的人来说,这可能很清楚;作为堆栈溢出的未来搜索项,它需要缺少上下文。
texts = [t.text for t in nlp("I like David Bowie")]
assert texts == ["I", "like", "David", "Bowie"]
merge_ents = nlp.create_pipe("merge_entities")
nlp.add_pipe(merge_ents)
texts = [t.text for t in nlp("I like David Bowie")]
assert texts == ["I", "like", "David Bowie"]