2012-07-02 13 views
7

Estoy tratando de extraer entidades con nombre del texto en holandés. Usé nltk-trainer para entrenar a un etiquetador y un chunker en el corpus holandés conll2002. Sin embargo, el método de análisis de chunker no detecta ninguna entidad con nombre. Aquí está mi código:Reconocimiento de entidad con nombre NLTK en holandés

str = 'Christiane heeft een lam.' 

tagger = nltk.data.load('taggers/dutch.pickle') 
chunker = nltk.data.load('chunkers/dutch.pickle') 

str_tags = tagger.tag(nltk.word_tokenize(str)) 
print str_tags 

str_chunks = chunker.parse(str_tags) 
print str_chunks 

Y la salida de este programa:

[('Christiane', u'N'), ('heeft', u'V'), ('een', u'Art'), ('lam', u'Adj'), ('.', u'Punc')] 
(S Christiane/N heeft/V een/Art lam/Adj ./Punc) 

que estaba esperando Christiane para ser detectado como una entidad nombrada. ¿Alguna ayuda?

+0

Lo que sucede cuando "Christiane" aparece en el medio de la oración? –

+0

@larsmans No hay entidades tampoco. Incluso intenté con una oración del corpus de entrenamiento, pero no tuve suerte. Utilicé el train_chunker.py en el corpus conll2002 (ned.train) – user1491915

+0

¿Puedes mostrar exactamente cómo usaste train_chunker.py? Mi demostración en http://text-processing.com/demo/tag/ reconoce a Christiane, por supuesto que utilicé train_chunker en conll2002, por lo que debe haber una diferencia en los argumentos de entrenamiento. – Jacob

Respuesta

7

El corpus conll2002 tiene texto en español y en holandés, por lo que debe asegurarse de usar el parámetro fileids, como en python train_chunker.py conll2002 --fileids ned.train. El entrenamiento en español y holandés tendrá resultados pobres.

El algoritmo predeterminado es un Chunker basado en Tagger, que no funciona bien en conll2002. En su lugar, utilizar un clasificador basado chunker como NaiveBayes, por lo que el comando completo podría tener este aspecto (y he confirmado que el chunker resultante reconoce "Christiane" como un "PER"):

python train_chunker.py conll2002 --fileids ned.train --classifier NaiveBayes --filename ~/nltk_data/chunkers/conll2002_ned_NaiveBayes.pickle

+0

He reproducido el problema en cuestión, y ocurre incluso si el etiquetador y el chunker están entrenados solo en ned.train. Además, el chunker parece incapaz de identificar ningún NE incluso en las oraciones del corpus de entrenamiento con las etiquetas POS de oro. – Qnan

+0

Interesante ... Eso hace que funcione. Gracias, @Jacob. – Qnan

Cuestiones relacionadas