Tengo un montón de documentos (66 informes trimestrales sobre quejas y reclamaciones sobre los servicios sanitarios prestados y cada vez más) y una lista de palabras que me gustaría seguir a lo largo del tiempo. ¿Cuál es la forma más fácil de hacerlo? He jugado con la biblioteca de minería de textos de R y me he frustrado bastante. También he intentado usar RapidMiner y se ahoga en tres documentos (se quedó sin memoria). Agradecería mucho cualquier sugerencia, idea, etc...
Respuestas
¿Demasiados anuncios?Existen varios proyectos de PNL estadística, con NLTK una de las más activas de código abierto. Sin embargo, el seguimiento de la frecuencia de las palabras a lo largo del tiempo y de algunos cientos de documentos es probablemente un problema lo suficientemente sencillo como para codificarlo usted mismo.
- Es conveniente que empiece por convertir sus documentos a un formato fácil de procesar, como el texto plano ala su comentario. Convierte a minúsculas, elimina los signos de puntuación y luego divide cada documento en palabras. Comience con una expresión regular como / \b /, y luego filtrar los números y los errores evidentes.
- A continuación, probablemente querrá dejar caer palabras de parada . Aquí hay una decente lista de palabras de parada para el inglés fuentes lingüísticas.
- Ahora cuente cada aparición de una palabra en cada documento. Probablemente querrá construir un índice hashtable, con la palabra (no parada) como clave y el valor como un recuento entero.
- Si quieres ser más sofisticado, puedes sacar Colocaciones añadiendo cada uno de los anteriores o posteriores $n-1$ palabras a su índice. O incluso pasar cada palabra por un stemmer así Gema de rubí .
- Por último, ordene sus palabras por el número de índices.
Estos son sus pasos para el documento de texto plano: El rápido zorro marrón salta sobre el rápido perro marrón perezoso.
- Convertir a minúsculas, y dejar de lado la puntuación: el rápido zorro marrón salta sobre el rápido perro marrón perezoso
- Dividir en palabras con / \b /, elimina las palabras que son todos los espacios en blanco: el; rápido; marrón; zorro; salta; sobre; el; rápido; marrón; perezoso; perro
- Ahora deja las palabras de parada: rápido; marrón; zorro; salta; encima; rápido; marrón; perezoso; perro
- Construye tu índice de recuento: rápido=2; marrón=2; zorro=1; salta=1; encima=1; perezoso=1; perro=1
- Añade colocaciones de 2 gramos: rápido-marrón=2; rápido=2; marrón=2; marrón-zorro=1; zorro=1; zorro-salta=1; salta-sobre=1...
- Stem las palabras, así que salta y salta se conviertan en saltar .
Resumen del proceso de minería de textos
He aquí un rápido resumen del enfoque/proceso genérico para identificar tendencias en el texto. Hay grandes herramientas de código abierto disponibles (R, python, etc) para llevar a cabo el proceso mencionado aquí.
Breve descripción de los pasos del procesamiento de datos
Explorar Corpus - Comprender los tipos de variables, sus funciones, los valores admisibles, etc. Algunos formatos, como html y xml, contienen etiquetas y otras estructuras de datos que proporcionan más metadatos.
Convertir el texto en minúsculas - Esto es para evitar distinguir entre las palabras simplemente por el caso.
Eliminar el número (si es necesario) - Las cifras pueden o no ser relevantes para nuestros análisis.
Eliminar las puntuaciones - Los signos de puntuación pueden proporcionar un contexto gramatical que ayude a la comprensión. A menudo, en los análisis iniciales ignoramos la puntuación. Más adelante, utilizaremos los signos de puntuación para ayudar a extraer el significado.
Eliminar las palabras de parada en inglés - Las palabras de parada son palabras comunes que se encuentran en una lengua. Palabras como para, muy, y, de, son, etc, son palabras comunes.
Eliminar las palabras de parada propias (si es necesario) - Junto con las palabras de parada inglesas, podríamos, en su lugar o además, eliminar nuestras propias palabras de parada. La elección de las palabras de parada propias puede depender del ámbito del discurso, y puede no ser evidente hasta que hayamos realizado algún análisis.
Tira de espacio en blanco - Elimine los espacios en blanco adicionales.
Stemming - El stemming utiliza un algoritmo que elimina las terminaciones comunes de las palabras en inglés, como "es", "ed" y "'s".
Términos dispersos - A menudo no nos interesan los términos poco frecuentes en nuestros documentos. Estos términos "escasos" deben eliminarse de la matriz de términos del documento.
Matriz de términos del documento - Una matriz de términos de documentos es simplemente una matriz con los documentos como filas y los términos como columnas y un recuento de la frecuencia de las palabras como las celdas de la matriz.
Referencias y códigos de ejemplo de R
Me parece que podría estar hablando de realizar análisis de opiniones (si no es así, las dos respuestas anteriores son muy buenas, pero pase al último párrafo). Si ese es el caso, tengo algunas sugerencias para usted. Le recomiendo que empiece por leer el borrador del libro de introducción "Análisis de sentimientos y minería de opinión" por Bing Liu. El borrador en formato de documento PDF está disponible de forma gratuita aquí . Para obtener más detalles sobre el nuevo libro de este autor, así como información exhaustiva sobre el tema del análisis de sentimientos basado en aspectos, con referencias y enlaces a conjuntos de datos, puede consultar esta página .
Otro recurso interesante es un libro de encuestas "Minería de opinión y análisis de sentimientos por Bo Pang y Lillian Lee. El libro está disponible en versión impresa y como libro electrónico descargable en PDF en un versión publicada o un versión con formato de autor que son casi idénticos en cuanto a contenido.
Por último, hablando de herramientas informáticas para la PNL En general, además de NLTK y otras herramientas ya recomendadas, le recomiendo encarecidamente que evalúe el Grupo de PNL de Stanford de código abierto ( http://www-nlp.stanford.edu/software ). Si necesita una solución más escalable en el futuro, tal vez quiera echar un vistazo a otro interesante conjunto de bibliotecas de código abierto - marco paralelo para el aprendizaje automático GraphLab ( http://select.cs.cmu.edu/code/graphlab ). Es especialmente adecuado para un gran volumen de datos ya que implementa MapReduce
modelo y, por lo tanto, apoya multicore y multiprocesador procesamiento en paralelo .