用于从文本中提取度量值和相关实体的包。

marve的Python项目详细描述


#marve
一个测量关系提取器

[![许可证](https://img.shields.io/badge/license apache%202.0-blue.svg)](https://opensource.org/licenses/apache-2.0)


marve利用[grobid数量](https://github.com/kermitt2/grobid-quanties)和[斯坦福corenlp](http://stanfordnlp.github.io/corenlp)来提取和规范度量自然语言文本中的元素及其相关实体和描述符。

``壳牌

sample="患者在妊娠28周时返回欧洲。"


简化产量
-
值:"28"
单位:"周"
量化:"妊娠"
相关:["患者","欧洲"]
`````

使用在标记的文本语料库上训练的线性crf模型来寻找测量值、单位和一组有限的"量化"物质。然后,使用corenlp中的单词依赖项和pos标记,使用corenlp将度量链接到句子中的相关单词。在`/marve/dependency\u patterns.json`中指定了与其他单词/实体相关的度量的公共依赖/pos模式,并且可以在不修改代码的情况下进行调整。

Pr&L.Po.L.No.2016-10-31. zip
‘BR/>< BR/>运行(要求Java 8):
` shell /BR/> CD和LT;路径到CalnLp & gt;/StordFord-Clnlp全20110-10-31 Java-MX4G -CP"*"EdUnStutoFord.NLP.PluryNo.StnFordCordNLPCServer 9000 BR/> ` BR/>< BR/>按以下方式安装GROBID说明[此处](http://grobid.readthedocs.io/en/latest/install-grobid/)<;/br>;
然后按照[grobid数量说明](https://github.com/kermitt2/grobid-quanties)安装、构建、训练和运行

install marve:<;/br>;
`pip install marve`

##用法
一旦corenlp和grobid数量都在运行,marve就可以这样使用:

`` shell
编码:utf-8

e妊娠28周时,"

grobid="http://localhost:8080"
patterns="dependency_patterns.json"
write_to="sample_output.txt"

m.extract(_test,corenlp,grobid,patterns,write_to,show_graph=false,pretty=true,simplify=false)
````

(此示例可在"sample.py"中找到)

<;b>;important<;/b>;:文本在传递给marve之前应在句子或段落块中。

<;b>;注意<;/b>;:第一次运行marve时,可能会由于corenlp model loadi较长而引发超时错误。NG时代。如果发生这种情况,请再次运行corenlp,corenlp应该正常运行。

分辨率为10米。marve使用一个图形来表示每个句子,其中边是单词(用下面的绿色椭圆表示)和节点是单词及其词性标签(用蓝色表示)之间的依赖关系。< BR>[示例](https://github.jpl.nasa.gov/hundman/marve/blob/master/blob/example.png)

例如,单元通常通过数值修饰符(`"nummod"`)依赖项连接到值(见上文)。名义修饰符(`"nmod"`)是一种常见的依赖关系,它将单元链接到被量化的对象。连接V的常见模式在`/marve/dependency\u patterns.json`中定义了值、单位和相关单词,在上面的示例中,与"m"到"resolution"匹配的json位是:


``shell
"nmod":{
"enhanced":true,
"of":{
"measurement\type":["space\between","attached"],
"pos\in":{
"nn":null
}
}
}
```


下面是这个示例的匹配方式:<;/br>;<;/br>;
1。` nmod是"m"和"resolution"之间的依赖类型<;/br>;<;/br>;
2。由于我们使用了corenlp增强的依赖性解析器,我们还看到了"nmod"末尾附加的":of"。由于enhanced设置为"true",因此"of"必须附加到依赖项<;/br>;<;/br>;
3。由于测量值为"10M",我们将其标识为"附加"测量类型<;/br>;<;/br>;
4。`"pos_in"`强制附加节点的词性包含其至少一个键。在这种情况下,"nn"表示词性必须是名词(有效的pos标记可以是:`nn`,`nns`,`nnp`,`nnps`)。由于"nn"的值为空,我们就完成了,可以将resolution作为相关单词返回并将其添加到输出中。对于某些pos标记,例如"vb",我们可能需要继续遍历图中的边,在这种情况下,该值可以指定要调用的函数(例如"get_cousin()")<;/br>;


将计算json中列出的所有此类依赖模式,如果有任何匹配的模式,它们将作为测量的相关单词添加。

api

`` shell
提取(content、corenlp、grobid、dependency_patterns_file、output_file=none、show_graph=false、pretty=false、simplify=false)

返回从句子或段落提取的测量。

参数:content:string
句子或要从中提取度量值的段落。

corenlp服务器终结点(例如,"http://localhost:9200")。

grobid:string
grobid服务器终结点(例如"http://localhost:8080")。


dependency_patterns_file:string
json文件的文件路径,该文件包含有效的dependency/pos模式,用于提取与测量相关的单词和实体。

output_file:string,可选
file to write提取测量输出到。

show_graph:boolean,可选
如果为true,则将为分析的每个句子显示依赖关系和pos网络图的可视化


pretty:boolean,可选
如果为true,则将缩进写入文件的json。如果为False,则每行一个提取
文档将写入输出文件


simplify:boolean,可选
如果为True,则仅测量单位,并且提取的输出的相关单词将被返回并写入输出文件(有关详细信息,请参见"输出选项"部分)。


"相关":{"期限":["研究"]}
`````

"令牌索引":[
"3"
],
"after":",
"name":"year"
},
"offsetend":131,
"offsetstart":128,
"tokenindex":24,
"type":"time"
},
"related":[
{
"rawname":"period",
"connector":,
"offsetend":21,
"relationform":"compound",
"offsetstart":15,
"tokenindex":5,
"描述符":[
{
"rawname":"year",
"tokenindex":"4"
}
]
}
]
}
}
``````

根据[Apache2.0许可证](http://www.apache.org/licenses/license-2.0)编辑。


联系方式:kyle hundman(<;khundman@gmail.com>;)


致谢

*[chris mattmann](http://sunset.usc.edu/~mattmann/),jpl
*sonny koliwad,jpl
*jason hyon,jpl
*[ian colwell](hhttp://github.com/iancolwell),jpl

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用ContentExchange设置请求属性   java Spark/Hdfs/Hdfsclient兼容性   java springcloudstreamkafka配置:instanceCount和instanceIndex   Java中web服务序列化日期   java用动态数据替换占位符   java git gc似乎覆盖了一个packfile,留下了一个打开的文件描述符,其中包含对“oldxxx.pack”的引用   为什么Apache项目对Java版本敏感?   java Anylogic帮助如何在导入的3dobject通过输送机上的多个“站”时更改其颜色?   JavaEclipseNeonM2E可以导入一个大型项目,但似乎不能自动解决依赖关系   java@FindBy搜索具有满足条件的子元素的元素   java如何将ActionEvent e与键绑定一起使用?   java转换以集中方式从外部库抛出的异常   java中用户文件/数据文件与系统/程序文件的区别   java使用变量字符串或字符作为对象名   字体使用Java图形操纵字符串中每个字符的形状   JavaFX图表移动数据   java RandomAccessFile:将所有项设置为相同的字节数?   java Google Play inapp Billing onPurchasesUpdated()错误响应代码1   java在不知道属性名和属性数的情况下处理json对象   java是否可以一次从HazelcastInstance(映射和列表)中删除所有数据?