2011-09-11 13 views
0

J'ai plus de 100 000 documents texte. Je voudrais trouver un moyen de répondre à cette (quelque peu ambiguë) question:trouver les mots-clés, relatifs à tous les documents

Pour un sous-ensemble donné de documents, quels sont les plus fréquentes n mots - liés à l'ensemble des documents?

Je voudrais présenter les tendances, par ex. un nuage de mots montrant quelque chose comme "ce sont les sujets qui sont particulièrement chauds dans la gamme de dates". (Oui, je sais que c'est une simplification excessive: mots! = Sujets etc.)

Il semblerait que je pourrais éventuellement calculer quelque chose comme tf-idf valeurs pour tous les mots dans tous les documents, puis faire un certain nombre de calcul, mais je ne sais pas Je ne veux pas réinventer les roues ici.

Je prévois d'utiliser éventuellement Lucene ou Solr pour indexer les documents. Seraient-ils m'aider avec cette question - comment? Ou recommanderiez-vous d'autres outils en plus/à la place?

Répondre

1

Cela devrait fonctionner: http://lucene.apache.org/java/3_1_0/api/contrib-misc/org/apache/lucene/misc/HighFreqTerms.html

This StackOverflow Question couvre également les fréquences terme en général avec Lucene.

Si vous n'utilisez pas déjà Lucene, l'opération dont vous parlez est un problème d'introduction classique pour Hadoop (le problème du "nombre de mots").

+0

Mais 'HighFreqTerms' peut-il renvoyer des statistiques pour un sous-ensemble de l'index? (La même question vaut pour la partie Hadoop.) – tuomassalo

+0

Pour hadoop, oui, parce que dans votre mappeur vous écrivez un code de filtrage simple qui saute simplement certains documents. Pour Lucence, transmettez une instance de 'org.apache.lucene.index.FilterIndexReader'. –

+0

Je suis intéressé d'essayer Lucene et 'HighFreqTerms', mais je n'ai pas trouvé d'exemples sur réellement * en utilisant *' FilterIndexReader' pour filtrer l'ensemble de données. Des pointeurs? – tuomassalo

Questions connexes