2013-04-12 4 views
2

Je charge un corpus POS-tagged en NLTK, et je voudrais trouver certains modèles impliquant des tags POS. Ces modèles peuvent être assez complexes, y compris un grand nombre de combinaisons différentes de tags POS. Exemple chaîne d'entrée:Expressions régulières dans le corpus NLTK étiqueté POS

Nous/PRP passé/VBD some/DT temps/NN lecture/NN about/dans/DT importance historique/JJ/NN de/dans le thé/NN dans/en Corée/NNP et/CC Chine/NNP et/CC puis/RB goûté/VBD le/DT le plus/JJS cher/JJ vert/thé JJ/NN I/PRP ont/VBP jamais/RB vu/VBN ./.

Dans ce cas, le modèle de point de vente est quelque chose comme: (IN) (THE)? (NNP) (CC)? (NNP) ...

je charge mon corps avec:

reader = TaggedCorpusReader(corpus_dir, r'.*\.pos') 

De toute évidence, je peux le faire en utilisant package re Python, mais ces expressions régulières deviennent rapidement difficiles à comprendre, déboguer et mettre à jour pour d'autres développeurs.

Quelle est la manière la plus élégante de faire cela en NLTK? Existe-t-il des fonctions d'aide pour trouver des modèles dans du texte POS-tagged plus lisibles que d'habitude regex?

Merci

+0

Peut-être que vous pourriez fournir un exemple de chaîne? –

+0

J'ai ajouté un exemple. – Mulone

Répondre

2

Il y a une fonction appelée NLTK str2tuple qui parse phrase étiquetée dans la liste des tuples, vous pouvez extraire facilement des balises POS dans une liste séparée. Pas besoin de regex.