9
votes

Comment obtenez-vous le passé d'un verbe?

Quel est le moyen le plus efficace d'obtenir le passé d'un verbe, de préférence sans utiliser des cadres nlp lourds de mémoire?

E.g.

  • vivre à: vécu
  • Essayez de: Essayé
  • Tapez sur: Tapé
  • Faire bouillir à: bouilli
  • vendre à: VENDU

    J'ai écrit quelque chose de rapide moi-même (le débordement de la pile ne me permettra pas de répondre de soi) qui semble fonctionner pour des verbes réguliers (par exemple, la première 4 de cette liste), mais pas les verbes irréguliers: http://pastebin.com/txh76dnb

    Edit: Merci pour toutes les réponses, on dirait que cela ne peut pas être fait correctement sans dictionnaire en raison de verbes irréguliers.


7 commentaires

".. Sans utiliser des cadres de NLP lourds de mémoire?" Utilisez l'API VOODOO? Très léger sur la mémoire, même si cela peut vous coûter des poules et d'autres petits animaux.


@Olicharlesworth, connaissez-vous des mots qui ne seraient pas correctement analysés par cet algorithme: web2.uvcs.uvic.ca/elc/studyzone/330/gramar/pastted.htm qui nécessiterait un dictionnaire?


@Richardeb: "faire", "suis", "avoir" ...


Votre algorithme ne fonctionne pas pour un verbe irrégulier.


J'ai réfléchi à la façon de le faire, mais je n'ai trouvé aucun des verbes de cette phrase ne pouvait être mis au passé sans dictionnaire.


@RICHARD EB PAYE -> PAYES PAYÉES Règle 2 Par exemple, Possête -> Possédez les pauses Règle 3, ce sont juste à côté de ma tête.


Phrase récursive? Astucieux! Je pense que vous aurez besoin d'une base de données. Peut-être une affaire SQL SQL?


3 Réponses :


1
votes

Utiliser un site Web de dictionnaire.

dictservice est un assez populaire.

Il récupère les résultats de http://www.dict.org . qui fournit diverses bases de données. Il y en a un que j'ai trouvé utile "Le dictionnaire international collaboratif de l'anglais V.0.48" qui renvoie les définitions de mots ainsi que des temps.

Vous devrez analyser en quelque sorte le résultat de trouver le passé.


1 commentaires

Merci pour le lien, mais je préférerais une solution hors ligne pour la portabilité et la performance.



2
votes

Une façon d'aller peut être de créer un dictionnaire de verbes juste irréguliers (ceux qui ne suivent pas le modèle habituel), puis recherchent le mot en premier dans cela. Si le mot n'apparaît pas, utilisez votre algorithme. Est-ce que quelqu'un connaît-il les nombres relatifs des verbes réguliers vs irréguliers en anglais?


1 commentaires

en.wikipedia.org/wiki/list_of_francais_irregular_verbs Cela n'a pas l'air beaucoup, jusqu'à ce que vous réalisiez Cela, comme le montre la table, de nombreux verbes peuvent être aggravés et que la variété des verbes que vous pouvez créer de cette manière est pratiquement sans limites. Une mention spéciale va à "Hang" et "mensonge" pouvant avoir des temps passés réguliers et irréguliers, en fonction de leur sémantique.



11
votes

Pendant que je voulais faire cela algorithmique sans utiliser de dictionnaires, je devais recourir à un.

J'ai trouvé que la bibliothèque la plus efficace était SimplenLG .

Étant donné que leurs documents sont désynchronisés avec l'API actuel, voici comment y parvenir: xxx


7 commentaires

Comment puis-je faire l'inverse de cela? I.e. J'aimerais trouver "jouer" du mot clé "joué".


Je n'ai plus la bibliothèque SimplenLg sur ce PC, donc je ne l'ai donc pas testée, mais je crois que cela devrait être aussi simple que de changer la 4ème ligne de sorte que tense.past est tendu.future et change la deuxième ligne afin que "Live" est "joué".


Non, ce n'est pas .. j'ai essayé ce que vous avez dit; mais n'a pas fonctionné. Donne la sortie de "joué" pour l'entrée "jouée".


Dans des situations telles que ceci, vous utiliseriez getwordFromvariant qui ne s'appuie pas sur un mot étant dans sa forme de base. Cependant, il vaut la peine d'ajouter à ceci que le lexique par défaut ne connaît pas un énorme éventail de mots et ne fonctionnera donc pas souvent (et non dans ce cas). Vous voudrez probablement un lexique plus grand: code.google.com/p/simplenlg/wiki / Appendixc .


@ talha06 Afin de convertir joué à jouer, ce que vous essayez de faire est appelé «Lemmatisation» une bibliothèque PHP que je faisais appelée phpmorphy - espère que cela aide


Merci pour votre suggestion @Paulpreibisch toute idée comment le faire en utilisant Java?


@ talha06 Il existe différentes bibliothèques qui peuvent le faire, l'une est Stanford NLP: Stackoverflow.com/a/9531996/897059