Comment obtenir des parties logiques d'une phrase avec java?


Disons qu'il y a une phrase:

On March 1, he was born.

Changer en

He was born on March 1.

Ne casse pas le sens de la phrase et elle est toujours valide. Mélanger des mots de toute autre manière produirait des phrases étranges à invalides. Donc, fondamentalement, je parle de parties de la phrase, qui rendent les informations plus spécifiques, mais les supprimer ne casse pas toute la phrase. Existe-t-il une bibliothèque PNL dans laquelle l'identification de telles parties est disponible?

Author: dmcer, 2010-04-23

2 answers

Les Mandants de l'

On dirait que vous voulez identifier la phraseconstituants, qui sont des groupes de mots qui fonctionnent comme une seule unité selon la grammaire d'une langue.

En fait, lorsque la linguistique essaie de découvrir la grammaire d'une langue, elle le fait en partie en regardant mouvement. Comme dans votre exemple, c'est là qu'un groupe de mots peut être déplacé vers une position différente dans une phrase tout en préservant le signification de la phrase.

Les constituants peuvent être des mots individuels, des phrases ou même des groupes plus importants tels que des clauses entières. Dans une phrase, ils ont une structure hiérarchique imbriquée. Par exemple, le premier exemple de phrase que vous avez donné pourrait être analysé comme:

(S  (PP (IN On) (NP (NNP March) (CD 1)))
    (NP (PRP he))
    (VP (VBD was) (VP (VBN born))))

L'ensemble de La phrase est constituée d'un locution prépositionnelle, suivi par un noun phrase, puis un verbe de la phrase. Le groupe prépositionnel peut être décomposée en une unité composé du seul mot " On " suivi d'une phrase nominale.

Analyseurs de structure de phrase

Pour trouver automatiquement les constituants, vous voudrez probablement utiliser un analyseur de structure de phrase . Il existe de nombreuses analyses de ce type disponibles en open source, notamment:

Les analyseurs Stanford et Berkeley sont probablement les plus faciles à installer et à utiliser. Comme on le voit dans Cer et coll. 2010 , les analyseurs les plus précis sont Berkeley et Charniak. L'analyseur Bikel est plus lent et moins précis que les autres.

Démo En Ligne

Il y a une démo en ligne pour l'analyseur Stanford ici. J'ai utilisé la démo pour produire l'analyse donnée ci-dessus de votre exemple de phrase.

Une Note Sur La Suppression

Dans chaque constituant, il y aura un head word. Par exemple, prenez la phrase nominale:

(NP (DT The) (JJ big) (JJ blue) (NN ball))

Le mot de tête ici est le nom ball, et il est modifié par les adjectifs big et blue. Si cette phrase nominale a été intégrée dans une phrase, vous pouvez supprimer ces modificateurs et avoir toujours quelque chose qui était cohérent avec, mais moins spécifique que, le sens de la phrase originale.

Dans les phrases nominales, vous pouvez généralement supprimer les adjectifs, les noms qui ne sont pas la tête et les phrases prépositionnelles imbriquées.

Dans les phrases verbales et les clauses complètes, les choses deviennent plus délicates car la suppression de matériel que les serveurs en tant qu'argument du verbe peut complètement changer le interprétation une phrase. Par exemple, la suppression de the book à partir de He sold Jim the book résultats dans He sold Jim.

 26
Author: dmcer, 2014-01-31 04:21:21

OpenNLP peut faire une partie de cela pour vous. Phrase chunking et l'analyse devrait vous aider avec cela. Cependant, ce n'est pas un problème particulièrement simple, et les algorithmes auront tendance à se confondre à mesure que la structure des phrases devient plus complexe et ambiguë. Vous devriez parfois être en mesure de réorganiser des phrases dans une phrase et de maintenir le sens.

 1
Author: WhirlWind, 2010-04-23 15:13:00