8
votes

Extraire des verbes anglais d'un texte donné

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:

  1. Créez un motif pour chaque verbe tendu. Je dois distinguer entre les verbes réguliers (http://en.wikipedia.org/wiki/english_verbs) et les verbes irréguliers (http://www.chompchomp.com/roules/irregularrules01.htm) d'une manière ou d'une autre.
  2. Itérate sur ces modèles et diviser le texte en les utilisant (le dernier mot de chaque sous-chaîne est censé être le verbe qui donne un sens complet à la phrase, que j'ai besoin à d'autres fins -> nominalisation)

    Que pensez-vous? Je suppose que ce n'est pas un moyen efficace de le faire, mais je ne peux pas imaginer un autre.

    Merci d'avance!

    PS:

    1. J'ai deux dictionnaires, un pour tous les verbes anglais et l'autre pour tous les noms anglais
    2. 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 pas utiliser d'analyseur, il n'est pas autorisé

0 commentaires

4 Réponses :


4
votes

Une langue naturelle à analyser avec regex est impossible. Oublie ça.

comme exemple drastique: comment trouverez-vous les verbes (marqués d'astérisques) dans cette phrase?

Buffalo Buffalo Buffalo * Buffalo * Buffalo Buffalo

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.

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.


5 commentaires

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 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.



0
votes

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é".

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.

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.


2 commentaires

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.



13
votes

Partie de la parole Tagueur forte>

Identification puis extraire de tous les verbes dans un texte est très facile fort> à l'aide d'un Partie-of-Speech (POS) Tagueur strong> . De tels taggers étiquetent tous les mots d'un texte avec des étiquettes partielles qui indiquent s'ils sont des verbes, des noms, des adjectifs, des adverbes, etc. Les étiquettes modernes sont très précises. Par exemple, Toutanova et al. Rapports 2003 Stanford Open Source Pos Tagger attribue la butée 97.24% du temps fort> sur les données Newswire. p>

Effectuer le marquage du point de vente strong> p>

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')]


0 commentaires

1
votes

Bien que un an plus tard, mais j'ai trouvé un outil très utile de l'Université du Nord-Ouest appelé MorPhadorner .

Il gère toutes sortes de situations, par ex. Limatisation, reconnaissance linguistique, reconnaissance des noms, analyseur, séparateur de phrase, etc.

pratique facile à utiliser.


0 commentaires