繁体   English   中英

使用 CoreNLP 将句子分割成子句

[英]Segmenting sentence into subsentences with CoreNLP

我正在解决以下问题:我想使用斯坦福 CoreNLP 将句子分成子句。 例句可以是:

"Richard is working with CoreNLP, but does not really understand what he is doing"

我现在希望将我的句子拆分为单个“S”,如下面的树形图所示:

在此处输入图片说明

我希望输出是一个带有单个“S”的列表,如下所示:

['Richard is working with CoreNLP', ', but', 'does not really understand what', 'he is doing']

我真的很感激任何帮助:)

我怀疑您正在寻找的工具是Tregex ,在此处的电源点或类本身的Javadoc中有更详细的描述。

在您的情况下,我相信您正在寻找的模式只是S 所以,像这样:

tregex.sh “S” <path_to_file>

其中文件是 Penn Treebank 格式的树——也就是说,类似于(ROOT (S (NP (NNS dogs)) (VP (VB chase) (NP (NNS cats)))))

顺便说一句:我相信片段“ ,但是”实际上并不是一个句子,正如您在图中突出显示的那样。 相反,您突出显示的节点包含了整个句子“ Richard 正在使用 CoreNLP,但并不真正理解他在做什么”。 然后,Tregex 会将整个句子打印为匹配项之一。 同样,“并不真正理解什么”不是一个句子,除非它包含整个 SBAR:“不明白他在做什么”。

如果你只想要“叶子”句子(即一个没有被另一个句子包含的句子),你可以尝试更像这样的模式:

S !>> S

注意:我还没有测试这些模式——使用风险自负!

好的,我发现有人这样做:

import requests

url = "http://localhost:9000/tregex"
request_params = {"pattern": "S"}
text = "Pusheen and Smitha walked along the beach."
r = requests.post(url, data=text, params=request_params)
print r.json()

有人知道如何使用其他语言吗(我需要德语)?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM