2013-05-05 2 views
2

Comment filtrer des phrases avec des structures spécifiques en utilisant NLTK? Par exemple, nous avons la définition suivante d'une grammaire libre de contexte:NLTK: filtre les phrases avec des structures spécifiques

1. S → NP VP 
    2. S → Aux NP VP 
    3. S → VP 
    4. NP → Pronoun 
    5. NP → Proper-Noun 
    6. NP → Det Nominal 
    7. Nominal → Noun 
    8. Nominal → Nominal Noun 
    9. Nominal → Nominal PP 
    10.VP → Verb 
    11.VP → Verb NP 
    12.VP → VP PP 
    13.PP → Prep NP 

Comme on le voit, trois types de structures de phrases sont définies:

1. S → NP VP 
    2. S → Aux NP VP 
    3. S → VP 

Compte tenu de la phrase suivante, je veux savoir si cette phrase est conforme à l'une des trois structures de phrases ci-dessus. Je ne suis pas beaucoup pour la musique country, mais elle a le potentiel pour la beauté, avec ses inclusions de comédie et de tristesse. " Ma question est, comment dois-je le faire en utilisant NLTK?

Répondre

2

http://www.nltk.org/book/ch05.html

devrait expliquer tout ce dont vous avez besoin pour cela. Fondamentalement, vous devez d'abord marquer la phrase (la diviser en jetons individuels), puis ils sont marqués avec le PoS correspondant que nltk les identifie comme.

Ceci retourne une liste de tuples, et puis il y a un certain nombre de manières de comparer ces tuples à ceux dans votre grammaire.

Code spécifique pour se prémunir contre les liens défectueux futurs:

>>> text = word_tokenize("And now for something completely different") 
>>> nltk.pos_tag(text) 
[('And', 'CC'), ('now', 'RB'), ('for', 'IN'), ('something', 'NN'), 
('completely', 'RB'), ('different', 'JJ')] 
+0

Dans ce [lien] (http://nltk.googlecode.com/svn/trunk/doc/book/ch08.html), dans l'exemple 8.12 (code_sententiel_complement.py), il utilise un filtre simple pour trouver les verbes qui acceptent les compléments. Pouvons-nous utiliser un code similaire pour d'abord analyser la phrase dans un arbre syntaxique, puis filtrer l'arbre syntaxique? Selon la solution dans votre réponse, nous devons d'abord trouver les tags POS des mots dans les phrases, ce qui semble inutile. – Shawn

+0

Je veux dire, c'est un petit rond-point, mais nltk a des tags pos. Il y a un arbre syntaxique implicite dans le tag pos que fait nltk. En trouvant les tags pos, vous trouvez en fait cet arbre. Il y a un petit peu de travail supplémentaire, mais nltk n'est pas fait pour gérer les grammaires sans contexte, il est fait pour nlp droit, comme le tag pos. –

+0

Je comprends ce que vous voulez dire. Merci de votre aide. Il semble que j'aurai besoin d'un automate pour effectuer la correspondance entre les tags POS et le CFG. – Shawn

Questions connexes