用于将penn treebank树转换为通用依赖项和stanford依赖项的python接口
PyStanfordDependencies的Python项目详细描述
用于将Penn Treebank树转换为Universal Dependencies的python接口 还有Stanford Dependencies。
示例用法
首先获取一个StanfordDependencies实例 StanfordDependencies.get_instance():
>>> import StanfordDependencies >>> sd = StanfordDependencies.get_instance(backend='subprocess')
get_instance()有几个选项。backendcan当前 是subprocess或jpype(见下文)。如果你有一个存在的 Stanford CoreNLP或 Stanford Parser jar文件,使用jar_filename参数指向 jar文件。否则,pystanford依赖项将下载一个jar文件 为您保存在本地(~/.local/share/pystanforddeps)。你 可以使用version标志请求特定版本,例如, version='3.4.1'。若要转换树,请使用convert_trees()或 convert_tree()方法(注意,默认情况下,convert_trees()可以 如果要进行批量转换,则速度要快得多)。这些回报 一个句子(一列Token对象)或一列句子(一列 分别为Token个对象的列表:
>>> sent = sd.convert_tree('(S1 (NP (DT some) (JJ blue) (NN moose)))') >>> for token in sent: ... print token ... Token(index=1, form='some', cpos='DT', pos='DT', head=3, deprel='det') Token(index=2, form='blue', cpos='JJ', pos='JJ', head=3, deprel='amod') Token(index=3, form='moose', cpos='NN', pos='NN', head=0, deprel='root')
这告诉您moose是句子的开头,并且是 由some(具有det=限定关系)和^{tt19}修改$ (带有amod=形容词修饰关系)。^{tt14}上的字段$ 对象作为属性可读。有关其他选项,请参见文档 convert_tree()和convert_trees()。
可视化
如果你有asciitree 包,您可以使用更漂亮的ascii格式化程序:
>>> print sent.as_asciitree() moose [root] +-- some [det] +-- blue [amod]
如果您有Python2.7或更高版本,则可以使用Graphviz来呈现图形。您需要Python graphviz包来调用 as_dotgraph():
>>> dotgraph = sent.as_dotgraph() >>> print dotgraph digraph { 0 [label=root] 1 [label=some] 3 -> 1 [label=det] 2 [label=blue] 3 -> 2 [label=amod] 3 [label=moose] 0 -> 3 [label=root] } >>> dotgraph.render('moose') # renders a PDF by default 'moose.pdf' >>> dotgraph.format = 'svg' >>> dotgraph.render('moose') 'moose.svg'
Pythonxdot 包提供交互式可视化:
>>> import xdot >>> window = xdot.DotWindow() >>> window.set_dotcode(dotgraph.source)
as_asciitree()和as_dotgraph()都允许自定义。 有关其他选项,请参见文档。
后端
目前,PystanfordDependencies包括两个后端:
- subprocess(在任何地方都可以使用java二进制文件,但更多 开销,因此使用convert_trees()的成批转换是 推荐)
- jpype(需要jpype1, 比子进程后端更快,还包括对斯坦福的访问 Corenlp柠檬汁)
默认情况下,PystanFordDependencies将尝试使用^{TT6}$ 后端。如果jpype不可用或在启动时崩溃, PystanFordDependencies将回退到^{TT5}$,并发出警告。
通用依赖关系状态
PystanFordDependencies支持Universal Dependencies中的大多数功能(请参见issue #10了解 最新状态)。PystanFordDependencies输出与Universal匹配 在结构和依赖项标签方面的依赖项,但通用 POS标签和功能丢失。目前,PystanfordDependencies将 默认情况下输出通用依赖项(除非您使用的是Stanford Corenlp 3.5.1或更早版本)。
发布摘要
- 0.3.1(2015.11.02):更好的折叠通用处理,错误修复
- 0.3.0(2015.10.09):支持复制节点,更多输入检查/调试 帮助,例如convert.py程序
- 0.2.0(2015.08.02):通用依赖项支持(大部分) python 3支持(完全),少量api更新
- 0.1.7(2015.06.13)JPype的错误修复,处理版本不匹配 在IBM Java中
- 0.1.6(2015.02.12):支持graphviz格式,corenlp 3.5.1, 更好的Windows可移植性
- 0.1.5(2015.01.10):支持ascii树格式
- 0.1.4(2015.01.07):修复CCprocessed支持
- 0.1.3(2015.01.03):错误修复、工作服集成、重构
- 0.1.2(2015.01.02):更好的conll结构、测试套件和travis ci 支持,错误修复
- 0.1.1(2014.12.15):更多文档,更少错误
- 0.1(2014.12.14):初始版本