J'ai besoin d'extraire tous les verbes anglais d'un texte donné et je me demandais comment je pourrais le faire ... À première vue, mon idée est d'utiliser des expressions régulières car tous les temps de verbe anglais suivent des modèles, mais il y a peut-être une autre façon de le faire. Ce que j'ai pensé est simplement: p>
Que pensez-vous? Je suppose que ce n'est pas un moyen efficace de le faire, mais je ne peux pas imaginer un autre. P>
Merci d'avance! P>
PS: p>
4 Réponses :
Une langue naturelle à analyser avec regex est impossible. Oublie ça. Fort> p>
comme exemple drastique: comment trouverez-vous les verbes (marqués d'astérisques) dans cette phrase? P>
Buffalo Buffalo
Buffalo * Buffalo * Buffalo Buffalo P>
blockQuote>
Pendant que vous rencontrez à peine des cas extrêmes comme celui-ci, il existe des dizaines de verbes qui pourraient également être des noms, des adjectifs, etc. si vous venez de regarder le mot. P>
Vous avez besoin d'un analyseur de langue naturel comme Stanford NLP . Je n'en ai jamais utilisé, alors je ne sais pas à quel point vos résultats seront valables, mais mieux qu'avec regex, je peux vous dire ça. P>
Eh bien, j'ai oublié de dire que j'ai un dictionnaire de tous les verbes anglais (forme infinitive)
@Turquesa alors? Cela ne vous fera toujours aucun bien lorsque vous avez affaire à des homonymes.
Sean, votre lien va à l'analyseur de la structure de phrase de Stanford. En fait, vous n'avez pas besoin d'utiliser un analyseur de structure de phrase pour obtenir des informations sur les balises de la parole (par exemple, si un mot est un nom, un verbe, un adjectif, un adverbe, etc.). Au contraire, vous obtiendrez des résultats plus rapides et plus précis à l'aide d'un tagueur POS de CRF ou de MEMM basé sur MEMM.
@DMCer en fait i i> n'a pas besoin de rien du genre. J'essayais simplement de montrer à l'OP que Regex ne peut pas être la bonne façon (et je me suis lié à la seule alternative de cette telle alternative que j'avais entendue de). Si vous pensez que cela mérite un bowvote, soyez mon invité ...
@jarandaf, le dictionnaire n'aide pas beaucoup. Si vous rencontrez des verbes infléchis comme "Vélo" ou "Vélo" ou Verbes ABLAUT (Swam, Dove), un dictionnaire infinitif ne vous aidera pas à moins que vous soyez. Aussi, comme avec l'exemple de Sean, il serait difficile de trouver le verbe "buffalo" dans cette phrase. Vous pouvez utiliser un analyseur peu profond, mais un modèle d'analyse probabiliste profond est beaucoup mieux pour le marquage.
Ceci est en fait une tâche très difficile dans la NLP (traitement de langue naturelle). Les expressions régulières de là ne seront pas suffisantes. Prenons, par exemple, le mot "formation" - il peut être utilisé comme un verbe ou un nom ("Je vais à la session de formation"). De toute évidence, une expression régulière ne sera pas capable de dire la différence entre les deux. Il y a aussi des problèmes, le "-ed" est un moyen courant de mettre fin au-delà des verbes tendus, mais vous échouera dans le cas de "dégoûté". P>
Il existe certaines techniques qui peuvent vous fournir une indication correcte (non parfaite, mais bonne) de savoir si un mot donné est un verbe ou non - ils peuvent également être assez coûteux de calcul. P>
Alors la première question que vous devriez vous poser (à mon avis), est la qualité de la réponse par rapport à la quantité de temps de traitement qui vous intéresse. p>
Le principal problème de tout cela est que le projet consiste à la nominalisation du verbe (est juste un projet UNI), de sorte que tous les "efforts" sont censés être concentrés dans cette partie, la nominalisation. Dans le béton, je suis ce modèle: acl.ldc.upenn.edu/ P / p00 / p00-1037.pdf ). Le projet consiste à créer un texte, à trouver tous les verbes dans ce texte et à proposer plusieurs nominalisations pour chaque verbe. Donc, la première étape (trouver des verbes) doit être aussi simple que possible ... mais je ne peux utiliser aucun analyseur, ce n'est pas permis.
@Turquesa Je viens de jeter une idée ici, mais dites-moi si cela fonctionne (ou plus probablement pourquoi cela ne fonctionnera pas). Et si vous identifiez tous les verbes à l'aide du dictionnaire et dans le cas d'une série de verbes (un directement après l'autre) ne prenez que le dernier.
Partie de la parole Tagueur forte> Identification puis extraire de tous les verbes dans un texte est Java strong> Si vous utilisez Java, un bon emballage pour le marquage du point de vente est le Stanford Log-linéaire Part-of-Speech Tagueur . Matthew Jockers Mettez ensemble un excellent tutoriel sur l'utilisation de ce tagueur que vous pouvez trouver ici . p> python strong> Si vous préférez Python, vous pouvez utiliser le tagger POS inclus dans le Toolkit de langue naturelle (NLTK) . Un extrait de code démontrant comment effectuer le marquage du point de vente à l'aide de ce package est indiqué ci-dessous: p> [('I', 'PRP'), ('am', 'VBP'), ('very', 'RB'), ('happy', 'JJ'), ('to', 'TO'),
('be', 'VB'), ('here', 'RB'), ('today', 'NN')]
Bien que un an plus tard, mais j'ai trouvé un outil très utile de l'Université du Nord-Ouest appelé MorPhadorner . P>
Il gère toutes sortes de situations, par ex. Limatisation, reconnaissance linguistique, reconnaissance des noms, analyseur, séparateur de phrase, etc. p>
pratique facile à utiliser. P>