¿Cómo aprendo el procesamiento del lenguaje natural?

La mejor manera de aprender al respecto es hacerlo. Las sugerencias de Rob de un curso de introducción o un tutorial son una excelente manera de comenzar, pero realmente lo que debe hacer es tratar de resolver algún problema con la PNL.

Así es como puedes hacer eso. Vaya a descargar NLTK (Natural Language Toolkit). Luego construya un software que haga algo genial.

Aquí hay algunas ideas:

  • Ejecute un montón de diferentes etiquetadores POS en algún texto y caracterice las diferencias. ¿Cuál es mejor para qué dominio? ¿Cometen errores similares?
  • Cree un sistema de análisis de sentimientos y ejecútelo en un montón de reseñas o tuits sobre algo. Vea qué errores está cometiendo y descubra cómo mejorarlo. ¿Qué características debe usar que puedan ayudarlo a mejorar? ¡Averigua si a la gente le gustó la entrevista o la película del día!
  • Escriba un sistema para detectar revisiones de spam en sitios de revisión. Puede encontrar un gran conjunto de datos aquí: detecte críticas y revisores falsos o uno más pequeño aquí: http://myleott.com/op_spam/.
  • Construye un sistema para algún otro idioma. La segmentación de texto en chino es divertida y difícil, pero realmente elige cualquier problema y aplícalo a otro idioma, y ​​aprenderás mucho sobre tus suposiciones sobre lo que funciona y lo que no funciona.

Ninguna de estas cosas funcionará bien en su primer intento, una lección clave en PNL, en realidad, por lo que lo principal en lo que debe enfocarse, una vez que funcione un sistema de línea de base, es descubrir cómo mejorar su sistema. Eso es más del 90% del esfuerzo en PNL.

Para la PNL se necesita una comprensión profunda de ambos algoritmos para procesar información lingüística y las propiedades computacionales subyacentes de los lenguajes naturales. Dependiendo de cómo aprenda (prefiero las conferencias en video a los libros) hay varios recursos disponibles. Me gusta cómo se describe la PNL en CS22N

[de CS 224N]

Conferencias de video

