2009-11-08 2 views
2
I love to eat chicken. 
Today I went running, swimming and played basketball. 

Mon objectif est de retourner FOOD et SPORTS juste en analysant ces deux phrases. Comment peux-tu faire ça? Je suis familier avec NLP et Wordnet. Mais y a-t-il quelque chose de plus haut niveau/pratique/technologie moderne?Comment faire des mots dans une catégorie. (PNL)

Y at-il quelque chose qui catégorise automatiquement les mots pour vous, dans "niveaux"?

Plus important encore, quel est le terme technique pour ce processus?

+0

Pourquoi "nourriture" et non "VOLAILLE"? – Gareth

+0

Pourriez-vous nous donner des informations sur les méthodes que vous avez essayées et qui ont réussi? – morfara

Répondre

4

Ce problème est difficile à résoudre la procédure, mais beaucoup de progrès ont été réalisés dans la région ces derniers temps.

La plupart des traitements en langage naturel commencent par une grammaire (qui peut être ou non contextuelle). C'est un ensemble de règles de construction qui spécifie comment les choses plus générales sont faites à partir de plus spécifiques.

exemple contexte grammaire libre:

Sentence ::= NounPhrase VerbPhrase 
NounPhrase ::= ["The"] [Adjective] Noun 
Adjective ::= "big" | "small" | "red" | "green" 
Noun ::= "cat" | "man" | "house" 
VerbPhrase ::= "fell over" 

Ceci est évidemment trop simpliste, mais la tâche de faire une grammaire complète pour définir tous anglais est énorme, et la plupart des systèmes réels définissent seulement un sous-ensemble de celui-ci applicable à un domaine de problème. Une fois qu'une grammaire a été définie, (ou apprise en utilisant des algorithmes compliqués connus seulement de Google) une chaîne, appelée un "exemple" est analysée selon la grammaire. qui marque chaque mot avec les parties du discours. une grammaire très complexe n'aurait pas seulement les parties du discours que vous avez apprises à l'école, mais des catégories telles que «sites Web», «noms de personnes âgées» et «ingrédients».

Ces catégories peuvent être laborieusement intégrées dans la grammaire par les humains ou déduites à l'aide de choses telles que la modélisation analogique ou les machines vectorielles de support. Dans chacun, des choses comme «poulet», «football», «barbecue» et «cricket» seraient définis comme des points dans un très grand espace dimensionnel, avec des millions d'autres points, puis les algorithmes de regroupement, définiraient des groupes juste en fonction des positions de ces points les uns par rapport aux autres. alors on pourrait essayer d'inférer des noms pour les groupes du texte d'exemple.

link text Cette recherche Google répertorie plusieurs techniques utilisées dans la PNL, et vous pourriez apprendre beaucoup d'eux.

EDIT pour résoudre simplement ce problème, on peut explorer le Web pour les phrases de la forme « _ est un _ » pour construire une base de données de relations élément-catégorie. Ensuite, vous analyser une chaîne comme ci-dessus, et recherchez les mots qui sont des éléments connus dans la base de données

2

Google Sets fait une partie de cela, et il y a quelques discussion qui mentionne les surensembles. Cependant, je n'ai pas vraiment vu de détails techniques, seulement des idées et des discussions.

Peut-être que cela pourrait au moins aider votre recherche ...

+2

Je suis entré dans les articles sur la table de chevet de ma femme et il est venu avec le «terrorisme» –

+4

Nous vous surveillons, Kirkham. –

2

La question que vous posez est tout un domaine de recherche appelé catégorisation de texte topique. Un bon aperçu des techniques est "Machine learning in automated text categorization" in ACM Computing Surveys, by Fabrizio Sebastiani..L'une des techniques les plus simples (mais pas nécessairement les plus performantes) consiste à avoir plusieurs (centaines) exemples de phrases dans chaque catégorie, puis à former un classifieur Naive Bayesien sur ces exemples de phrases. NLTK contient un classificateur Naive Bayesian dans le module nltk.classify.naivebayes.

+0

Je suis actuellement en train de faire mon projet de design senior et j'ai trouvé que SVM fonctionne beaucoup mieux que Bayes. Je pensais juste que tu aimerais savoir. La raison en est que le nombre d'entités (mots) augmente au fur et à mesure que l'ensemble d'apprentissage augmente et certains mots ne peuvent être mentionnés qu'une ou deux fois. La précision de Bayes diminue quand il y a trop de fonctionnalités. – apexdodge

0

Vous pouvez jeter un oeil à WordNet Domains par des personnes de FBK. C'est une extension de WordNet qui est conçue pour être utilisée pour la catégorisation de texte et la désambiguïsation de sens de mot. Il permet divers degrés de granularité.

http://wndomains.fbk.eu/

L'une des façons de l'appliquer à votre tâche pourrait être d'obtenir NP-morceaux de vos phrases, obtenir leurs mots de tête et d'obtenir les catégories les domaines de WordNet.

0

Tenqyu l'a résolu en utilisant Python et Machine Learning.

  1. Avoir un jeu de données de texte
  2. Appliquer Tf-idf vectorisation. Le poids d'un terme qui se produit dans un document est simplement proportionnel
    au terme fréquence. (The Luhn Assumption 1957) La spécificité d'un terme peut être quantifiée comme une fonction inverse de le nombre de documents dans lesquels il se produit.
  3. Un modèle vectoriel
  4. Multinomial natif Bayes Classification

Le processus plus en détail ici: https://hackernoon.com/how-to-better-classify-coachella-with-machine-learning-part-1-dc84c53d1a9c

Questions connexes