¿Qué método de aprendizaje profundo usar para clasificar archivos de texto?

Creo que es mejor entender primero el enfoque de alto nivel para resolver la tarea de clasificación de texto:

Un enfoque de aprendizaje supervisado:

Un enfoque de aprendizaje no supervisado:

En lo anterior, puede usar Deep Learning para algunos de los componentes, como los vectores de características, que podrían ser como word2vec (https://papers.nips.cc/paper/502…) o GLoVe (http: //www-nlp.stanford .edu / pubs …).

Un ejemplo de una tarea de agrupación de texto sin supervisión:

Para la clasificación, por supuesto, puede utilizar la red neuronal hacia adelante de alimentación profunda (FFNN) habitual. Cuando desee hacer una secuencia de aprendizaje de secuencia, una buena opción es RNN (LSTM, GRU con / sin atención y variantes). Un LSTM también es una buena opción cuando aprender sobre el contexto del contenido del documento ayuda a hacer una mejor clasificación.

Una arquitectura un poco más sofisticada:

Es aconsejable tomar un conjunto de datos real como los mencionados en las imágenes anteriores y resolver el problema de la clasificación binaria.

Puede emplear cualquiera de los métodos, CNN o LSTM o combinar LSTM + CNN. Esta elección depende del tipo de datos de texto que tenga y del objetivo de la clasificación.

CNN no mantiene el orden de aparición de n-gramos en la cuenta donde LSTM, como su nombre indica, mantiene los pesos para una secuencia de tokens.

Con CNN si usa varias capas de conv + maxpool, el impacto en el entrenamiento será drástico y visible rápidamente. Donde, como en mi experiencia, las múltiples capas LSTM más allá de 5 realmente no ayudan mucho. (Aunque no es tan simple y requiere experimentos con hiperparámetros)

Como no ha mencionado el objetivo de esta clasificación, solo enumero las mejores opciones para cada uno de los casos de uso genéricos en caso de clasificaciones de texto:

  • Secuencia de texto pequeña / clasificación por oración:
  • Etiquetado de secuencia basado en el idioma (NER, etiquetado POS): LSTM
  • Clasificación de sentimientos: LSTM
  • Similitud semántica entre dos oraciones: LSTM (siamés)
  • Clasificación de artículos / texto grande (> 300 palabras):
    • Categorización de nivel amplio (por ejemplo, clases: deportes / finanzas / política): CNN
    • Detección de eventos: LSTM (capas iniciales) + CNN (capas adicionales) combinadas
    • Clasificación de intención: CNN
  • Consultar palabras clave
    • Como no forman ninguna secuencia gramatical o relacionada, CNN sería una mejor opción.
    1. Ejemplo de clasificación de texto LSTM: Clasificación de secuencia con redes neuronales recurrentes LSTM en Python con Keras – Dominio del aprendizaje automático
    2. Ejemplo de clasificación de texto CNN: dhwajraj / deep-text-classifier-mtl

    El texto generalmente se basa en RNN, redes neuronales recurrentes. Un LSTM es una arquitectura particular de la red neuronal recurrente que es la más común de usar, así que sí, comience a aprender sobre los LSTM. Los GRU son otra arquitectura común de RNN. Hay docenas de otras arquitecturas por ahí, hasta que te sientas cómodo en el campo puedes ignorarlas.

    Las redes neuronales recurrentes le permiten trabajar con secuencias de datos de longitud variable. Es por eso que la clasificación de texto se apoya fuertemente en RNN. Las CNN, redes neuronales convolucionales, se usan generalmente cuando se trabaja con imágenes o datos espaciales en 3D.

    Los RNN son estructuras muy versátiles. Es completamente posible que una implementación más avanzada de RNN tome como entrada una imagen que se alimentó a través de una CNN.

    Este es un gran lugar para comenzar a aprender sobre RNN, y no ignore los enlaces a otros documentos excelentes en esa página:

    Comprender las redes LSTM

    En el siguiente artículo, la clasificación de texto simple se realiza utilizando Keras, que es una biblioteca de Python de aprendizaje profundo.

    Por que Keras?

    Hay muchos marcos de aprendizaje profundo disponibles en el mercado como TensorFlow, Theano. Entonces, ¿por qué prefiero Keras? Bueno, la razón más importante es su simplicidad. Keras es una biblioteca de API de nivel superior donde puede usar cualquier marco como back-end. Por defecto, recomienda TensorFlow. Entonces, en resumen, obtienes el poder de tu marco de aprendizaje profundo favorito y mantienes la curva de aprendizaje al mínimo. Keras es fácil de aprender y fácil de usar.

    Software usado

    • Python 3.6.5
    • Keras 2.1.6 (con el backend TensorFlow)
    • PyCharm Community Edition

    Junto con esto, también he instalado algunos paquetes de python necesarios como numpy, scipy, scikit-learn, pandas, etc.

    Preparando el conjunto de datos

    Para nuestro propósito de demostración, utilizaremos 20 conjuntos de datos de grupos de noticias. Que está disponible gratuitamente en internet. Los datos se clasifican en 20 categorías y nuestro trabajo será predecir las categorías. Pocas de las categorías están muy relacionadas.

    Para ver el artículo completo con código, visite:

    Clasificación de texto simple con la biblioteca de Python de aprendizaje profundo de Keras – opencodez

    La respuesta es muy clara, el aprendizaje profundo es una rama que emana de la inteligencia artificial. La IA en sí fue desarrollada para hacer que las computadoras piensen y procesen datos como un cerebro humano real. Por lo tanto, el aprendizaje profundo se basa en ese mismo aspecto y se centra en imitar el cerebro humano con una eficiencia mucho mayor.

    Piense en una plataforma de aprendizaje profundo que clasifique más de 1000 documentos por segundo, ese es el objetivo final.

    Trabajando para una marca que se dedica al espacio de marketing de inteligencia artificial, aprendizaje automático y aprendizaje profundo, tenemos muchas publicaciones globales y marcas de medios que confían en nuestro motor y lo que he aprendido en los últimos meses es que la inteligencia artificial y el aprendizaje profundo podrían ser el futuro para Todas las cosas textuales. Es por eso que Google, Microsoft e IBM están invirtiendo tanto en tecnologías de inteligencia artificial.

    Puede visitarnos si le gustan los motores de recomendación textuales basados ​​en el aprendizaje profundo. Verifique Boomtrain.

    Descargo de responsabilidad: yo trabajo en Boomtrain. 🙂

    Puedes echar un vistazo a:

    1. GATE.ac.uk – sentimiento / index.html
    2. OpinionFinder | MPQA

    Los he usado para descubrir los sentimientos / opiniones de los clientes de las reseñas en los sitios web de comercio electrónico

    En esta tarea de clasificación de texto que utiliza métodos de aprendizaje profundo, comparten un mismo marco: codifique su texto en un vector primero, luego pase este vector en un perceptrón de múltiples capas para su clasificación, por supuesto, de extremo a extremo.

    Entonces, la única pregunta es “¿Qué método de codificación usar?”

    CNN presenta un rendimiento bastante bueno y ampliamente utilizado en los últimos 2 años.

    RNN está diseñado para manejar datos secuenciales, también es muy útil.

    Ambos modelos son bien conocidos y puedes encontrar muchos tutoriales en línea.

    Aquí está el enlace: Comprender las redes neuronales convolucionales para PNL

    Te será de ayuda.

    Por lo que sé, usar CNN / LSTM sería excesivo. Elija el modelo BOW con pesaje tf-idf y entrene un SVM para ver cómo funciona (esto debería hacerlo por usted). Además, si observa el código del párrafo 2vec que proporciona una representación vectorial de los párrafos, probablemente podría usarlo.

    Para DeepLearning, el mejor lugar para comenzar con la codificación es el sitio web de Theano (creo que tienen un tutorial sobre LSTM). Aunque recomendaría a Theano por la curva de aprendizaje. Prueba Keras, me resulta muy fácil de usar.