Je recherche des informations et des théories sur la façon d'aborder un sujet lexical.
Disons que j'ai une collection de chaînes, qui peut être juste une phrase ou potentiellement plusieurs phrases. Je voudrais analyser ces chaînes et déchirer les mots les plus importants, peut-être avec un score qui indique la probabilité que le mot soit important.
Regardons quelques exemples de ce que je veux dire.
Exemple 1:
"Je veux vraiment un Keurig, mais je ne peux pas me le permettre!"
Ceci est un exemple très basique, juste une phrase. En tant qu'humain, je peux facilement voir que "Keurig" est le mot le plus important ici. En outre, «se permettre» est relativement important, même si ce n'est clairement pas le point principal de la phrase. Le mot "je" apparaît deux fois, mais ce n'est pas important du tout car il ne nous donne pas vraiment d'informations. Je pourrais m'attendre à voir un hachage de mot / score quelque chose comme ceci:
"Keurig" => 0.9
"afford" => 0.4
"want" => 0.2
"really" => 0.1
etc...
Exemple # 2:
"Je viens d'avoir l'une des meilleures pratiques de natation de ma vie. J'espère que je pourrai maintenir mon temps après la compétition. Si seulement j'avais pensé à prendre ma montre non étanche."
Cet exemple a plusieurs phrases, il y aura donc des mots plus importants tout au long. Sans répéter l'exercice ponctuel de l'exemple n ° 1, je m'attendrais probablement à voir sortir deux ou trois mots vraiment importants: "natation" (ou "pratique de la natation"), "compétition", & "montre" (ou "étanche montre "ou" montre non étanche "selon la façon dont le trait d'union est traité).
Compte tenu de quelques exemples comme celui-ci, comment feriez-vous pour faire quelque chose de similaire? Existe-t-il déjà des bibliothèques ou des algorithmes (open source) en programmation qui le font déjà?
Réponses:
Il y a certainement des gens qui réfléchissent au problème que vous décrivez. Le classement et l'extraction des mots uniques pertinents dans le texte (pdf) de João Ventura et Joaquim Ferreira da Silva est une belle introduction aux techniques de classement existantes ainsi que des suggestions d'amélioration. Toutes les techniques qu'ils décrivent reposent sur un corpus (beaucoup de texte) par rapport à une ou deux lignes de texte. Votre corpus devrait être la collecte de tous les échantillons ou éventuellement de nombreux corpus d'échantillons collectés provenant de sources spécifiques. Gardez à l'esprit que la pertinence d'un seul mot (unigramme) est en grande partie un problème non résolu. Comme le décrit l'article:
Il existe de nombreuses boîtes à outils de traitement du langage naturel open source . (Faites attention. Certains outils sont gratuits pour la recherche mais nécessitent une licence commerciale pour une utilisation commerciale.) Ils vous faciliteront la vie quelle que soit l'approche que vous choisissez.
Je connais le mieux le Natural Language Toolkit (NLTK) . Il est facile à utiliser, bien documenté et est présenté dans le livre Natural Language Processing with Python (disponible gratuitement en ligne). Comme exemple simple de ce que NLTK pourrait faire pour vous, imaginez utiliser son tagger de partie de discours . Avec la partie du discours de chaque mot identifiée, vous pourriez considérer les noms propres comme très importants et les adjectifs moins. Les verbes peuvent être importants et les adverbes moins. Ce n'est en aucun cas un classement à la pointe de la technologie, mais vous obtenez des informations utiles avec peu d'effort. Lorsque vous êtes prêt à passer à une analyse plus sophistiquée, la capacité intégrée de NLTK de segmenter, étiqueter, segmenter et classer vous permettra de vous concentrer sur les autres détails de votre solution.
la source
Le traitement du langage naturel est sa propre discipline avec pas mal de recherches formelles. Je commencerais par regarder là-bas.
Je reconsidérerais également mes besoins. Même après plus de 50 ans de recherche, Siri est le meilleur informaticien. Je ne m'attendrais pas à ce qu'un ordinateur réussisse avec régularité ce dont vous parlez.
S'il y a certaines limites au discours (comme Siri en supposant que vous avez une commande ou une question simple), cela peut être mieux. Revoir mes besoins (en supposant que j'ai besoin de la PNL) comprendrait la définition de mes limites. Après cela, je chercherais probablement une tonne d'exemples. En partie pour tester tout ce que je propose, mais de nombreuses solutions modernes impliquent un apprentissage automatique. J'aurais besoin de ces exemples comme entrée dans la courbe d'apprentissage.
Donc, en résumé, je doute sérieusement que quoi que ce soit puisse vous donner de bons scores dans ce genre de scénario sans contexte.
la source