2012-07-04 12 views
35

Sto tentando di estrarre le entità denominate dal mio testo utilizzando NLTK. Trovo che NLTK NER non sia molto preciso per il mio scopo e voglio aggiungere anche altri tag. Ho cercato di trovare un modo per allenare il mio NER, ma non riesco a trovare le risorse giuste. Ho un paio di domande per quanto riguarda NLTK-Riconoscimento entità con nome NLTK con dati personalizzati

  1. È possibile utilizzare i propri dati per addestrare un nome Entity Recognizer in NLTK?
  2. Se riesco ad allenare utilizzando i miei dati, il file name_entity.py è stato modificato?
  3. Il formato del file di input deve essere in IOB ad es. Eric NNP B-PERSON?
  4. Ci sono risorse - a parte il libro di ricette nltk e nlp con python che posso usare?

Vorrei davvero apprezzare aiuto in questo senso

risposta

18

Siete impegnati ad utilizzare NLTK/Python? Ho avuto gli stessi problemi con te e ho ottenuto risultati molto migliori usando il riconoscitore di entità con nome di Stanford: http://nlp.stanford.edu/software/CRF-NER.shtml. Il processo per addestrare il classificatore usando i propri dati è molto ben documentato nelle FAQ.

Se si ha realmente bisogno di usare NLTK, ho trovato la mailing list per un consiglio da altri utenti: http://groups.google.com/group/nltk-users.

Spero che questo aiuti!

+1

Navigando attraverso il sito SNER, ho visto che c'è anche un'interfaccia python [qui] (https://github.com/dat/pyner). Non sei sicuro di quanto sia maturo, ma potrebbe essere utile. – senderle

+0

Questa domanda si presenta molto nelle ricerche per migliorare il riconoscimento dell'entità con nome nltk, ma dire "lol usa qualcos'altro" non è così informativo. – blueblank

+5

Ho avuto lo stesso problema e ho condiviso ciò che ha funzionato per me. Scusa se questo ti ha sconvolto :( – jjdubs

10

È possibile utilizzare facilmente Stanford NER insieme a nltk. Lo script Python è come

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()) 

per addestrare il vostro propri dati e di creare un modello è possibile fare riferimento alla prima domanda su Stanford NER FAQ.

Il collegamento è http://nlp.stanford.edu/software/crf-faq.shtml

0

Ho anche avuto questo problema, ma sono riuscito a lavorare fuori. È possibile utilizzare i propri dati di allenamento. Ho documentato i principali requisiti/passaggi per questo nel mio github repository.

Ho utilizzato NLTK-trainer, quindi in modo basilare è necessario ottenere i dati di allenamento nel formato corretto (token NNP B-tag) ed eseguire lo script di addestramento. Controlla il mio deposito per maggiori informazioni.

Problemi correlati