Lei Note du réseau Feng: Cet article est une compilation du blog de la technologie de groupe de Lei Feng, le titre original Un guide complet pour comprendre et mettre en uvre la classification du texte en Python, auteur SHIVAM BANSAL.
Traduction | Mali groupe Zeping à Relisez | Tu finition Shi-wen | MY
introduction
classification de texte comme l'une des tâches de traitement du langage naturel, sont largement utilisés dans la résolution de problèmes divers secteurs d'activité. Texte de la classification est de texte / document automatiquement classés comme une ou plusieurs catégories prédéfinies. applications de classification de texte commun sont les suivantes:
-
médias sociaux les utilisateurs à comprendre les émotions
-
Identifier le spam et le courrier légitime
-
La requête de l'utilisateur d'annotation automatique
-
Les nouvelles ont été classées par thème
contenu principal
Dans cet article, je vais vous expliquer la connaissance de l'étape atteint la classification du texte et la classification de texte par étape en Python.
classification du texte est une tâche d'apprentissage machine supervisé, parce que l'utilisation d'une tâche de classification texte contient le texte / document et son sujet de classe correspondant a marqué ensemble de données pour former un classificateur. Fin d'un processus de classification texte comprend trois composantes principales:
Ensemble de données est prêt: La première étape est la préparation des données, cette étape comprend le chiffrement des données ainsi que le travail de pré-traitement de base. jeu de formation et de validation ensemble sera divisé après l'ensemble de données.
Caractéristiques du projet: La deuxième étape se caractérise par le projet, à cette étape, les données brutes sont converties à appliquer à fonction de modèle d'apprentissage de la machine. Cette étape comprend également le processus de construction des nouvelles fonctionnalités à partir des données existantes.
la formation du modèle: La dernière étape consiste à construire le modèle, dans ce modèle d'apprentissage stepper il sera marqué sur l'ensemble dans une des données de formation.
Améliorer les performances du classificateur texte: Dans cet article, nous allons nous concentrer sur les différentes méthodes pour améliorer la performance de la classification texte.
Note: Cet article n'explore pas en profondeur les tâches de traitement du langage naturel. Si vous voulez passer en revue les bases Houzai lecture de cet article, vous pouvez consulter cet article (lien: https: //www.analyticsvidhya.com/blog/2017/01/ultimate-guide-to-understand-implement-natural-language -traitement-codes-à-python /).
préparations
Construisons un cadre de classification de texte en Python par étape de manière par étape pour atteindre. Tout d'abord, nous devons importer la bibliothèque Python nécessaire.
Vous avez besoin des outils nécessaires bibliothèque Python pour exécuter le programme, vous pouvez les installer sur le lien officiel de ces tiers bibliothèques Python.
-
pandas
-
Scikit-learn
-
XGBoost
-
TextBlob
-
Keras
# Pour la préparation des données, les caractéristiques techniques, bibliothèque modèle de formation
1. Ensemble de données prêt
Selon l'objectif de cet article, je l'examen des Amazon ensembles de données, peuvent être téléchargés les ensembles de données via ce lien (https://gist.github.com/kunalj101/ad1d9c58d338e20d09ff26bcc06c4235). L'ensemble de données contient les 3,6 millions de commentaires et l'étiquette de texte correspondant, nous utilisons seulement une petite partie de celui-ci. Afin de préparer les données, les données sont téléchargées sur pandas chargement d'une trame de données, la trame de données comprenant deux - et des étiquettes de texte.
Ensuite, nous allons mettre l'ensemble de données est divisé en formation et ensemble de validation, afin que nous puissions former et tester un classificateur. Et, nous allons colonne LABEL est codé afin qu'il puisse être utilisé dans les modèles d'apprentissage de la machine.
2. Caractéristiques du projet
L'étape suivante se caractérise par l'ingénierie. Dans cette étape, les données d'origine est converti en un vecteur de caractéristiques et construira une nouvelle fonctionnalité à partir des données existantes. Pour extraire les caractéristiques pertinentes concentrés sur nos données, nous atteindrons les idées suivantes.
2.1 vecteurs de caractéristiques de comptage
2.2 vecteurs TF-IDF caractérisé
-
le niveau de vocabulaire
-
stade N-Gram
-
Classe de caractère
2.3 caractérisé en vecteurs de mots
2.4 dispose d'un texte basé / Traitement du langage naturel
2,5 modèle est caractérisé par thème
Nous allons en apprendre davantage sur la réalisation de ces idées.
2.1 vecteurs de caractéristiques de comptage
Compter vecteur ensemble de données est une représentation de la matrice, la matrice dans chaque rangée représente un corpus de documents, un terme et chaque colonne représente un corpus, chaque élément représente un document spécifique dans un mot spécifique élément de comptage de fréquence.
2,2 à TF-IDF vecteurs, caractérisé
scores TF-IDF représentent l'importance relative d'un mot-clé dans un document avec l'ensemble du corpus. La valeur TF-IDF est composé de deux parties: la première partie est une fréquence de terme normalisé (TF), la deuxième partie est la fréquence du document inverse (IDF), l'entrée de document, le mot correspondant de la fréquence de document inverse de l'occurrence divisé par le nombre total de documents dans le numéro de corpus les résultats obtenus en prenant le calcul de logarithme.
TF (t) = (le nombre de fois qu'un terme t apparaît dans un document) / (nombre total d'entrées dans le document Word) IDF (t) = log_e (nombre total de documents / nombre de documents contenant un terme de t)
peut être obtenu TF-IDF de différents niveaux d'entrée (mots, caractères, N-grammes)
un mot de niveau la matrice de TF-IDF représente chaque terme des valeurs TF-IDF dans différents documents.
b N-gramme niveau TF-IDF :. N-grammes pour les termes combinés formes N mots. Cette matrice représente des valeurs TF-IDF des N-grammes.
. C TF-IDF caractère niveau TF-IDF: matrice de valeurs TF-IDF indique le niveau de caractère de corpus des N-grammes.
mot 2.3 antivectorielle
Parole est une représentation vectorielle à l'aide des formulaires / documents de mots denses vecteur. Position mot dans l'espace vectoriel à apprendre et à obtenir le mot du texte qui apparaît près du mot base d'apprentissage. vecteur mot peut être obtenu à partir du corpus d'apprentissage d'entrée lui-même ou peut être formé en utilisant un vecteur de pré-mot génération, par exemple de gants, FastText et Word2Vec. Chacun d'entre eux peut être téléchargé et utilisé sous la forme d'apprentissage de transfert. On peut en savoir plus sur le vecteur de mot.
Snippet ci-dessous montre comment utiliser le mot vecteur pré-formé dans le modèle. Il y a quatre étapes essentielles:
-
formation mot préchargé vecteur
-
Création marqueur d'objet
-
Convertir les documents texte pour la séquence d'entrée et être remplie.
-
Créer une correspondance entre les mots entrées de vecteur correspondant à celui-ci.
Vous pouvez (https://www.analyticsvidhya.com/blog/2017/06/word-embeddings-count-word2veec/) télécharger mot pré-formé vecteur d'ici.
2.4 dispose d'un texte basé / Traitement du langage naturel
Vous pouvez également créer des fonctions à base de texte supplémentaires, ces caractéristiques peuvent contribuer à améliorer la performance du modèle de classification texte. Quelques exemples sont les suivants:
Nombre de mots du document - le nombre total de mots dans le document
Nombre de caractères du document - le nombre total de caractères dans le document
La densité moyenne du document de mot - la longueur moyenne des mots dans le document
compte Ponctuation tout au long de l'article - le nombre total de la ponctuation des documents
Tout au long de l'article capitaliser le nombre de mots - le nombre total de documents capitalise la parole
article entier inscription gagnante comte - le nombre total de documents dans un cas approprié (titre) mot
distribution de fréquence vocale de l'étiquette:
-
noms Count
-
count verbe
-
comte adjectif
-
comte adverbes
-
comte pronoms
Ces caractéristiques sont la nature expérimentale, ne peut être utilisé en fonction des circonstances particulières.
caractéristiques du modèle à base de thème 2.5
Le modèle est un thème de distinguer le mot appartient au groupe à partir d'un certain nombre de documents qui contiennent les meilleures informations (appelée sujet) la technologie. J'utilise caché Dirichlet modèle (Latent Dirichlet Allocation) génère des caractéristiques thématiques. LDA est un modèle itératif, à partir d'un nombre fixe d'itérations de ce thème. Chaque thème est exprimé en une distribution de probabilité de mots, chaque document est représenté sous la forme d'une distribution de probabilité d'un thème. Bien que le terme lui-même n'a pas de sens, mais la probabilité de ces sujets représentent une sorte de sens de la distribution des mots des différents concepts contenus dans le document. Vous pouvez en savoir plus sur le sujet au modèle (https://www.analyticsvidhya.com/blog/2016/08/beginners-guide-to-topic-modeling-in-python/).
Jetons un coup d'oeil à sa mise en uvre:
3. Modélisation
La dernière étape dans le cadre de la catégorisation de textes pour construire un classificateur formé se caractérise par l'utilisation de quelques étapes avant que vous avez créé. modèles d'apprentissage de la machine ont beaucoup d'options différentes, ces modèles peuvent être utilisés pour modéliser la formation finale. À cette fin, nous atteindrons les suivants plusieurs classifiers différents:
classificateur Naive Bayes
classificateur linéaire
SVM
modèle ensachage
modèle renforcement
Faible profondeur réseau de neurones
Profondeur réseau de neurones
-
réseau neuronal convolutif (CNN)
-
La durée pendant laquelle le modèle de mémoire (LSTM)
-
Unité à recyclage porte (GRU)
-
Bidirectionnel récurrentes des réseaux de neurones
-
convolution circulaire réseau neuronal (RCNN)
-
D'autres variantes de la profondeur du réseau de neurones
Laissez-nous mettre en uvre ces modèles et comprendre les détails de leur mise en uvre. Le fond de la fonction est une fonction d'utilité qui peut être utilisé pour former le modèle. Il vecteur caractéristique classificateur, le vecteur de caractéristiques des données de formation, les ensembles de formation et des données d'étiquette de validation en entrée. Avec ces entrées, le train de modèle et de précision de calcul.
3.1 Naive Bayes
modèle bayésien Naive mis en uvre à l'aide sklearn en fonction des différentes caractéristiques de
Naive Bayes est une technique de classification basée sur la théorie bayésienne, on suppose que les variables prédictives sont indépendants. catégorie Feature hypothèse naïve classificateur Bayes ne se rapporte pas à d'autres fonctions.
3,2 classificateur linéaire
Mettre en uvre un classifieur linéaire (régression logistique)
La régression logistique en utilisant la fonction de Logisque / sigmoïde pour estimer la probabilité et l'utiliser pour estimer la relation entre la variable dépendante et une ou plusieurs variables indépendantes.
3.3 modèle SVM
machine à vecteurs de support (SVM) est un algorithme d'apprentissage supervisé peut être utilisé dans la tâche de classification ou de régression. Cette séparation des deux catégories de l'extraction optimale du modèle hyperplan / ligne.
3.4 ensachage
Modèle aléatoire Forêt réaliser.
Forêt modèle de hasard est un modèle intégré, plus précisément, un modèle de mise en sac. Il est l'un des modèles à base d'arbres.
3.5 Dynamiser
Atteindre modèle xgboost.
modèle d'amplification est un autre modèle d'intégration arborescente. Dope est un élément de l'algorithme d'apprentissage automatique intégré, pour réduire l'écart et l'apprentissage de la surveillance variance, il peut être converti en un classificateur fort faible classificateur. classificateur faible se réfère au peu en rapport avec le classificateur de bonne catégorie (un peu mieux que de deviner au hasard).
3.6 Shallow réseau de neurones
Le réseau de neurones est un système de neurones biologiques et modèle mathématique similaire est conçu pour être utilisé pour identifier les données relationnelles complexes marqués. Un réseau de neurones consistant en trois grandes couches superficielles - la couche d'entrée, la couche cachée et la couche de sortie.
DNN 3.7
DNN réseau de neurones plus complexe, sa couche cachée effectuer des opérations plus complexes que RELU ou fonction d'activation sigmoïde. De nombreux types de réseaux de neurones profonds peuvent être appliqués à des problèmes de classification texte.
3.7.1 convolution réseau de neurones
Dans le réseau neuronal convolutif, opération de convolution agissant sur la couche d'entrée est utilisée pour calculer la sortie. réseau neuronal convolutif utilisant une connexion locale, chaque région de l'entrée connectée à la sortie de neurone. Chaque couche utilisant divers filtres et les résultats combinés.
3.7.2 récurrente Neural Networks --LSTM
Feedforward réseaux de neurones ayant une fonction d'activation que dans une autre direction de propagation du chemin, la sortie de la fonction d'activation du cycle de réseau de neurones de propagation (de l'entrée à la sortie, de l'entrée à la sortie) dans les deux directions. On obtient ainsi une structure de réseau de la boucle de circulation, servant de neurones « état de la mémoire. » Cet état de choses rend les neurones de mémoire appris jusqu'à présent.
cellule de mémoire du réseau de neurones récurrents que les réseaux de neurones traditionnels ont un avantage, mais la question se pose de gradient disparaît. Quand beaucoup de couches, le réseau de neurones est difficile à apprendre et à ajuster les paramètres des couches précédentes. Pour résoudre ce problème, le nouveau modèle de RNN appelé LSTM (mémoire à court et à long terme) ont été inventés.
def create_rnn_lstm:
3.7.3 récurrente Neural Networks --GRU
unité de circulation vannage (GRU) est un autre récurrent Neural Networks. Nous avons ajouté un GRU dans la couche réseau à la place LSTM.
3.7.4 Réseaux de neurones récurrents Bidirectionnelle
couche RNN peut être encapsulé dans la couche bi, nous encapsulées dans la couche GRU bi-couche.
3.7.5 réseau de neurones à convolution circulaire
Nous avons essayé la structure de base, vous pouvez maintenant essayer leurs variantes convolution circulaire du réseau de neurones (RCNN). D'autres variantes sont les suivantes:
1. Réseau d'attention de niveau (HAN)
2. Séquence de mécanismes attentionnels - modèle de la série
3. les deux sens RCNN
Avec plus de couches CNN 4. RNN
Améliorer la performance du modèle
Bien que le cadre ci-dessus peut être appliqué dans de nombreux problèmes de classification texte, mais afin d'obtenir une plus grande précision peut être améliorée dans la structure globale. Par exemple, voici quelques-uns du modèle de classification peut améliorer les performances des conseils de texte:
1. Nettoyage texte: texte de lavage peut aider à réduire le bruit dans les données de texte, tels que les mots d'arrêt, la ponctuation et le suffixe.
2. différents vecteurs de caractéristiques sont combinés: la partie caractéristique du projet, nous recevons beaucoup de caractéristiques différentes, les combiner ensemble, peuvent améliorer la précision de la classification.
3. Modèle de planification: La planification est une étape très importante, peut affiner (longueur, nombre de nuds feuilles, les paramètres du réseau de neurones, etc. arbre) paramètres pour obtenir le meilleur ajustement du modèle.
4. Modèle intégré: Les différents modèles sont reliés entre eux et une combinaison de ceux-ci peut améliorer les résultats de sortie.
conclusion
Dans cet article, nous discutons de la façon de préparer des ensembles de données de texte, tels que le nettoyage, pour créer un ensemble de formation et un ensemble de test. Utilisez tels que la fréquence des mots, TF-IDF, le vecteur de texte, modèle sujet et caractéristiques du texte de base des différents projets de longs métrages. Ensuite, nous avons formé beaucoup de classificateurs, comme Naive Bayes, régression logistique, soutien machines à vecteurs, les réseaux de neurones, et LSTM GRU. Enfin, nous discutons de différentes façons d'améliorer la performance de la classification texte.
Avez-vous trouvé cet article utile? S'il vous plaît partagez vos impressions dans les commentaires.
Vous pouvez également lire cet article dans Google Analytics Vidhya dans l'application Android.
Lien original: https://www.analyticsvidhya.com/blog/2018/04/a-comprehensive-guide-to-understand-and-implement-text-classification-in-python/
Lei Feng Lei Feng net net