Сегментирование предложения по субстанциям с CoreNLP - PullRequest
0 голосов
/ 05 ноября 2018

Я работаю над следующей проблемой: я хотел бы разбить предложения на субстанции, используя Stanford CoreNLP. Пример предложения может быть:

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

Теперь я бы хотел, чтобы мое предложение было разбито на одну букву "S", как показано на диаграмме дерева ниже:

enter image description here

Я бы хотел, чтобы вывод был списком с одним «S» следующим образом:

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

Буду очень благодарен за любую помощь:)

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

Хорошо, я обнаружил, что сделать это следующим образом:

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()

Кто-нибудь знает, как использовать другие языки (мне нужен немецкий)?

0 голосов
/ 06 ноября 2018

Я подозреваю, что вам нужен инструмент Tregex , более подробно описанный в power point здесь или Javadoc самого класса.

В вашем случае, я считаю, что шаблон, который вы ищете, это просто S. Итак, что-то вроде:

tregex.sh “S” <path_to_file>

где файл представляет собой дерево в формате Penn Treebank, то есть что-то вроде (ROOT (S (NP (NNS dogs)) (VP (VB chase) (NP (NNS cats))))).

В качестве отступления: я считаю, что фрагмент ", но " на самом деле не является предложением, как вы подчеркнули на рисунке. Скорее, выделенный вами узел включает в себя целое предложение « Ричард работает с CoreNLP, но не совсем понимает, что он делает ». Tregex распечатал бы все это предложение как одно из совпадений. Точно так же « на самом деле не понимает, что » не является предложением, если не включает в себя весь SBAR: « не понимает, что он делает ».

Если вам нужны только «листовые» предложения (т. Е. Предложение, не включенное в другое предложение), вы можете попробовать шаблон более похожий на:

S !>> S

Примечание: я не тестировал шаблоны - используйте на свой страх и риск!

...