Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在spaCy中,解析句子时如何将专有名词保持在一起?_Python_Python 3.x_Spacy - Fatal编程技术网

Python 在spaCy中,解析句子时如何将专有名词保持在一起?

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(

我正在使用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()
产生

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"]