web-dev-qa-db-fra.com

Comment extraire les mots clés utilisés dans le texte?

Comment puis-je extraire une pile de texte pour obtenir des mots clés par utilisation? ("Jacob Smith" ou "clôture")

Et existe-t-il déjà un logiciel pour le faire? même semi-automatiquement, et s'il peut filtrer des mots simples comme "le", "et", "ou", alors je pourrais accéder aux sujets plus rapidement.

36
Robinicks

Il s'agit d'une question ouverte en PNL, il n'y a donc pas de réponse simple.

Ma recommandation pour des "travaux pour moi" rapides et sales est topia.termextract .

Yahoo a un service d'extraction de mots clés ( http://developer.yahoo.com/search/content/V1/termExtraction.html ) qui est à faible rappel mais à haute précision. En d'autres termes, il vous donne un petit nombre de termes de haute qualité, mais il manque de nombreux termes dans vos documents.

En Python, il y a topia.termextract ( http://pypi.python.org/pypi/topia.termextract/ ). Il est relativement bruyant, et propose de nombreux faux mots-clés, mais il est simple à utiliser.

Termine ( http://www.nactem.ac.uk/software/termine/ ) est un service Web britannique qui est également relativement bruyant et propose de nombreux faux mots-clés. Cependant, il me semble être légèrement plus précis que topia.termextract. YMMV.

Une façon de débruiter les résultats avec trop de mots clés (par exemple topia.termextract et termine) est de créer un vocabulaire de termes qui apparaissent fréquemment, puis de supprimer les termes proposés qui ne figurent pas dans le vocabulaire. En d'autres termes, faites deux passes sur votre corpus: La première passe, comptez la fréquence de chaque mot-clé. Dans la deuxième passe, jetez les mots-clés qui sont trop rares.

Si vous voulez écrire le vôtre, la meilleure introduction est peut-être écrite par Park, qui est maintenant chez IBM:

  • "Extraction automatique du glossaire: au-delà de l'identification terminologique" disponible sur http://portal.acm.org/citation.cfm?id=107237
  • "Extraction et utilisation du glossaire dans le système de recherche et de livraison d'informations pour le support technique IBM"

Voici quelques références supplémentaires, si vous souhaitez en savoir plus:

  • http://en.wikipedia.org/wiki/Terminology_extraction
  • "CorePhrase: extraction de phrase clé pour le regroupement de documents"
  • Liu et al 2009 de NAACL HLT
  • "Identification automatique des phrases non-compositionnelles"
  • "L'exploration de données rencontre la découverte de colocations"
  • En plus d'une multitude d'autres références, vous pouvez creuser sur le sujet.
119
Joseph Turian

Il existe également un service appelé Alchemy qui peut effectuer l'extraction de termes, le balisage de concepts, l'analyse des sentiments, etc.

Il est valide, je l'ai testé mais je ne connais pas les politiques commerciales (le cas échéant). Ils fournissent des API pour tout type de langage (à peu près).

J'ai lu quelque part (désolé, je ne me souviens plus où) que la sortie donnée par Alchemy est moins bruyante que celles proposées par Joseph.

9
Fabiano Francesconi

Vous n'avez pas spécifié de technologie avec laquelle vous travaillez, donc je suppose qu'un script Shell est également une possibilité.

J'ai toujours été impressionné par l'exemple d'analyse de fréquence Word dans le Advanced Bash-Scripting Guide (12-11)

Par exemple, ce qui suit extrait un livre du projet Gutenburg et écrit un "rapport" d'analyse de fréquence Word:

wget http://www.gutenberg.org/files/20417/20417-8.txt -q -O- | 
sed -e 's/\.//g'  -e 's/\,//g' -e 's/ /\
/g' | tr 'A-Z' 'a-z' | sort | uniq -c | sort -nr > output.txt

Doit être extensible pour exclure des mots d'une liste `` commune '' (le, et, a ...) etc.

5
ChristopheD

Je recommande personnellement Maui ( http://code.google.com/p/maui-indexer/ ): il s'appuie sur KeA mais l'étend de diverses manières. Il peut être formé et peut utiliser des terminologies formatées RDF.

1
bongo

J'ai utilisé NTLK pour reconnaître les entités nommées avant avec un certain succès. Il est particulièrement bon pour reconnaître les noms des personnes et des organisations.

0
litso