2013-02-13 1 views
0

J'ai des listes des mots les plus fréquemment utilisés, dérivés des données ngram publiquement disponibles de Google.Comment trier les listes de mots fréquemment utilisés pour trouver des combinaisons efficaces en utilisant les mots les plus uniques possibles?

J'ai:

6.800 2grams fréquentes 4800 3grams fréquents 2500 4grams fréquentes 1100 5grams fréquents

un exemple 2 Ngram serait quelque chose comme:

"le chien" « un livre " " trois chaises " etc.

un exemple 5 ngram woul d être quelque chose comme: « une fois là-bas » « était une fois il y avait » « il était sombre et » etc.

J'ai aussi une liste de 2000 mots fréquents.

1) Je veux savoir quelle combinaison du plus petit nombre de ngrammes de mes différentes listes contient le plus grand nombre de mots de la liste de mots fréquents. Par exemple, si je trouvais 200 grammes, 40 grammes, 50 grammes et 20 grammes qui utilisent 1800 mots fréquents, ce serait un succès. J'ai augmenté ces ratios, mais j'aimerais trouver moins de 500 combinaisons qui utilisent la majorité des mots.

2) Je voudrais également trouver le plus petit nombre de combinaisons des divers ngrammes qui contiennent la plus grande quantité totale de mots des listes. Par exemple, si je pouvais trouver 500 ngrammes qui utilisent plus de 2 000 mots différents, ce serait génial.

Le problème que je rencontre est que je n'ai aucune idée de comment je ferais cela. Je pense que hadoop et mapreduce sont dans la bonne direction ... mais toute aide serait appréciée!

+0

@Jeremy, pouvez-vous s'il vous plaît nous faire savoir quel type de contexte vous avez dans CS? –

+0

@AlptiginJalayr Je suis confiant en PHP, JavaScript, et MySQL ... mais je n'ai jamais osé dans un apprentissage machine de ce genre avant. C'est probablement un peu hors de ma ligue, mais j'espérais au moins essayer de comprendre la technologie qui serait impliquée dans une solution au problème. – Jeremy

Répondre

2

Vous avez de l'ordre de 15k ngrams. C'est un ensemble de données extrêmement petit. Il va probablement tenir dans 1 Mo de mémoire, probablement moins de 1/5000 de la mémoire totale sur votre machine. Vous n'avez pas besoin de hadoop pour résoudre un tel problème. De plus, ce n'est pas vraiment un problème d'apprentissage automatique, c'est juste un problème d'optimisation.

Vous pourriez considérer vos n-grammes comme de (petites) séries de mots, et votre liste de mots fréquents comme un plus grand ensemble. Pour votre premier problème, vous voulez choisir le plus petit nombre de n-grammes que vous pouvez couvrir (ou venir aussi près que possible de couvrir) la liste de mots fréquents avec ces n-grammes. C'est exactement set cover problem. Vous n'obtiendrez probablement pas une solution exacte, mais il existe des heuristiques simples qui fonctionnent bien. Je ne suis pas totalement clair sur la façon dont votre premier problème diffère de votre deuxième problème, cependant.

+1

Ceci est vraiment utile, merci. J'étais trop penser. Il est temps d'envoyer un courriel à mon ami à Cambridge - maintenant que je sais ce que je demande!J'apprécie vraiment votre réponse. À votre santé. – Jeremy

Questions connexes