Certains d'arrière-plan
Je suis une littérature étudiant à l'université de Floride, il travaille actuellement sur un plan très ambitieux projet de création. Le projet est orienté vers l'algorithmique de génération de la poésie. Il est écrit en Python. Mon Python connaissances en Traitement du Langage Naturel et de connaissances ne viennent que de l'enseignement de moi-même les choses à travers l'internet. J'ai travaillé avec ce genre de choses pendant environ un an, donc je ne suis pas impuissant, mais à différents points que j'ai eu du mal à aller de l'avant dans ce projet. Actuellement, je suis entre dans la dernière phase de développement, et ont frappé un petit barrage.
J'ai besoin de mettre en œuvre une certaine forme de la grammaire de la normalisation, de sorte que la sortie ne se passe pas comme non - conjugué/fléchies de l'homme des cavernes-parler. Il y a un mois certains amicale des gens sur DONC, m'a donné quelques conseils sur comment je pourrais résoudre ce problème en utilisant un ngram langage de modélisation, en gros-mais je cherche encore d'autres solutions, comme il semble que NLTK de NgramModeler n'est pas adapté à mes besoins. (Les possibilités de POS tagging ont également été mentionnées, mais mon texte est peut-être trop fragmentaires et étrange pour une mise en œuvre de tel pour venir facilement, compte tenu de mon amateur-ness.)
Peut-être que j'ai besoin de quelque chose comme AtD, mais espérons-le, moins complexe
Je pense qu'il faut quelque chose qui fonctionne comme Après la date Limite ou de Queequeg, mais aucune de ces semblent tout à fait exact. Queequeg est probablement pas un bon ajustement -- il a été écrit en 2003 pour Unix et je ne peux pas le faire fonctionner sur Windows pour la vie de moi (avoir tout essayé). Mais j'aime que tout ce qu'il vérifie est la bonne conjugaison des verbes et l'accord en nombre.
D'autre part, AtD est beaucoup plus rigoureux, offrant plus de fonctionnalités que j'ai besoin. Mais je n'arrive pas à obtenir les liaisons python pour qu'il fonctionne. (J'ai 502 erreurs de l'AtD serveur, qui je suis sûr sont faciles à corriger, mais ma demande va être en ligne, et je préfère ne pas dépendre d'un autre serveur. Je ne peux pas se permettre de courir un AtD serveur de moi-même, parce que le nombre de "services" à ma demande va exiger de mon hébergeur, c'est déjà menaçant de provoquer des problèmes dans l'obtention de cette application hébergée à moindre coût.)
Les choses que j'aimerais éviter
Bâtiment Ngram modèles de langue moi-même ne semble pas approprié pour la tâche. mon application génère beaucoup d'inconnues vocabulaire, ce qui fausse tous les résultats. (Sauf si j'utilise un corpus qui est si grande qu'elle s'exécute de manière trop lent pour mon application-l'application doit être assez accrocheur.)
Strictement la vérification de la grammaire est ni de droite, pour la tâche. la grammaire n'a pas besoin d'être parfait, et les phrases n'ont pas à être plus sensible que le genre de l'anglais-comme jibberish que vous pouvez générer à l'aide de ngrams. Même si c'est jibberish, j'ai juste besoin de faire respecter la conjugaison des verbes, l'accord en nombre, et faire des choses comme enlever les articles supplémentaires.
En fait, je n'ai même pas besoin de tout type de suggestions pour les corrections. Je pense que tout ce que je besoin est quelque chose de compte combien d'erreurs semblent se produire dans chaque phrase dans un groupe de phrases possibles, afin que je puisse trier par leur score et choisir celui avec le moins de fautes grammaticales.
Une solution simple? La notation de la fluidité par la détection d'erreurs évidentes
Si un script existe qui prend soin de tout cela, je serais ravi (je n'ai pas trouvé encore). Je peux écrire du code pour ce que je ne trouve pas, bien sûr; je suis à la recherche pour obtenir des conseils sur la manière d'optimiser mon approche.
Disons que nous avons un tout petit peu de texte déjà mis en oeuvre:
existing_text = "The old river"
Maintenant, disons que mon script a besoin de comprendre que l'inflexion du verbe "supporter" pourrait venir à la prochaine. Je suis ouvert à toute suggestion au sujet de cette routine. Mais j'ai besoin d'aide surtout à l'étape #2, la cote de la maîtrise en pointant les erreurs grammaticales:
- Utilisez la Conjugaison du Verbe méthodes de NodeBox Linguistique à venir avec toutes les conjugaisons de ce verbe;
['bear', 'bears', 'bearing', 'bore', 'borne']
. - Itérer sur les possibilités, (faiblement) la vérification de la grammaire de la chaîne résultant de la
existing_text + " " + possibility
"("Le vieux de la rivière de l'ours", "Le vieux de la rivière de l'ours", etc). Compter le nombre d'erreurs pour chaque construction. Dans ce cas, la seule construction pour générer une erreur, apparemment, serait "La vieille rivière de l'ours". - Emballage devrait être facile... les possibilités avec le plus faible nombre d'erreurs, de sélectionner au hasard.