Actualmente estoy analizar un montón de correos y desea obtener palabras y otros símbolos interesantes de correos (incluso con errores de ortografía o combinación de caracteres y letras, como "zebra21" o "customer242"). Pero, ¿cómo puedo saber que "0013lCnUieIquYjSuIA" y "anr5Brru2lLngOiEAVk1BTjN" no son palabras y no son relevantes? ¿Cómo extraer palabras y descartar tokens que son errores de codificación o partes de la firma de pgp o cualquier otra cosa que recibamos en los correos electrónicos y saber que nunca nos interesarán?¿Cómo se reconocen las palabras en el texto con tokens sin palabras?
Respuesta
que necesita para decidir en un buen criterio suficiente para una palabra y escribir una expresión regular o un manual para hacerlo cumplir.
algunas reglas que se pueden extrapolar de sus ejemplos:
- palabras pueden comenzar con una letra captial o estar en letras mayúsculas, pero si usted tiene más de decir, 2 letras mayúsculas y más de 2 letras minúsculas dentro de una palabra, no es una palabra
- Si tiene números dentro de la palabra, no es una palabra
- si es más largo que decir, 20 caracteres
no hay truco de magia. debe decidir qué quiere que sean las reglas y hacer que sucedan.
Al manera alternativa es la formación de algún tipo de sistema de Markov modelos ocultos de reconocer las cosas que suenan como palabras pero creo que esto es una exageración para lo que quiere hacer.
http://en.wikipedia.org/wiki/English_words_with_uncommon_properties
puede hacer reglas que rechazan cualquier cosa con estas 'propiedades poco comunes' para construir un sistema que acepta más palabras reales
A pesar de que en general, de acuerdo con la respuesta de shoosh, su enfoque hace que sea fácil de lograr alta recordación pero también baja precisión, es decir, obtendría casi todas las palabras reales, pero también muchas palabras sin palabras. Si su definición de la palabra es demasiado restrictiva, es al revés, pero tampoco es lo que quiere, ya que entonces echaría de menos casos como 'zebra123'. Así que aquí están algunas ideas sobre cómo mejorar la precisión:
Se puede pensar que merezca sobre si se puede determinar qué partes de un correo electrónico pertenecen al texto principal y cuáles son los pies de página, como las firmas PGP. Estoy seguro de que es posible encontrar heurísticas simples que coincidan con la mayoría de los casos, p. corte de todo debajo de una línea que consta únicamente de caracteres '-'-.
En función de los criterios de rendimiento que puede que desee comprobar si una palabra es una palabra real o contiene una palabra real, haciendo coincidir contra una sencilla lista de palabras. Es fácil encontrar listas bastante exhaustivas de palabras en inglés en la web, y también puedes compilar una tú mismo extrayendo palabras de un corpus de texto grande y limpio.
El uso de un analizador léxico, puede filtrar cada ficha que está marcado como desconocido.
Algunas estadísticas simples le pueden indicar qué tan probable es que algo es una palabra. Los tokens que ocurren con alta frecuencia muy probablemente sean palabras. Los tokens que aparecen solo una vez o cuyo número está por debajo de un cierto umbral muy probablemente no sean palabras. Los errores comunes de ortografía deberían aparecer más de una vez y los más comunes pueden ignorarse.
Algunas de estas sugerencias claramente no funcionan para casos como 'zebra123'. De nuevo, simplemente cortar o dividir en números en la palabra puede hacer el truco.
Mi enfoque general sería identificar tokens que ciertamente son palabras (usando las sugerencias anteriores), identificar tokens que ciertamente no son palabras (usando una expresión regular), y luego mirar (con los ojos) a los pocos cientos o miles de tokens restantes para encontrar características comunes para manejarlos por separado.
- 1. Detecta las palabras más probables del texto sin espacios/palabras combinadas
- 2. ¿Cómo se eligen las palabras SYNC?
- 3. Identificación de palabras y frases importantes en el texto
- 4. Android: ¿Cómo ajustar el texto con caracteres? (No por palabras)
- 5. Segmentar palabras y agrupar palabras con guiones y apóstrofos del texto
- 6. ¿Cómo se descompone un texto dado en palabras del diccionario?
- 7. Combinaciones de palabras sin repetición
- 8. ¿Cómo dividir las palabras usando javascript
- 9. Puede subrayar palabras en TextView texto
- 10. Limitar palabras en un área de texto
- 11. Detener la división de palabras entre palabras
- 12. pocketsphinx cómo determinar sin palabras gramaticales
- 13. ¿Cómo reconoce Google 2 palabras sin espacios?
- 14. detener palabras en el sitio
- 15. Javascript: regex para reemplazar palabras dentro del texto y no parte de las palabras
- 16. Algoritmo deseado: Encuentre todas las palabras de un diccionario que sean similares a las palabras en un texto libre
- 17. ¿Contar la frecuencia de las palabras en un texto?
- 18. Rodee dos palabras con comillas en Vim
- 19. Eliminar palabras pequeñas con Python
- 20. En un cuadro de texto, proteja las primeras palabras, pero permita agregar/editar texto más allá de esas palabras
- 21. ¿Dónde se definen las palabras clave en Ruby?
- 22. Lista de palabras "Detener palabras" para inglés?
- 23. ¿Cómo clasificar el texto según los grupos de palabras clave?
- 24. Todas las Palabras, excepto uno
- 25. Concordancia de palabras más inteligente en PHP para palabras largas?
- 26. MySQL búsqueda de texto completo plural/singular de las palabras
- 27. Extraer palabras de un archivo de texto
- 28. Stemming palabras en inglés con Lucene
- 29. Encontrar las palabras del diccionario
- 30. MySQL búsqueda de texto completo varias palabras
gracias por el consejo, empecé como este, que calculé NrLetterToDigitChanges y NrLowerToUpperChnages y que creé diferen s "nivel" de las palabras actualmente para NrLowerToUpperChnages <= 1 y NrLetterToDigitChanges <= 1 es el primer nivel y si la suma de esta dos es más de 8, no es una palabra, entonces definiré algunos niveles más y veré qué me funciona mejor, gracias – zebra
. Asegúrese de escribir documentación decente porque estos nombres no significan mucho para un lector casual. – shoosh