wordnetlemmatizer spanish lemmatizer example and nlp wordnet stemming text-analysis lemmatization

spanish - stemming nlp



Stemmers vs Lemmatizers (3)

El procesamiento del lenguaje natural (NLP), especialmente para el inglés, ha evolucionado hasta convertirse en una etapa en la que la derivación se convertiría en una tecnología arcaica si existieran lematizadores "perfectos". Es porque los lematizadores cambian la forma de la superficie de una palabra / token en algunos tallos sin sentido.

Por otra parte, la definición del lematizador "perfecto" es cuestionable debido a que diferentes tareas de PNL habrían requerido diferentes niveles de lematización. Ej. Convertir palabras entre verbo / sustantivo / adjetivo .

Stemmers

[in]: having [out]: hav

Lemmatizadores

[in]: having [out]: have

  • Entonces, la pregunta es, ¿son realmente útiles hoy en día los English stemmers? Ya que tenemos una gran cantidad de herramientas de lematización para inglés

  • Si no es así, ¿cómo deberíamos avanzar para construir lematizadores robustos que puedan asumir los nounify de nounify , verbify , adjectify y adverbify ?

  • ¿Cómo podría la tarea de lematización escalarse fácilmente a otros lenguajes que tienen estructuras morfológicas similares a las del inglés?


La respuesta depende en gran medida de la tarea o del campo de estudio específico dentro del procesamiento del lenguaje natural (NLP) de lo que estamos hablando.

Vale la pena señalar que se ha demostrado que en algunas tareas específicas, como el Análisis de Sentimientos (que es un subcampo favorito en PNL), el uso de un Stemmer o Lemmatizer como una característica en el desarrollo de un sistema (entrenamiento de una máquina de aprendizaje) modelo) no tiene un efecto notable en la precisión del modelo, sin importar cuán grande sea la herramienta. A pesar de que mejora un poco el rendimiento, existen funciones más importantes, como el análisis de dependencias, que tienen un potencial considerable para trabajar en dichos sistemas.

Es importante mencionar que las características del lenguaje en el que estamos trabajando también deben tenerse en cuenta.


Una aplicación clásica de stemming o lemmatization es la mejora de los resultados de los motores de búsqueda: al aplicar stemming (o lematización) a la consulta y (antes de la indexación) a todos los tokens indexados, los usuarios que buscan, digamos, "having" pueden para encontrar resultados que contengan "tiene".

(Podría decirse que los verbos son poco comunes en la mayoría de las consultas de búsqueda, pero el mismo principio se aplica a los sustantivos, especialmente en los idiomas con una morfología de sustantivo rico).

Con el propósito de mejorar los resultados de la búsqueda, no es realmente importante si la raíz (o lema) es significativa ("tener") o no ("hav"). Solo necesita poder representar la palabra en cuestión y todas sus formas flexivas. De hecho, algunos sistemas usan números u otros tipos de cadenas de identificación en lugar de stem o lemma (o base form o como se llame).

Por lo tanto, este es un ejemplo de una aplicación donde los lematizadores (según su definición) son tan buenos como los lemmatizadores.

Sin embargo, no estoy del todo convencido de que su definición (implícita) de "stemmer" y "lemmatizer" sea generalmente aceptada. No estoy seguro de si hay alguna definición generalmente aceptada de estos términos, pero la forma en que los defino es la siguiente:

Stemmer: una función que reduce las formas de inflexión a tallos o formas de base, usando reglas y listas de sufijos conocidos.

Lemmatizador: una función que realiza la misma reducción, pero que utiliza un diccionario integral de forma completa para poder tratar con formularios irregulares.

Con base en estas definiciones, un lemmatizador es esencialmente una versión de mayor calidad (y más cara) de un tallo.


P1: "[..] ¿los talladores de inglés son útiles en la actualidad? Ya que tenemos una gran cantidad de herramientas de lematización para inglés"

Sí. Los Stemmers son mucho más simples, más pequeños y generalmente más rápidos que los lemmatizadores, y para muchas aplicaciones sus resultados son lo suficientemente buenos . Usar un lematizador para eso es un desperdicio de recursos. Considere, por ejemplo, la reducción de dimensionalidad en la recuperación de información. Reemplazará toda la unidad / conducción por driv tanto en los documentos buscados como en la consulta. No importa si es drive o driv o x17a $ siempre que agrupe palabras relacionadas entre sí.

P2: "[...] ¿cómo deberíamos avanzar para construir lemmatizadores robustos que puedan tomar preprocesos de nounificar, verbify, adjectify y adverbify?

¿Cuál es su definición de lema? ¿Incluye derivación ( unidad - controlador ) o solo inflexión ( unidad - unidades - conducción )? ¿Tiene en cuenta la semántica?

Si desea incluir la derivación (que la mayoría de las personas diría incluye verbos sustantivos, etc.), tenga en cuenta que la derivación es mucho más irregular que la inflexión. Hay muchas idiosincracies, lagunas, etc. ¿Realmente desea cambiar ( cambiar los trenes ) y cambiar (como monedas) para tener el mismo lema? Si no, ¿dónde dibujas el límite? ¿Qué hay de nervio - nervios , tierra - desenterrar - terrícola , ... Realmente depende de la aplicación.

Si se tiene en cuenta la semántica (el banco se etiquetaría como dinero bancario o banco-río según el contexto), ¿qué tan profundo se va (¿se distingue entre institución bancaria y banco ?). Puede que algunas aplicaciones no se preocupen por esto, que algunos quieran distinguir la semántica básica, algunos podrían desear que sea multada.

P3: "¿Cómo podría escalarse fácilmente la tarea de lematización a otros idiomas que tienen estructuras morfológicas similares a las del inglés?"

¿Qué quiere decir con "estructuras morfológicas similares al inglés"? El inglés tiene muy poca morfología flexiva. Hay buenos lematizadores para lenguajes de otros tipos morfológicos (verdaderamente flexivos, aglutinantes, plantilla, ...).

Con una posible excepción de lenguajes aglutinantes, yo diría que una tabla de búsqueda (por ejemplo, un trie comprimido) es la mejor solución. (Posiblemente con algunas reglas de respaldo para palabras desconocidas como nombres propios). La búsqueda es seguida por algún tipo de desambiguación (desde trivial, tome la primera, o tome la primera consistente con las palabras POS tag, hasta mucho más sofisticada). Las desambiguaciones más sofisticadas suelen ser algoritmos estocásticos supervisados ​​(por ejemplo, TreeTagger o Faster ), aunque también se ha realizado una combinación de aprendizaje automático y reglas creadas manualmente (véase, por ejemplo, this ).

Obviamente para la mayoría de los idiomas no desea crear la tabla de búsqueda a mano, sino generarla a partir de una descripción de la morfología de ese idioma. En el caso de los lenguajes flexivos, puede utilizar el Hajic para el checo o el Mikheev para el ruso, o, si es atrevido, usa la morfología de dos niveles. O puede hacer algo en el medio, como Hana (yo mismo) (Tenga en cuenta que estos son todos los analizadores morfológicos completos que incluyen la lematización). O puede aprender el lematizador de forma no supervisada, como la Yarowsky y Wicentowski , posiblemente con post-procesamiento manual, corrigiendo las palabras más frecuentes.

Hay demasiadas opciones y realmente todo depende de lo que quieras hacer con los resultados.