Recomendaría ver video conferencias y hacer la tarea. Intentar la tarea hace una gran diferencia.

  • CS 224N / Ling 284 por Christopher Manning: el mejor curso que he encontrado
  • CS224d: Aprendizaje profundo para el procesamiento del lenguaje natural: curso excelente, y repasa las últimas investigaciones de aprendizaje profundo relacionadas con la PNL. No todas las conferencias se publican en YouTube, por lo que sería necesario cambiar entre los videos de 2015 y 2016. Hay una discusión activa en reddit sobre cómo seguir el curso
  • Natural Language Processing @ Coursera: co-instruido por Christopher Manning: menos mathy pero aún bueno
  • Dan Jurafsky y Chris Manning: Procesamiento del lenguaje natural: sus conferencias en youtube.
  • Libros

    Los siguientes libros son buenos para construir los fundamentos.

    • Introducción a la recuperación de información: Christopher D. Manning, Prabhakar Raghavan, Hinrich Schütze
    • Fundamentos del procesamiento estadístico del lenguaje natural: Christopher D. Manning, Hinrich Schütze

    Si quieres saltar a la programación, apoyaría el libro recomendado por Daria Borisyak

    • Libro NLTK (también disponible en su librería favorita)

    Mucha gente ha mencionado grandes recursos. En cambio, voy a compartir mi propia experiencia aprendiendo PNL sin tener ninguna exposición a la capacitación formal relacionada con CS. Toda mi educación formal ha sido en Ingeniería Eléctrica. Así que, aquí vamos:

    1. Tener una base sólida en algoritmos de cadenas : este paso es incluso antes de que comience cualquier PNL real. Puede elegir cualquier idioma, pero Python es excelente para comenzar. Aquí hay una lista de algunos buenos algos de cuerdas para saber
    a) Manipulación de cadenas: inversión, corte, manipulación de dos punteros, como invertir todas las vocales en una cadena.
    b) Verificaciones de palíndromo, anagramas, etc. – Obtenga una buena comprensión de las tablas hash y vea cómo es útil una búsqueda constante.
    c) Encontrar una subcadena en otra cadena: encuentre 10 ocurrencias repetidas de nucleótidos genéticos en una secuencia de ADN, por ejemplo. La tabla hash vuelve a ser útil aquí.
    Estos problemas de Leetcode fueron muy útiles para mí.

    2. Aprende expresiones regulares . Son difíciles de comenzar y se ven raros, pero una vez que empiezas, son muy accesibles. Siguen una estructura lógica que me gusta. La clase de Code School sobre expresiones regulares fue muy útil para mí.
    Cosas que aprender aquí: llevar hacia adelante, mirar hacia atrás, reemplazar un personaje, crear espacios entre caracteres en una palabra, buscar patrones, etc.

    3. ¡Hora de PNL! Tokenización , stemming , etiquetado POS , lematización y todo. Aquí hay muchos conceptos, pero la tokenización es esencial para comenzar con cualquier tarea de PNL. ¿Ahora quieres tokenizar en unigramas, bigramas o más? Eso es algo en lo que pensar en función de lo que está construyendo. Sin embargo, la mayoría de los problemas simbolizan las oraciones en palabras simples (unigramas). Python tiene excelentes API para cada una de estas tareas.

    4. Tiempo para ML: los conceptos básicos de ML se pueden elegir de la clase Coursera de Andrew Ng. Para Python, scikit-learn y nltk se recomiendan universalmente. nltk admite de forma nativa Naive Bayes pero no ofrece un gran rendimiento. Lo que fue realmente útil para mí fue el uso de la clase SklearnClassifier que envuelve algoritmos scikit-learn como Regresión logística y SVC, etc.en nltk. Este es un gran tutorial sobre cómo comenzar aquí. También tiene excelentes tutoriales sobre otros aspectos de ML.
    Comencé a usar Naive Bayes para alguna clasificación de texto, y luego me mudé a Logistic SGD, que funcionó mucho mejor.

    5. Aprenda las métricas de evaluación: muy esencial y a menudo se pasa por alto. Confusion Matrix, Precision, Recall, F Score, ROC Curves , trade-off entre True Positive Rate y False Positive Rate. Si está utilizando ML – canalización de evaluación utilizando Validación Cruzada y Curvas de Aprendizaje. El ajuste excesivo, el ajuste insuficiente, el sesgo frente a la variación de la varianza son aplicables aquí. Andrew Ng nuevamente hace un gran trabajo para esto en su semana 6 de la clase Coursera.

    6. ¿Tiempo para el aprendizaje profundo? Después de todos los pasos, si cree que tiene un sesgo muy alto con su clasificador y necesita más complejidad, esto es cuando necesita DL. Si descubres que tienes una gran variación, quizás deberías buscar más datos de entrenamiento en lugar de probar DL de inmediato. DL es útil para tareas muy específicas que necesitan una alta no linealidad del espacio de características. Keras es realmente bueno para esto. Las redes neuronales recurrentes son particularmente comunes para el aprendizaje profundo basado en texto.
    Para la mayoría de los casos, los algoritmos normales basados ​​en el aprendizaje de scikit deberían ser buenos.

    7. Modelado de temas, incrustaciones de palabras, traducción usando LSTM, GRU y todo. Este es el espacio que recibe mucha atención en estos días. Una comprensión realmente buena de la regresión logística y por qué necesitamos funciones de activación no lineal, problemas de gradientes que desaparecen, cómo ReLU ayuda a resolverlo son requisitos previos para esta área. Todavía es muy nuevo en esta área, ¡mucho que aprender aquí!

    La cantidad de contenido en Internet puede ser muy difícil de tomar, y con artículos que constantemente hablan sobre el aprendizaje profundo avanzado con ecuaciones complejas, parecía difícil saber realmente qué estaba pasando. Pero al seguir estos pasos, me di cuenta de que lo básico es muy importante. Comprensión verdadera simple sobre los primeros principios sobre cómo funciona realmente ML. Cómo un modelo realmente modela. Por qué necesitamos sigmoides, etc. han sido más útiles.

    Es un largo viaje, pero vale la pena!

    Suponiendo que está buscando implementar PNL en un proyecto, sugeriría buscar cursos que le brinden muchos ejemplos y casos de uso.

    Experfy, una compañía incubada de Harvard , ofrece un excelente curso de procesamiento de lenguaje natural para minoristas. Lo bueno del curso es que te enseña cómo aplicar realmente nlp.

    El curso es impartido por Hadi Harb, quien ha estado en IA durante 15 años y tiene un doctorado en CS.

    Si bien el curso puede parecer específico de la industria, realmente cubre todos los temas que necesita saber para la clasificación del texto de la aplicación real, el análisis de sentimientos, la clasificación de actos de diálogo, las características de palabras discretas y continuas, la clasificación Naive Bayes y la preparación de datos.

    Aquí está la descripción de la clase:

    Tutoriales de programación paso a paso donde aprende a implementar clasificadores de texto en PHP.

    En este curso aprenderás a:

    1. Extraer características del texto, características continuas y discretas.
    2. Construya un extractor de características del texto usando PHP.
    3. Cree un clasificador de texto Naive Bayes y aplíquelo a la clasificación de la Ley de diálogo.
    4. Cree un clasificador de texto basado en k-NN y aplíquelo al análisis de sentimiento de texto.
    5. El código fuente en PHP para los sistemas de clasificación que se enseñan en el curso.
    6. Un modelo entrenado que podría usarse inmediatamente para la clasificación de la Ley de Diálogo (muy útil al construir BOT) y el análisis de sentimientos.

    ¿Qué obtendrás de este curso?

    • Implemente un clasificador de texto usando un lenguaje de programación de su elección.
    • Acceda al código fuente y a los modelos entrenados para un clasificador Dialog Act y un sistema de análisis de sentimientos (muy útil para construir BOT y analizar comentarios de los usuarios)

    ¡Buena suerte!

    Referencias

    • Fundamentos del procesamiento estadístico del lenguaje natural
    • Procesamiento de lenguaje natural con Python
    • Curso de una clase de PNL (basado libremente en el libro anterior).
    • Lengua y estadística II (Noah Smith)
    • Language & Statistics II – Algunas reseñas
    • Procesamiento natural del lenguaje

    Como con cualquier otro tema, la clave es practicar e implementar usted mismo. El paquete Python NLTK tiene muchos algoritmos NLP implementados y es una fuente notable. Prefiero implementar algunas técnicas yo mismo usando numpy y / o scikit-learn para obtener una mejor comprensión del modelo. Algunas técnicas interesantes para explorar son el análisis de sentimientos, detección de spam, POS, resumen de texto, traducción de idiomas, etc.

    El tema de Quora Procesamiento del lenguaje natural tiene muchas discusiones sobre algunos grandes temas. Las respuestas del usuario de Quora, Nitin Madnani, son particularmente esclarecedoras.

    (Supongo que eres un desarrollador que intenta aprender PNL para un proyecto. Si ese no es el caso, omite esta respuesta)

    Soy un desarrollador web. Solo he leído un par de blogs y libros sobre IA y nunca he implementado un algoritmo de PNL en mi vida.

    Pero hace un par de semanas, lanzamos un asistente personal en Play Store: Fragments. ¡Le permite cargar todos sus recuerdos a la nube simplemente hablando!

    Un poco de historia:

    Personalmente, me siento abrumado por la información que ocupa mi cabeza, aunque no la necesito de inmediato: contraseñas, el bloque no. donde estacioné mi automóvil, dinero que la gente me debe, correos electrónicos importantes a los que tengo que responder y qué no.

    Solo deseaba un amigo que pudiera recordar esto por mí y que me lo dijera cada vez que lo pidiera. ¡Por lo tanto, nació la idea de Fragments!

    Aquí hay un vistazo de cómo funciona:

    Muy inteligente, ¿eh? Puede recordar todo lo que le diga y recuperar información para usted siempre que lo solicite (con una precisión de alrededor del 87%).

    ¡Tampoco tuve que aprender PNL para esto!

    Solo tenía que entender los conceptos básicos: clasificar las oraciones en categorías o “intenciones” en la jerga de chatbot, la extracción de entidades y el reconocimiento de entidades con nombre.

    Una búsqueda rápida te dice que no. de plataformas NLP disponibles: Wit.ai, API.ai, Microsoft Bot Framework, IBM Watson NLP, etc.

    Estas plataformas ya han implementado algoritmos de PNL de última generación y solo requieren capacitación para comenzar. Logré la clasificación y la extracción de entidades simplemente entrenando la plataforma con oraciones.

    por ejemplo: “¿Dónde estuve el jueves pasado?”

    Desafío de clasificación : si el usuario almacena una memoria o hace una pregunta ( en este caso, preguntar ).

    Desafío de extracción de entidad : “Dónde” (esto nos dice que el usuario POSIBLEMENTE está pidiendo una ubicación), “último jueves” – Fecha y hora (entidad incorporada) que la plataforma traduce automáticamente a la fecha correcta (¡guau!).

    Desafío de reconocimiento de entidad con nombre: NER es responsable de extraer la mención de una persona, organización o ubicación del texto dado. No hay NEs en el ejemplo, pero estoy usando paquetes de software gratuitos proporcionados por The Stanford Natural Language Processing Group y NLP @ Illinois para NER.

    Para resumir, no necesita aprender PNL para hacer PNL. Solo necesita aprenderlo si le interesa la investigación basada en PNL. Para un proyecto, existen plataformas que ofrecen PNL como servicio, ¡en su mayoría son gratuitas!

    1. Tome el curso en Coursera por Stanford – Procesamiento del lenguaje natural

    2. Lea la página de Wikipedia que tiene una buena explicación sobre las tareas principales en NLP- Page en coursera.org

    3. Una vez que termine los dos anteriores, elija el software del grupo The Stanford NLP (procesamiento del lenguaje natural) e ingrese texto para ver su árbol de análisis, entidades con nombre, parte de etiquetas de voz, etc. Recuerde que es fácil perderse con demasiado detalle Por ahora, solo haz algunas cosas básicas.

    4. Después de esto, lea un documento introductorio como el siguiente que muestra cómo clasificar el texto usando un modelo simple de bolsa de palabras usando una técnica Naive Bayes – Página en ed.ac.uk

    5. Completar lo anterior debería llevarlo a un nivel en el que comprenda de qué se trata la PNL.

    Es divertido y disfruta leer.

    Respuesta corta.

    1. Lea este libro Daniel Jurafsky, James H. Martin: 9780131873216: Amazon.com: Libros
    2. O / y, su curso de curso Procesamiento del lenguaje natural – Universidad de Stanford | Coursera
    3. Además, lea y practique el libro NLTK

    Esto le daría bastante conocimiento sobre el procesamiento del lenguaje natural. Además, la PNL es bastante grande. Una vez que conozca los conceptos básicos, es posible que desee centrarse en un área, como modelos como redes neuronales recurrentes, enfoques como modelos temáticos, etc.

    El 10 de noviembre de 2016, hubo una discusión en profundidad sobre esto en Hacker News. Los recursos sugeridos incluyeron libros, MOOC, videos de YouTube, paquetes de software, proyectos de código abierto, ideas divertidas, API, etc. Por supuesto, todo el contenido de esta discusión es demasiado extenso para copiar aquí. Pero hay una publicación de blog que enumera todos estos recursos.

    Pregunte a HN: ¿Cómo puedo ingresar al procesamiento del lenguaje natural? – Preguntar resúmenes de HN

    Curiosamente, esta publicación de blog también menciona esta pregunta de Quora. Entonces, con esta respuesta, tenemos un caso de referencia circular.

    Definitivamente debe inscribirse en el curso de PNL en Coursera por Michael Collins. Michael Collins (Michael Collins) ha estado haciendo un gran trabajo en PNL y, lo que es más importante, es un maestro fantástico. He tomado dos de sus cursos en la Universidad de Columbia y también trabajo con él. Sus conferencias son muy organizadas y claras. Creo que este es un gran lugar para comenzar, ya que se le presentarán los problemas fundamentales de la PNL y también aprenderá (y posiblemente implementará) los algoritmos de aprendizaje automático de última generación utilizados para resolver estos problemas. También tiene excelentes notas para la mayoría de los temas que enseña en su página web. Si pudieras hacer un curso introductorio de Machine Learning sería ideal. Después de esto, está listo para leer los trabajos de investigación en PNL y ML con gran detalle, y trabajar en un problema que le guste. Creo que la mayor parte de la investigación actual en PNL es idear mejores algoritmos de aprendizaje automático para resolver problemas en PNL utilizando técnicas de optimización, estadísticas bayesianas, etc., pero creo que el primer paso es hacer cursos introductorios en PNL y ML.

    Para los programadores de Python, esta es una buena introducción que disfruté:

    Procesamiento de lenguaje natural con Python

    También puedes ver estos videos de Coursera, de Stanford:

    https://class.coursera.org/nlp/l

    La clase de Coursera “Procesamiento del lenguaje natural” de Jurafsky y Manning es bastante buena (Coursera) al igual que los libros de texto de ambos profesores sobre PNL. Las clases magistrales también están disponibles en YouTube.

    Sí, puede aprender los aspectos teóricos de la PNL, también conocida como Lingüística computacional, por su cuenta con una orientación mínima.

    Como eres un estudiante de CS, lo primero que debes hacer es leer el libro “Jurafsky & Martin”. Este es “el libro” en la comunidad de PNL. Después de esto, únase a un proyecto de investigación de PNL y contribuya al desarrollo, que puede ser desarrollar algoritmos, diseñar sistemas, programar los módulos, etc.

    Y una vez que tenga suficiente experiencia, puede comenzar a escribir programas (por su cuenta) como etiquetador de POS, analizador morfológico, reconocedor de entidades con nombre, analizador, etc.

    Aunque lo que ha pedido es mejorar la comprensión teórica del tema, desarrollar sistemas reales es esencial para comprender mejor cómo funcionan las cosas en un nivel más profundo. Además, también tendrá estos proyectos paralelos para exhibir cuando se presente a entrevistas o decida regresar a la escuela para estudios superiores.

    Además, si el sistema que desarrolló durante el curso de su aprendizaje es novedoso en algún aspecto, puede escribirlo en papel y enviarlo a una conferencia de PNL. Aquí, conocerás a muchas de las personas prominentes de la comunidad de PNL, ya sea un colaborador de fuente abierta o un profesor.

    Durante todo este proceso, puede reforzar su comprensión de las ideas que ha leído en el libro viendo los cursos Coursera NLP del profesor Michael Collins y del grupo Stanford NLP.

    Todo lo mejor

    Gracias por A2A.

    1. Una buena idea puede ser tomar este curso sobre Procesamiento del lenguaje natural por Michael Collins en Coursera. El profesor Collins es uno de los principales investigadores de PNL y actualmente trabaja en la Universidad de Columbia.

    2. A continuación, puede ir con este libro sobre PNL con Python utilizando la biblioteca del Kit de herramientas de lenguaje natural.

    Si tiene prisa por implementar, puede omitir 1 y saltar a 2. Sin embargo, esto puede no ser un viaje fácil. Además, le recomendaría que aproveche 1 y recopile conceptos básicos sólidos en PNL, si está interesado en ello.

    EDITAR: después de 1, incluso puede que no necesite leer 2

    Creo que puedes aprenderlo paso a paso.

    1. Toma un curso. Si no tiene acceso a un curso universitario, busque algún curso en Coursera, como Procesamiento del lenguaje natural – Universidad de Stanford | Coursera y haz tu mejor esfuerzo con la tarea.
    2. Implementando algunos algoritmos básicos (HMM, CRF, etc.) desde cero solo.
    3. Intente utilizar algunas herramientas de PNL para trabajar en algunas tareas reales (Kaggle u otra plataforma)
    4. Para seguir estudiando, podría aprender algunos algoritmos de aprendizaje profundo como RNN. Y, por supuesto, es mejor que pueda implementarlos todos ustedes.

    Ese es mi consejo, espero que pueda ayudarte.

    Wikipedia es el mejor lugar para comenzar. Primero estudie el artículo principal, luego proceda a la Categoría y estudie todas esas entradas, luego siga todas las Páginas que enlazan con el artículo principal y estudie esas. Continúe con los videos según sea necesario. Proceda a Quora cuando esté atascado.

    1) procesamiento del lenguaje natural

    2) Categoría : procesamiento del lenguaje natural

    3) Páginas que enlazan con “Procesamiento de lenguaje natural”

    Vea mis páginas web rápidas y sucias:

    • 100 mejores videos de generación de lenguaje natural | Meta-Guide.com
    • 100 mejores videos de análisis de lenguaje natural | Meta-Guide.com
    • 100 mejores videos de conferencias sobre procesamiento del lenguaje natural | Meta-Guide.com
    • 100 mejores videos tutoriales de procesamiento del lenguaje natural | Meta-Guide.com
    • 100 mejores videos de comprensión del lenguaje natural | Meta-Guide.com

    Ver también mi respuesta de Quora a:

    • ¿Qué se necesita para convertirse en un experto en procesamiento del lenguaje natural? ¿Necesito un doctorado para hacer un trabajo significativo?

    Los mejores tutoriales de aprendizaje de PNL:

    1. Guía definitiva para comprender e implementar el procesamiento del lenguaje natural (con códigos en Python)
    2. Hoja de cheques PNL

    Python NLP – NLTK y scikit-learn

    Suponiendo que quiere aprender PNL de forma independiente … Comience con una comprensión básica en Internet … y primero intente aprender de cursos como Cursos | Por supuesto, y una vez que tenga una idea básica, intente leer las preguntas y respuestas en las preguntas más recientes de ‘nlp’, esto le dará lo que la gente está pasando. No solo hay muchas maneras de aprender, como ser activo en algunos proyectos de código abierto, etc. debes tener paciencia para aprender y responderte a ti mismo por qué quieres aprender … una vez que tengas respuestas a las tesis, sería fácil para ti aprender 🙂 aprendizaje feliz

    pocos enlaces que utilicé para aprender PNL

    La página de inicio de OpenNLP

    Lista de más de 20 API de análisis de opinión – Mashape Blog

    ¿Cuáles son las herramientas de análisis de sentimientos de código abierto más poderosas?

    ¿Cuáles son los mejores kits de herramientas NLP de código abierto de Java?

    Más allá de las expresiones regulares, aquí hay algunas características importantes:

    • Generadores, consulte Trucos de generador para programadores de sistemas de David Beazley para obtener muchos ejemplos excelentes para canalizar cantidades ilimitadas de texto a través de generadores.

    Para herramientas, recomiendo mirar lo siguiente:

    • Whoosh, un motor de búsqueda de Python puro que le dará algunos ejemplos agradables de la vida real de análisis de texto utilizando pyparsing y procesamiento de texto en Python en general.
    • Las buenas reseñas de Ned Batcheldor de varias herramientas de análisis de Python.
    • mxTextTools
    • Código fuente de Docutils para un procesamiento de texto más avanzado en Python, incluida una máquina de estado sofisticada.

    Existe este increíble curso de Dan Jurafsky y Christopher Manning de Stanford en Coursera. Supongo que es el mejor lugar para comenzar. Al final de la serie, también podrás construir un sistema básico de preguntas y respuestas.
    Enlace: Coursera