2010-08-09 5 views
1

en supposant que je ne sache rien de tout et que je commence à programmer AUJOURD'HUI, que diriez-vous qu'il me faudrait apprendre pour commencer à travailler avec le traitement automatique du langage?De quoi a besoin la PNL?

J'ai eu des difficultés avec certaines méthodes d'analyse de chaînes, mais jusqu'ici, cela ne fait que m'énerver et me faire créer du code moche. Je cherche de nouvelles idées sur la façon de créer une API Remember The Milk pour analyser les entrées de l'utilisateur afin de fournir un formulaire de saisie rapide qui ne soit pas basé sur des champs mais plutôt sur des phrases simples.

EDIT: RTM est un système de liste de tâches. Ainsi, pour entrer une tâche, vous n'avez pas besoin de taper dans chaque champ pour remplir les valeurs (nom de la tâche, date d'échéance, emplacement, etc.). Vous pouvez simplement taper une phrase comme "rendez-vous chez le dentiste lundi à 14h dans WhateverPlace" et il l'analysera et remplira tous les champs pour vous.

Je n'ai aucune sorte de contraintes techniques car il s'agira d'un projet personnel mais je connais mieux le monde .NET. En fait, je ne suis pas sûr que ce soit une question de langage, mais si c'est nécessaire je suis plus que disposé à apprendre une nouvelle langue pour le faire.

Mon projet est lié à des finances personnelles, donc les phrases sont plus comme "passé 10USD sur le café la nuit dernière avec ma petite amie" et il remplirait l'emplacement, montant de $$$, étiquettes et autres choses.

Merci beaucoup pour toutes sortes de directions que vous pourriez me donner!

+0

Je promets que j'essaie d'être utile, pas pédant - NLP signifie «traitement du langage naturel». –

+0

Vous devez mieux spécifier ce que vous cherchez à analyser. Je ne sais pas ce que RtM analyse, ni ce que vous voulez analyser, mais ce n'est pas un projet PNL mais plutôt un petit sous-ensemble de PNL qui est probablement beaucoup plus simple. – msw

+0

Cela peut être utile si vous fournissez plus de détails sur vos besoins. Par exemple, êtes-vous limité à certains langages de programmation? Votre programme a-t-il besoin de gérer de manière robuste les entrées à contraintes lâches, ou pensez-vous qu'il aura une syntaxe fortement contrainte? –

Répondre

1

Jetez un oeil à NLTK, c'est une bonne ressource pour les programmeurs débutants intéressés par la PNL. http://www.nltk.org/
Il est écrit en python qui est l'un des langages de programmation les plus faciles.

Maintenant que je comprends votre problème, voici ma solution:

Vous pouvez développer une sorte de vocabulaire restreint, où tous les montants doivent mettre fin à avecun signe $ ou tout temps doit être sous forme de 00:00 et/ou se termine par AM/PM, en ce qui concerne la détection des éléments, vous pouvez utiliser la liste des objets de l'ontologie tels que Open Cyc. Open Cyc peut vous fournir une liste de tous les objets tels que la bière, le café, le pain et le lait, etc. Cela vous aidera à détecter les objets dans la courte phrase. Pourtant, ce serait une approche très floue.

+0

Deux simples questions secondaires. Pensez-vous que j'ai besoin d'une approche PNL complète pour faire quelque chose comme ça? Cette ressource est-elle également valable pour les langues autres que l'anglais? – tucaz

+1

dépend de l'analyse approfondie que vous souhaitez réaliser. L'analyse du texte de formulaire libre, même de courtes phrases, est vraiment difficile et vous auriez besoin d'un modèle PNL. Cependant, si vous restreignez les utilisateurs à un vocabulaire plus petit, comme le nombre dans la phrase sera toujours le temps ou tout montant doit être suivi d'un signe $, alors je pense que vous n'aurez pas besoin d'une solution PNL. ça dépend ... Il y a des modèles PNL disponibles pour d'autres langues, et je pense que NLTK pourrait gérer au moins toutes les langues européennes. –

3

Cela ne semble pas nécessiter de NLP complet. Simple modèle basé sur information extraction suffira probablement. L'idée de base est de marquer le texte, puis de reconnaître/classer certains mots-clés, et enfin de reconnaître les modèles/phrases. Dans votre exemple, tokenizing vous donne "Dentist", "rendez-vous", "lundi", "at", "2PM", "in", "WhateverPlace". Votre outil reconnaîtra que "lundi" est un jour de la semaine, "2PM" est une heure, etc. Enfin, vous pouvez trouver des modèles comme [at] [TIME] et [in] [Place] et les utiliser pour remplir les champs.

Un cadre comme GATE peut aider, mais même cela peut être un marteau plus grand que ce dont vous avez vraiment besoin.

Questions connexes