1

Je travaille avec l'API Google Adresses, et ils contiennent un list de 97 emplacements différents. Je veux réduire la liste des emplacements dans un nombre moins élevé d'entre eux, car beaucoup d'entre eux sont groupables. Par exemple, atm et bank en financial; temple, church, mosque, synagogue en worship; school, university en education; subway_station, train_station, transit_station, gas_station en transportation.Étant donné une liste de mots, comment développer un moyen algorithmique de les regrouper sémantiquement?

Mais aussi, il ne devrait pas généraliser; par exemple, pet_store, city_hall, courthouse, restaurant en quelque chose comme buildings.

J'ai essayé pas mal de méthodes pour cela. J'ai d'abord téléchargé les synonymes de chacun des 97 mots de la liste de plusieurs dictionnaires. Ensuite, j'ai découvert la similitude entre les 2 mots basée sur quelle fraction des synonymes uniques qu'ils partagent en commun (similitude Jaccard):

enter image description here

Mais après cela, comment puis-je grouper des mots en grappes? En utilisant les méthodes de classification traditionnelles (k-means, k-médoïde, classification hiérarchique et la FCM), je ne reçois pas bon regroupement (j'ai identifié plusieurs erreurs de classification en analysant les résultats manuellement):

enter image description here enter image description here

J'ai même essayé le modèle word2vec formé sur des données d'information Google (où chaque mot est exprimé en tant que vecteur de 300 caractéristiques), et je ne suis pas de bons groupes en fonction de cela aussi: enter image description here

+0

à mon avis votre question est hors sujet pour ainsi – InferOn

+0

@InferOn: Juste parce que vous ne comprenez pas une question ne signifie pas qu'il est hors-sujet. – stackoverflowuser2010

+0

@InferOn Je sais que ma question n'est pas vraiment une question de programmation, mais j'ai besoin d'idées sur la façon de s'y prendre. Et comme je ne connais aucune autre plate-forme où je pourrais demander des idées, je me suis tourné vers Stackoverflow. – Kristada673

Répondre

1

Vous cherchez probablement pour quelque chose liée à la réduction de la dimensionnalité de l'espace vectoriel. Dans ces techniques, vous aurez besoin d'un corpus de texte qui utilise les emplacements comme des mots dans le texte. La réduction de la dimensionnalité regroupera ensuite les termes ensemble. Vous pouvez faire quelques lectures sur Latent Dirichlet Allocation et l'indexation sémantique latente. Une bonne référence est "Introduction to Information Retrieval" par Manning et al., Chapitre 18. Notez que ce livre date de 2009, donc beaucoup d'avancées ne sont pas capturées. Comme vous l'avez noté, il y a eu beaucoup de travail comme word2vec. Une autre bonne référence est "Speech and Language Processing" par Jurafsky et Martin, chapitre 16.

+0

J'ai vérifié sur l'allocation de Dirichlet latent. Le problème est, je n'ai que les mots - je n'ai pas de document, ou une collection de phrases, en utilisant chaque mot. Par conséquent, je ne suis pas sûr de savoir comment utiliser LDA. Des idées? – Kristada673

+1

Il suffit de google pour "corpus de journal PNL" ou "corpus web PNL". Il y aura beaucoup de résultats. – stackoverflowuser2010

+0

@ Kristada673: Puisque vous avez affaire à des emplacements physiques, je vous recommande également de rechercher des corpus sur le tourisme, les voyages et les entreprises locales. – stackoverflowuser2010

1

Vous avez besoin de beaucoup plus de données.

Aucun algorithme jamais, sans données supplémentaires, ne reliera ATM et bank à financial. Parce que cela nécessite connaissance de ces termes.

Jaccard similitude n'a pas accès à une telle connaissance, il ne peut travailler que sur les mots. Et puis "banque de la rivière" et "succursale de la banque" sont très similaires. Donc, ne vous attendez pas à ce que la magie se produise avec l'algorithme. Vous avez besoin de la magie pour être dans les données ...

+0

Je sais. C'est pourquoi j'ai créé moi-même une liste de leurs synonymes, que j'ai écrit plus haut: "J'ai d'abord téléchargé les synonymes de chacun des 97 mots de la liste de plusieurs dictionnaires. synonymes qu'ils partagent en commun (similitude Jaccard) ". – Kristada673

+0

Les synonymes n'aideront pas beaucoup non plus. Combien de synonymes obtenez-vous après avoir supprimé ** tous les mots uniques **? Vous obtenez à côté de l'information de similitude. Ce n'est pas assez de données. Vous pourriez essayer de trouver un article de Wikipédia pour chacun, puis mesurer la similarité textuelle de l'ensemble des articles, puis commencer à travailler. Ou vous utilisez toutes les pages Web qui mentionnent cette chose. –