2017-06-27 3 views
-1

J'ai un problème unique et je ne connais aucun algorithme pouvant m'aider. Peut-être que quelqu'un ici fait. J'ai un ensemble de données compilé à partir de nombreuses sources différentes (équipes)Détermination des classes canoniques avec des données textuelles

Un champ en particulier s'appelle "type". Voici quelques exemples de valeurs pour le type:

aple, pommes, APPLS, Ornge, fruits, orange, z orange, poire, chou-fleur , colifower, brocli, Brocoli, poireaux, veg, légumes.

Ce que je voudrais pouvoir faire est de les regrouper par ex. Autrement dit, j'ai plusieurs orthographes de diverses permutations d'une variable de niveau parent (fruits ou légumes dans cet exemple) et je dois pouvoir les regrouper du mieux que je peux.

La seule autre caractéristique potentiellement pertinente des données est l'équipe qui les a saisies, en supposant une certaine cohérence dans la façon dont chaque équipe entre leurs données. Donc, j'ai plusieurs millions d'enregistrements d'orthographes multiples et d'orthographes courtes (par exemple, apple, appls) et je veux les regrouper d'une manière ou d'une autre. Dans cet exemple par les fruits et légumes.

Le regroupement serait difficile puisque chaque entrée est le plus souvent composée de 1 ou 2 mots, ce qui complique le calcul de la distance entre les termes.

À court de créer une table de recherche massive créée par un humain (probablement avec des millions de lignes), y at-il une approche que je peux prendre avec ce problème?

+5

Ce n'est pas une tâche statistique pour le moment. Vous devez lemmater (restaurer la forme du vocabulaire) pour chaque mot. Cependant, si de nombreux mots sont des abréviations irrégulières et désordonnées, même un logiciel de lemmatisation/stemmatisation n'aidera guère. Je crois que le moyen le plus simple est de passer en revue la liste de ces millions de mots et de les convertir chacun en une forme complète. Certains des recodages que vous pouvez faire automatiquement à l'avance, en anticipant les fautes d'orthographe les plus typiques, par exemple ornge -> orange. Des programmes comme MS Word et certains sites Internet aident à corriger les erreurs de frappe rapidement lors de la vérification de l'orthographe. – ttnphns

+0

Salut @ttnphns, en supposant que je l'ai fait et que j'avais des données parfaitement orthographiées (j'espère qu'il y a une bibliothèque magique là-dedans), que ferais-je alors? "Lemmatize" est une nouvelle phrase pour moi. Mon objectif est-il de lemmater les mots? Connaissez-vous des paquets r pour cela? Merci pour l'info jusqu'à présent –

+0

Quelles informations avez-vous qui vous permettrait de les regrouper? Chaque entrée a-t-elle des informations supplémentaires sur la verdeur ou la finesse de l'objet? "poireau" ou "pomme" est juste une chaîne sans signification pour l'ordinateur - sans information supplémentaire, soit de l'ensemble de données ou d'une source externe, il n'y a aucun algorithme que l'ordinateur pourrait utiliser pour les classer en "fruit" ou "légume" - même les humains ne sont pas capables de cela, nous utilisons des informations externes (ce que les chaînes "poireau" et "pomme" représentent, et les propriétés de ces objets représentés, comme la verdure ou le goût). – Chill2Macht

Répondre

1

Vous devrez d'abord résoudre le problème d'orthographe, à moins que vous n'ayez des données d'échelle Google qui pourraient vous permettre d'apprendre l'orthographe avec les statistiques d'échelle de Google.

Ensuite, vous aurez toujours le problème que "Apple" pourrait être un fruit ou un ordinateur. Apple et "Granny Smith" seront complètement différents. Vous devinez mieux à cette deuxième étape est quelque chose comme word2vec formé sur massive données. Ensuite, vous obtenez des vecteurs de mots de grande dimension, et vous pouvez enfin essayer de résoudre le problème de regroupement, si jamais vous obtenez ce résultat avec des résultats décents. Bonne chance.