web-dev-qa-db-fra.com

NLTK Named Entity Recognition avec données personnalisées

J'essaie d'extraire des entités nommées de mon texte à l'aide de NLTK. Je trouve que NLTK NER n'est pas très précis pour mon objectif et je veux également ajouter d'autres balises. J'ai essayé de trouver un moyen de former mon propre NER, mais je ne semble pas être en mesure de trouver les bonnes ressources. J'ai quelques questions concernant NLTK-

  1. Puis-je utiliser mes propres données pour former un identificateur d'entité nommée en NLTK?
  2. Si je peux m'entraîner en utilisant mes propres données, est-ce que named_entity.py est le fichier à modifier?
  3. Le format du fichier d'entrée doit-il être en IOB par exemple. Eric NNP B-PERSON?
  4. Existe-t-il des ressources - à part le livre de recettes nltk et nlp avec python que je peux utiliser?

J'apprécierais vraiment de l'aide à cet égard

47
user1502248

Êtes-vous déterminé à utiliser NLTK/Python? J'ai rencontré les mêmes problèmes que vous et j'ai obtenu de bien meilleurs résultats en utilisant le module de reconnaissance d'entité nommée de Stanford: http://nlp.stanford.edu/software/CRF-NER.shtml . Le processus de formation du classificateur à l'aide de vos propres données est très bien documenté dans la FAQ.

Si vous avez vraiment besoin d'utiliser NLTK, je consulterais la liste de diffusion pour obtenir des conseils d'autres utilisateurs: http://groups.google.com/group/nltk-users .

J'espère que cela t'aides!

24
jjdubs

Vous pouvez facilement utiliser le Stanford NER avec nltk. Le script python est comme

from nltk.tag.stanford import NERTagger
import os
Java_path = "/Java/jdk1.8.0_45/bin/Java.exe"
os.environ['JAVAHOME'] = Java_path
st = NERTagger('../ner-model.ser.gz','../stanford-ner.jar')
tagging = st.tag(text.split())   

Pour former vos propres données et créer un modèle, vous pouvez vous référer à la première question de la FAQ Stanford NER.

Le lien est http://nlp.stanford.edu/software/crf-faq.shtml

14
Rohan Amrute

Il y a quelques fonctions dans le module nltk.chunk.named_entity qui entraînent un tagger NER. Cependant, ils ont été spécifiquement écrits pour le corpus ACE et n'ont pas été totalement nettoyés, il faudra donc rédiger leurs propres procédures de formation avec celles-ci comme référence.

Il existe également deux guides relativement récents ( 12 ) en ligne détaillant le processus d'utilisation de NLTK pour former le corpus GMB.

Cependant, comme mentionné dans les réponses ci-dessus, maintenant que de nombreux outils sont disponibles, il ne faut vraiment pas avoir recours à NLTK si un processus de formation simplifié est souhaité. Les boîtes à outils telles que CoreNLP et spaCy font un bien meilleur travail. Étant donné que l'utilisation de NLTK n'est pas très différente de l'écriture de votre propre code de formation à partir de zéro, il n'y a pas beaucoup de valeur à le faire. NLTK et OpenNLP peuvent être considérés comme appartenant en quelque sorte à une époque passée avant l'explosion des récents progrès de la PNL.

1
xji