Как улучшить голландские NER chunkers в NLTK
Благодаря этому отличному ответу я получил хорошее начало, обучая свой собственный блок NE для голландского языка, используя NLTK и корпус Conll2002: NLTK с именем распознавания сущности на голландском языке. Используя эти подсказки, я также смог легко обучить улучшенного тегера (основанного на классификации IIS), который маркирует с точностью около 95%, что достаточно для моих целей.
Тем не менее, F-мера признания названного лица составляет всего около 40%. Как я могу улучшить это? Я пытался использовать встроенные алгоритмы, такие как Maxent, но я получаю только ошибку памяти. Затем я перешел, чтобы попытаться заставить Megam работать, но он не скомпилируется на моей машине с Windows, и больше нет доступных бинарных файлов. Я также зашел в тупик, пытаясь внедрить другое программное обеспечение или методы, такие как libSVM, YamCha, CRF++ и Weka. У всех есть свое руководство и проблемы, которые, кажется, продолжают накапливаться. Так что я чувствую себя немного ошеломленным.
Что мне нужно, так это практический подход к NER для голландцев. Было проведено много исследований, и я нашел статьи, в которых цитируются F-меры от 70% до 85%. Это было бы прекрасно! У кого-нибудь есть подсказка, где я мог бы найти улучшенную реализацию или как я мог бы создать ее самостоятельно (используя Windows)? Я бы предпочел использовать NLTK для его гибкости, но если есть стандартное решение в другом наборе инструментов, я тоже играю для этого. Даже коммерческие инструменты будут приветствоваться.
Вот код, который я сейчас использую для оценки:
import nltk
from nltk.corpus import conll2002
tokenizer = nltk.data.load('tokenizers/punkt/dutch.pickle')
tagger = nltk.data.load('taggers/conll2002_ned_IIS.pickle')
chunker = nltk.data.load('chunkers/conll2002_ned_NaiveBayes.pickle')
test_sents = conll2002.tagged_sents(fileids="ned.testb")[0:1000]
print "tagger accuracy on test-set: " + str(tagger.evaluate(test_sents))
test_sents = conll2002.chunked_sents(fileids="ned.testb")[0:1000]
print chunker.evaluate(test_sents)
# chunker trained with following commandline:
# python train_chunker.py conll2002 --fileids ned.train --classifier NaiveBayes --filename /nltk_data/chunkers/conll2002_ned_NaiveBayes.pickle