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!