Pregunta

dando una tabla de base de datos con datos de gran tamaño en el mismo, lo que es la mejor práctica para eliminar el ruido de texto tales como:

  • fghfghfghfg
  • qsdqsdqsd
  • rtyrtyrty

que el ruido se almacena en el campo "Nombre".

Estoy trabajando en datos con estructuras estándar de Java.

¿Fue útil?

Solución

Bueno, se puede construir un clasificador utilizando métodos de PNL, y entrenarlo en ejemplos de ruido y sin ruido. Un caso de que se puede tomar es el detector de idioma de Apache Tika. Si el detector de lenguaje dice 'me pega' que podría ser lo suficientemente bueno.

Otros consejos

La eliminación de ese tipo de cosas no es tan fácil como podría parecer.

Para nosotros los seres humanos, es fácil ver que "djkhfkjh" no tiene ningún sentido. Pero, ¿cómo sería una computadora detectar este tipo de ruido? ¿Cómo se sabe que "Eyjafjallajökull" es simplemente alguien que rompe su teclado, o la montaña más overbuzzed en el último par de años?

No se puede hacer esto de forma fiable sin muchos falsos positivos, por lo que después de todo, está filtrando los falsos positivos y verdaderos positivos por la mano de nuevo.

Obtener un diccionario con tantos nombres se pueden encontrar y filtrar los datos para mostrar los que no están en el diccionario. Después hay que eliminarlos uno por uno para asegurarse de que no elimine los datos válidos. Ordenar la lista por el nombre puede ayudar a eliminar más filas a la vez.

Si el resto del texto es el Inglés, se puede utilizar una lista de palabras. Si hay más de un porcentaje determinado (por ejemplo, 50%) de las palabras en el texto no están en la lista de palabras, es probable que sea el ruido.

Es posible que desee establecer un umbral de, digamos, 5 palabras, para evitar borrar mensajes como 'LOL'.

En la mayoría de las instalaciones de Linux, se puede extraer una lista de palabras de la aspell corrector ortográfico como esto:

aspell --lang en dump master

Vamos a necesitar a empezar por definir "Texto del ruido" de manera más eficaz. La definición del problema es la parte difícil aquí. No se puede escribir código que dirá "deshacerse de las cadenas que son algo así como _____." Parece que el patrón que haya identificado es "un conjunto coherente de tres caracteres seguidos, y se repite el conjunto al menos una vez, pero no finaliza de forma inadecuada (que podría terminar en un personaje de la media del conjunto)."

Ahora escribir una expresión regular que coincida con ese patrón, y prueba de ello.

Pero apuesto a que hay otros patrones que usted está buscando ...

Inspeccionar cada palabra y ver la cantidad de redundancia está allí. Si hay más de tres grupos repetidos consecutivos de cartas, es un buen candidato para el ruido. También, busque los grupos de letras que normalmente no van de la mano y para los grupos de letras consecutivas que también son consecutivos en el teclado. Si una palabra entera se hace de este tipo de letras que son vecinos del teclado, también reclama un lugar en la lista de ruido.

El entrenamiento de un clasificador PNL probablemente sería el mejor camino a seguir. Sin embargo, un método más simple podría ser simplemente comprobar que existe cada palabra en una lista de todas las palabras "válidos" conocidos. La mayoría de los sistemas Unix tienen un archivo llamado / usr / share / dict / words que se pueden utilizar para este propósito. Además, Ubuntu se expande en esto con / usr / share / dict / american-Inglés, / usr / share / dict /-americana enorme, y / usr / share / dict / american-loco, cada una lista más completa a continuación, la última. Estas listas también incluyen una gran cantidad de errores ortográficos comunes, por lo que no filtrar texto que técnicamente no es una palabra, pero claramente reconocible como una palabra.

Si usted es realmente ambicioso, puede combinar estos enfoques, y el uso de estas listas de palabras para entrenar a un clasificador bayesiano o de máxima entropía.

Hay un montón de buenas respuestas aquí. ¿Cuál (s) que funcionará para usted depende mucho de los detalles de su problema -. Por ejemplo, es la entrada supone que las palabras en inglés, nombres de usuario, apellidos de las personas, etc.

Uno de los enfoques: escribir un programa para analizar lo que se tiene en cuenta la entrada "válida". Realizar un seguimiento de la frecuencia con que aparece cada posible secuencia de tres letras en el texto legítimo. A continuación, cuando se tiene la entrada para comprobar, vistazo a cada secuencia de tres letras de la entrada y buscar su frecuencia esperada. Algo así como "xzt" probablemente tiene una frecuencia cercana a cero. Si usted tiene demasiados subsecuencias por el estilo, marcarlo como basura.

Los problemas con esto:

  1. Usted puede tratar la mala ortografía como basura, por ejemplo, si se olvida de que alguien ponga una 'u' después de una 'q' en una palabra.
  2. No se pondrá al día de entrada como "thethethethe".

Shove los fragmentos de texto en Google y ver cuántos resultados que obtiene.

ejemplos # 1 y # 2 se puede eliminar mediante un analizador que trata de averiguar cómo se pronuncia el texto. Sin importar el idioma que están inefable y por lo tanto no palabras.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top