用于将句子(自然语言)解析为场景图(符号表示)的 python 工具包。
项目描述
场景图解析器
SceneGraphParser ( sng_parser
) 是一个 python 工具包,用于基于依赖解析将句子(自然语言)解析为场景图(作为符号表示)。这个项目的灵感来自于斯坦福场景图解析器。
与斯坦福版本不同的是,这个解析器是完全由 Python 编写的。它具有易于使用的用户界面和易于配置的设计。它将句子解析为图形,其中节点是名词(带有诸如行列式或形容词等修饰语),边是名词之间的关系。有关详细信息,请参阅示例部分。
亮点:该项目仍在开发中。所有 API 都可能发生任何变化。
注意:您可能会注意到,解析是由解析树上的一组人工编写的规则完成的。因此,我们需要每个人的帮助来收集当前程序的失败/角落案例。任何类型的报告或帮助都应该受到欢迎。
这个 repo 是为:
统一视觉语义嵌入:用结构化意义表示桥接视觉和语言
Hao Wu,
Jiayuan Mao , Yufeng Zhang,
Yuning Jiang ,
Lei Li ,
Weiwei Sun和
Wei-Ying Ma
在计算机视觉和模式会议上2019 年表彰 (CVPR) (口头报告)
如果您觉得舒服,请考虑引用我们的论文 :)。这个 repo 和原始的 Stanford Scene Graph Parser 之间的区别可以在#7中找到。
安装
可以使用 pip 安装该软件包。由于目前只支持spaCy作为Backend,所以安装后需要下载英文包。
pip install SceneGraphParser
python -m spacy download en # to use the parser for English
例子
使用此工具的最简单方法是调用该parse
函数。在设计上,sng_parser
支持不同的后端。目前,我们只支持 spaCy 后端。
pip install spacy
>>> import sng_parser
>>> graph = sng_parser.parse('A woman is playing the piano in the room.')
>>> from pprint import pprint
>>> pprint(graph)
{'entities': [{'head': 'woman',
'lemma_head': 'woman',
'lemma_span': 'a woman',
'modifiers': [{'dep': 'det', 'lemma_span': 'a', 'span': 'A'}],
'span': 'A woman'},
{'head': 'piano',
'lemma_head': 'piano',
'lemma_span': 'the piano',
'modifiers': [{'dep': 'det',
'lemma_span': 'the',
'span': 'the'}],
'span': 'the piano'},
{'head': 'room',
'lemma_head': 'room',
'lemma_span': 'the room',
'modifiers': [{'dep': 'det',
'lemma_span': 'the',
'span': 'the'}],
'span': 'the room'}],
'relations': [{'object': 1, 'relation': 'playing', 'subject': 0},
{'object': 2, 'relation': 'in', 'subject': 0}]}
>>> sng_parser.tprint(graph) # we provide a tabular visualization of the graph.
Entities:
+--------+-----------+-------------+
| Head | Span | Modifiers |
|--------+-----------+-------------|
| woman | a woman | a |
| piano | the piano | the |
| room | the room | the |
+--------+-----------+-------------+
Relations:
+-----------+------------+----------+
| Subject | Relation | Object |
|-----------+------------+----------|
| woman | playing | piano |
| woman | in | room |
+-----------+------------+----------+
或者,您可以配置自己的解析器:
>>> import sng_parser
>>> parser = sng_parser.Parser('spacy', model='en') # the positional argument specifies the backend, and the keyward arguments are for the backend initialization.
>>> graph = parser.parse('A woman is playing the piano in the room.')
图表规格
我们使用纯pythonic dict
andlist
来表示一个图。尽管这种灵活性可能会带来一些不必要的问题,但我们更喜欢这种表示,因为:
- 目前,该工具仍在开发中,这些 API 可能会发生变化。
- 这使得该工具易于集成到任何基于 python 的项目中。您不需要关心酸洗/解酸结果。在代码中的任何地方使用它!
生成的场景图符合以下规范:
{
'entities': [ # a list of entities
{
'span': "the full span of a noun phrase",
'lemma_span': "the lemmatized version of the span",
'head': "the head noun",
'lemma_head': "the lemmatized version of the head noun",
'modifiers': [
{
'dep': "the dependency type",
'span': "the span of the modifier",
'lemma_span': "the lemmatized version of the span"
},
# other modifiers...
]
},
# other entities...
],
'relations': [ # a list of relations
# the subject and object fields are sometimes called "head" and "tail" in relation extraction papers.
{
'subject': "the entity id of the subject",
'object': "the entity id of the object",
'relation': "the relation"
}
# other relations...
]
}
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置分布
SceneGraphParser -0.1.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5ccf22410744dfd65fe865cd0dd51ba9c14c28313c57cecbd724f40d9723cdfa |
|
MD5 | c3e3802a942952e3d691c411a878f029 |
|
布莱克2-256 | 9bdf8381efe4075e737922cd24508ff92476402c1a9e6ca826e945981bba103c |
SceneGraphParser -0.1.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c7269b21c00cd1ae94a3678a321a22f47e0406adad4e9df4c296da40786275cb |
|
MD5 | 4dfb376ce2624bcc88ae9f6af20408b6 |
|
布莱克2-256 | 2079ccb4130a946c1c31703352e7f46c072eaa975ff50080f4444f03f6861650 |