2010-02-23 19 views
8

Estoy buscando una biblioteca Java para hacer una revisión ortográfica inicial/normalización de datos en el contenido de texto generado por el usuario, imagine los intereses ingresados ​​en un perfil de Facebook.Corrección de ortografía para la normalización de datos en Java

Este texto se convertirá en token en algún momento (antes o después de la corrección ortográfica, lo que sea que funcione mejor) y parte del mismo se utilizará como clave de búsqueda (coincidencia exacta). Sería bueno reducir los errores ortográficos y similares para producir más coincidencias. Sería incluso mejor si la corrección tuviera un buen rendimiento en tokens de más de una sola palabra, p. "café trinking" se convertiría en "tomar café" y no "pensar en café".

He encontrado las siguientes bibliotecas Java para hacer la corrección ortográfica:

  1. CHILLÓN no parecen estar bajo desarrollo activo. Además, el enfoque basado en la distancia del diccionario parece inadecuado debido al uso de un lenguaje no estándar en los perfiles de redes sociales y tokens de varias palabras.
  2. APACHE LUCENE parece tener un statistical spell checker que debería ser mucho más adecuado. La pregunta aquí sería cómo crear un buen diccionario? (No estamos utilizando Lucene de lo contrario, por lo que no existe un índice existente.)

¡Cualquier sugerencia es bienvenida!

Respuesta

10

Lo que desea implementar no es un corrector ortográfico sino una búsqueda difusa. El ensayo de Peter Norvig es un buen punto de partida para construir una búsqueda difusa de candidatos verificados en un diccionario.

Como alternativa, eche un vistazo a BK-Trees.

Un índice n-gram (utilizado por Lucene) produce mejores resultados para palabras más largas. El enfoque para producir candidatos hasta una distancia de edición dada probablemente funcionará lo suficientemente bien para palabras encontradas en el texto normal, pero no funcionará lo suficientemente bien para nombres, direcciones y textos científicos. Sin embargo, aumentará su tamaño de índice.

Si tiene los textos indexados, tiene su cuerpo de texto (su diccionario). Solo lo que está en sus datos se puede encontrar de todos modos. No necesita usar un diccionario externo.

Un buen recurso es Introduction to Information Retrieval - Dictionaries and tolerant retrieval. Hay una breve descripción de la corrección ortográfica sensible al contexto.

+0

Gracias por su perspicaz comentario y el interesante enlace al libro. Tienes razón, lo que realmente quiero es búsqueda difusa. Sin embargo, veré cómo/si funciona la corrección ortográfica para mi aplicación particular (quizás sea lo suficientemente buena en este momento) y vuelva a visitar las ideas que mencionó más adelante. ¡Muchas gracias! – dareios

0
+0

Me gusta mucho el pequeño corrector ortográfico de Norvig, ¡es un trabajo maravilloso! Sin embargo, la pregunta se reduce a seleccionar el corpus de texto correcto (al igual que con el LUCENE más avanzado). Tomar frecuencias del trabajo libremente disponible de Shakespeare no ayudará a corregir los perfiles de las redes sociales. – dareios

+0

Entonces, ¿está diciendo que no se aborda "trinking" en lugar de "beber"? Tendré que volver a leer el artículo de Norvig y quizás implementarlo para mí, porque pensé que podría ayudar. – duffymo

+0

Me refería al problema de seleccionar el corpus correcto (para obtener las frecuencias correctas, por ejemplo, no las frecuencias de la literatura inglesa, sino las adecuadas para datos de redes sociales de calidad variable). Si entiendo el código de Norvig correctamente, solo se tienen en cuenta las distancias de edición para palabras sueltas de hasta 2. Eso significa que funcionará sorprendentemente bien para palabras sueltas y para nada para tokens de palabras múltiples. – dareios

2

Con respecto a llenar un índice de Lucene como la base de un corrector ortográfico, esta es una buena manera de resolver el problema. Lucene tiene un out the box SpellChecker que puede usar.

Hay muchos word dictionaries disponibles en la red que puede descargar y usar como base para su índice de lucene. Sugiero complementar estos con una serie de textos específicos de dominio, como, por ejemplo, si sus usuarios son médicos, entonces quizás complementen el diccionario con textos originales de tesis y publicaciones médicas.

+0

Gracias, creo que construir un índice de Lucene será mi segundo intento después de que lo intenté si Jazzy funciona "lo suficientemente bien". – dareios

+0

Ambos enlaces en esta publicación parecen estar rotos –

Cuestiones relacionadas