2012-07-04 14 views
35

Próbuję wyodrębnić nazwane elementy z mojego tekstu za pomocą NLTK. Uważam, że NLTK NER nie jest zbyt dokładny dla mojego celu i chcę dodać kilka własnych tagów. Próbowałem znaleźć sposób na wyszkolenie mojego NER, ale wydaje mi się, że nie jestem w stanie znaleźć odpowiednich zasobów. Mam kilka pytań dotyczących NLTK-NLTK Rozpoznawanie nazwanego obiektu przy użyciu niestandardowych danych

  1. mogę korzystać z własnych danych do pociągu jest wyznaczony podmiot Rozpoznawanie w NLTK?
  2. Jeśli mogę ćwiczyć używając własnych danych, czy plik named_entity.py ma zostać zmodyfikowany?
  3. Czy format pliku wejściowego musi być w IOB np. Eric NNP B-PERSON?
  4. Czy są jakieś zasoby - oprócz książki kucharskiej nltk i nlp z pythonem, których mogę użyć?

Naprawdę uprzejmie pomocy w tym zakresie

Odpowiedz

18

Czy popełnione użyciem NLTK/Python? Wpadłem na te same problemy, co ty, i miałem o wiele lepsze wyniki, używając rozpoznawania nazwanych obiektów Stanford: http://nlp.stanford.edu/software/CRF-NER.shtml. Proces szkolenia klasyfikatora na podstawie własnych danych jest bardzo dobrze udokumentowany w FAQ.

Jeśli naprawdę potrzebujesz używać NLTK, natknęłabym się na listę mailingową, aby uzyskać porady od innych użytkowników: http://groups.google.com/group/nltk-users.

Mam nadzieję, że to pomoże!

+1

Przeglądając stronę SNER, zobaczyłem, że istnieje nawet interfejs Pythona [tutaj] (https://github.com/dat/pyner). Nie wiem, jak dojrzałe, ale może być pomocne. – senderle

+0

To pytanie pojawia się dużo w poszukiwaniu poprawienia rozpoznawania nazwanych obiektów nltk, ale powiedzenie "lol use something else" nie jest tak pouczające. – blueblank

+5

Miałem ten sam problem i podzieliłem się tym, co sprawdziło się u mnie. Przepraszam, jeśli Cię to zdenerwowało :( – jjdubs

10

Możesz łatwo używać Stanford NER wraz z nltk. Skrypt Pythona jest jak

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

wytresować własnych danych i stworzenie modelu można odnieść się do pierwszego pytania na Stanford NER FAQ.

Link jest http://nlp.stanford.edu/software/crf-faq.shtml

0

miałem również ten problem, ale udało mi się dogadać. Możesz użyć własnych danych treningowych. Udokumentowałem główne wymagania/kroki w tym celu w mojej github repository.

Użyłem NLTK-trainer, więc w zasadzie musisz pobrać dane treningowe we właściwym formacie (znacznik B tokena NNP) i uruchomić skrypt szkoleniowy. Sprawdź moje repozytorium, aby uzyskać więcej informacji.

Powiązane problemy