2010-04-03 12 views
12

Soy un principiante en NLP y NLTK. Estoy muy interesado en PNL y por lo tanto, me uní a un curso de fin de semana sobre IA en alguna institución local, lo que me requiere para hacer un proyecto para completar el curso, y decidí hacerlo en PNL. El problema es que el instructor no es bueno en absoluto para este curso (según yo, ella es simplemente un charlatán) (o puede no estar muy interesado en enseñar como este es su último lote aquí después del cual el instituto va a enviar fuera de ella). Así que estoy atrapado en una situación donde llegué a terminar este proyecto en un mes a un período de un mes y medio, pero como persona ingenua en el campo me resulta muy difícil comprender las cosas necesarias para decidir sobre proyecto. (Además, dado que estoy trabajando a tiempo completo en , no encuentro suficiente tiempo para dedicarme a esto).Procesamiento del lenguaje natural - Ideas para proyectos para principiantes

Consideré usar NLTK toolkit en python para el proyecto por las siguientes razones. (1) Python es famoso por su facilidad de uso, prototipos rápidos y una comunidad muy activa (teniendo en cuenta que tengo muy poco tiempo, y como soy un programador de C por profesión, necesito un lenguaje que pueda aprender rápido y sea simple usar).

(2) NLTk tiene una buena revisión, una amplia documentación y una comunidad muy activa.

Así que el problema es qué proyecto debería tomar, para que pueda aprender algo y pueda terminar el proyecto a tiempo. (no sé casi nada en PNL, ni siquiera saber qué es exactamente corpus es ... :()

Así que, por favor me sugieren algunos temas que debería considerar para el proyecto.

Saludos,

microkernel :)

+0

¿ha mirado http://www.nltk.org/projects? – miku

+0

Sí, vi pero el problema es que como principiante no tengo idea de cuál sería el adecuado para mí (teniendo en cuenta que tengo que terminarlo en 1 mes) ¿Puede sugerirnos qué sería adecuado para principiantes como yo? – Microkernel

+3

"Qué proyecto puedo hacer" tipo de pregunta. – alvas

Respuesta

11

la mayoría de los proyectos de "principiante" apuntan a reimplementar algoritmos bien conocidos, por lo que los principiantes pueden aprender mediante la verificación de sus resultados frente a las soluciones conocidas. Para esto, recomendaría algo simple, como un filtro de correo no deseado. Se podría empezar por la creación de un archivo de entrenamiento, es decir, copiar el texto de varias correos electrónicos reales en un archivo CSV y manualmente etiquetarlos spam o correo basura no, como:

text|is_spam 
hi bob! how are you?|0 
what time are you coming over|0 
how to buy viagra now!|1 

A continuación, se crearía una prueba archivo, en el formato idéntico al archivo de entrenamiento, pero obviamente con diferentes ejemplos.

Luego, crearía su clasificador/filtro de correo no deseado. Hay muchas maneras diferentes de implementar un filtro de spam, pero la más básica es simplemente contando la frecuencia con la que aparece una palabra con is_spam = 0 e is_spam = 1. Por ejemplo, según el archivo de capacitación anterior, la palabra "viagra" está asociada con 1 clasificación de spam, pero 0 clasificaciones sin spam, por lo que es probable que los correos electrónicos futuros que contengan la palabra "viagra" también se clasifiquen como spam. Del mismo modo, la palabra "cómo" aparece en 1 correo no deseado y 1 correo electrónico no deseado, por lo que es menos probable que indique una clasificación definitiva.

Luego entrenaría su clasificador en el archivo de entrenamiento y calcularía su precisión ejecutándolo en el archivo de prueba.

Si el método anterior es demasiado simple, puede aumentar su complejidad contando n-grams (grupos de palabras) o incluso estructura gramatical etiquetando primero la parte de la oración (por ejemplo, un montón de correo basura suele ser aleatorio poblado con palabras clave, donde el no spam suele tener sentido).Podrías implementar varios clasificadores diferentes y comparar su precisión.

De acuerdo, hay algo más que eso, pero estos métodos están bien documentados en Internet, y es su proyecto, así que depende de usted investigar más a fondo. Buena suerte.

+0

Muchas gracias :) Este es un proyecto realmente interesante para mí. (Para aprender sobre el patrón de spams a lo largo del tiempo, en los últimos meses he estado recopilando todos los spams que estaba recibiendo (los puse en una carpeta separada)) y ahora tengo más de 2000 spams recopilados, supongo que es suficientemente grande. datos :). Ahora ha sido de alguna utilidad. ¡¡¡Guau!!! Gracias por la ayuda mate :) – Microkernel

7

Algunas ideas:.

  • Un programa que adivina el lenguaje que un archivo de entrada se escribe en Se necesitaría algunas muestras de diferentes idiomas; Wikipedia es una excelente fuente.

  • Programa que, basándose en un cuerpo de texto, construye palabras u oraciones similares a las del corpus.

  • Encuentra algo interesante que ver con el Voynich Manuscript. Puede encontrar las transcripciones here.

(Por cierto, "corpus" es sólo una palabra elegante para "montón de texto" Desde Wikipedia: ". Un conjunto amplio y estructurado de textos (ahora generalmente almacenada y procesada electrónicamente)" La palabra generalmente se refiere a los textos que usa para entrenar y probar su algoritmo, en lugar de los textos desconocidos que encontrará en el campo).

+0

Muchas gracias :) La primera parece estar a mi alcance (supongo que esto es lo que Google Toolbar utiliza para encontrar el idioma de la página web y pedir ayuda para la traducción). La última también se ve interesante, pero en la situación actual estoy, no puedo hacerlo, supongo ... Gracias por las sugerencias :) – Microkernel

0

Puede usar NLP para grabar algunas partes de una llamada de atención al cliente en un VOIP teléfono. Las otras opciones ingresadas por el usuario podrían tomarse del teclado. Con este sistema implementado, puede eliminar la necesidad de un personal de soporte. Por ejemplo, restablezca la contraseña a una identificación de correo electrónico en una organización con autorización basada en voz.

1

Trate de trabajar en los desafíos publicados en sitios web como Kaggle. Tienen desafíos interesantes como detecting insults in social commentary para los cuales los datos están disponibles gratuitamente.

Cuestiones relacionadas