2010-11-20 5 views
5

Soy un novato en NLP y trato de descubrir cómo un reconocedor de entidades con nombre anota las entidades con nombre. Estoy experimentando con el kit de herramientas NER de Stanford. Cuando uso el NER en conjuntos de datos estándar más formales donde se siguen todas las convenciones de nombres para representar entidades con nombre, como en noticias o blogs de noticias, el NER anota las entidades correctamente. Sin embargo, cuando ejecuto NER con conjuntos de datos informales como Twitter, donde las entidades nombradas pueden no estar en mayúsculas como debería haber sido, el NER no anota las entidades. El clasificador que estoy usando es un clasificador serializado 3-CRF. ¿Alguien me puede decir cómo puedo hacer que el NER reconozca entidades de minúsculas también? Cualquier sugerencia útil sobre cómo hackear el NER y dónde se debe hacer esta mejora es muy apreciada. Gracias de antemano por su ayuda.Stanford NER toolkit: reconocimiento de entidades en minúsculas

+0

¿Estás formación sobre los tweets etiquetados, o es usted tratando de usar un modelo preexistente que probablemente ya esté entrenado en el texto de las noticias? –

Respuesta

1

Creo que Twitter será muy difícil para esta aplicación. Las letras mayúsculas son una gran pista que, como dices, a menudo faltan en Twitter. Una comprobación de diccionario para eliminar palabras válidas en inglés es de uso limitado porque los textos de Twitter incluyen una gran cantidad de abreviaturas y, a menudo, son únicos.

Quizás el etiquetado de PArt of Speech y el análisis de frecuencia se puedan usar para ayudar a mejorar la detección de los nombres propios.

+2

Gracias por la respuesta. Lo que planeo hacer es usar el nuevo conjunto de características que incluye entidades tanto en letras mayúsculas como minúsculas para generar el serializador Stanford NLP y luego usar Stanford NER para anotarlo. Debería haber funcionado como creo, pero de alguna manera después de que todo funciona y obtengo el serializador y ejecuto stanford NER en él, nombro todas las entidades como PERSON aunque solo tengo una entidad anotada como PERS en los datos tarining. – Anu

+1

El etiquetado de punto de venta hubiera sido mejor, supongo, pero ya estoy demasiado lejos usando Stanford NER y tengo curiosidad por trabajar en ello para que funcione también en minúsculas. – Anu

4

Me temo que no hay una manera fácil de obtener los modelos entrenados que distribuimos para ignorar la información del caso en tiempo de ejecución. Por lo tanto, sí, generalmente solo etiquetarán los nombres en mayúscula. Sería posible entrenar un modelo sin carcasa, que funcionaría razonablemente (pero no tan bien en texto encapsulado, ya que el caso es una gran pista en inglés (pero no en alemán, chino, árabe, etc.).

+3

Respuesta revisada: ahora estamos distribuyendo modelos sin causa para varias de nuestras herramientas, que funcionarán mucho mejor si se ejecutan en texto sin carcasa. (Aunque no tan bien como ejecutar modelos con recuadro en texto en mayúscula, ya que las mayúsculas brindan información útil en inglés). Puede descargarlas por separado desde aquí: http://nlp.stanford.edu/software/CRF-NER.shtml. –

+0

Y ahora tenemos un truecaser. Ahora puede encontrar una respuesta mucho más detallada a esta pregunta aquí: https://stackoverflow.com/questions/45097507/how-to-recognize-a-named-entity-that-is-lowcase-such-as-kobe- bryant-by-corenlp/45122541 # 45122541 –

2

Along con las sugerencias de otras personas. Si está utilizando un clasificador basado en características, definitivamente agregaría las 100-200 subcadenas de letras más comunes de 3 a 4 en nombre de las personas o haría un gazzeteer bajo una característica reconocida. Hay ciertos patrones que son obligado a aparecer un poco en nombres personales que no aparecen muy a menudo en otros tipos de palabras, como "eli".

1

La pregunta es un poco antigua, pero alguien más puede beneficiarse de esto idea.

Una forma de entrenar potencialmente un clasificador para minúsculas sería ejecutar el clasificador de mayúsculas que ya tiene contra un gran conjunto de datos de inglés adecuado, luego procese ese texto etiquetado para eliminar mayúsculas y minúsculas. Luego tienes un corpus etiquetado que puedes usar para entrenar a un nuevo clasificador. Este nuevo clasificador no será perfecto contra Twitter debido a las peculiaridades de los tweets, pero es una manera rápida de arrancarlo.

4

Sé que es un hilo antiguo pero espero que ayude a alguien. Como ha respondido christopher manning, la forma de obtener la minúscula detectada es reemplazar english.muc.7class.distsim.crf.ser.gz con english.muc.7class.caseless.distsim.crf.ser.gz que puede obtener cuando descomprimir el archivo jar central sin núcleo nlp.

Por ejemplo, en mi archivo pitón he guardado todo lo mismo, excepto el cambio al nuevo archivo y funciona perfectamente (bueno, la mayoría de las veces)

st = NERTagger('/Users/username/stanford-corenlp-python/stanford-ner-2014-10-26/classifiers/english.muc.7class.caseless.distsim.crf.ser.gz', '/Users/username/stanford-corenlp-python/stanford-ner-2014-10-26/stanford-ner.jar')