Lors de la systématisation de l'apprentissage automatique, un savoir-faire est nécessaire pour prendre en compte le temps et les ressources nécessaires au prétraitement des données et les utiliser dans la conception. Cette fois, un aperçu du prétraitement des données pour les langages naturels et du prétraitement des données dans chABSA-dataset, qui est un exemple d'implémentation de l'analyse de polarité des émotions. Présentation des résultats de vérification des performances basés sur.
Liste des messages
La table des matières de cet article est la suivante.
Les langues naturellement développées, telles que le japonais et l'anglais, que les humains utilisent quotidiennement pour communiquer, sont appelées langues naturelles. Contrairement aux langages artificiels tels que les langages de programmation, les langages naturels ont des ambiguïtés qui ne déterminent pas uniquement le sens ou l'interprétation d'une phrase.
Le traitement du langage naturel consiste à permettre à un ordinateur de traiter une énorme quantité de données textuelles écrites en langage naturel pratiquement sur la base de l'ambiguïté des mots ou d'une technologie à cette fin. Des exemples d'applications pour le traitement du langage naturel comprennent les haut-parleurs intelligents, les moteurs de recherche Web, la traduction automatique, les systèmes d'entrée japonais et l'analyse de la polarité émotionnelle.
Les données d'image (ensemble de valeurs de pixels) et les données de séries chronologiques pouvant être acquises à partir de divers capteurs sont des données qui peuvent être exprimées sous forme de valeurs numériques. D'autre part, le langage naturel est un ensemble de mots et ne peut pas être traité comme une valeur numérique en l'état.
Afin de gérer le langage naturel dans l'apprentissage automatique, qui est une méthode statistique pour extraire des règles à partir de données, il est nécessaire de convertir le langage naturel en données numériques d'une manière ou d'une autre. Cette conversion est appelée vectorisation, et l'expression sous forme de données numériques obtenues par vectorisation est appelée quantité de caractéristiques.
Le prétraitement dans le traitement du langage naturel comprend la conversion (vectorisation) du langage naturel, qui est des données textuelles, en quantités de caractéristiques, qui sont des données numériques, et un traitement tel que la suppression du bruit et la décomposition en chaînes de mots, qui sont effectués avant cela. Pointer vers. Le tableau 1 montre le flux de prétraitement dans le domaine du traitement du langage naturel.
Tableau 1 Prétraitement et transitions d'état des données dans le domaine du traitement du langage naturel
État des données | Classification du traitement | La description |
---|---|---|
Données brutes | - | |
↓ | nettoyage | Supprimez les données non textuelles inutiles telles que les balises HTML attachées aux données textuelles que vous souhaitez analyser |
Phrase | - | |
↓ | Partage | Décomposez les phrases par partie et utilisez-les comme un tableau de mots(Partage de mots)Divisé |
Chaîne de mots | - | |
↓ | Normalisation, suppression des mots vides | Unification des fluctuations de notation, suppression des mots dénués de sens pour l'analyse |
Chaîne de mots requise pour l'analyse | - | |
↓ | Vectorisation | Conversion d'une chaîne de mots en données numériques |
Vecteur caractéristique | - |
L'un des cas d'utilisation du traitement du langage naturel est l'analyse de la polarité émotionnelle, qui juge la qualité du contenu indiqué par un certain texte et l'utilise comme aide à la décision. Par exemple, il devrait être utilisé dans un large éventail de domaines tels que l'analyse de réputation des produits internes sur SNS dans les activités B2C et l'analyse de l'adéquation des prêts et des investissements sur la base des informations de performance de l'entreprise pour les activités financières.
Dans cet article, nous nous concentrerons sur l'analyse de la polarité émotionnelle qui peut être adoptée dans un large éventail d'industries et expliquerons ce qui suit à l'aide de chABSA-dataset, qui est un exemple d'implémentation Python de l'analyse de la polarité émotionnelle publiée sur Internet.
Dans le jeu de données chABSA, les données du rapport sur les titres pour l'exercice 2016 (format XBRL [^ 1] / 2 260 sociétés / env. 7,9 Go) sont traitées comme des données brutes. Afin d'extraire des informations de polarité émotionnelle positive / négative à partir des phrases expliquant les réalisations de ces données, nous créerons un modèle d'apprentissage supervisé en utilisant la machine à vecteurs de support (SVM). Le traitement de l'ensemble de données chABSA peut être divisé en trois.
[^ 1]: Les données au format XBRL ont une structure imbriquée XML de sorte que les métadonnées sont ajoutées à l'extérieur des données au format HTML du rapport titres publié par la société.
(1) Traitement d'annotations pour créer des données d'entraînement pour créer un modèle qui émet des jugements positifs / négatifs (2) Traitement de création (apprentissage) de modèle basé sur les données créées en (1) (3) Traitement de l'analyse de la polarité des émotions à l'aide du modèle créé en (2)
Le prétraitement des données dans le domaine du traitement du langage naturel est inclus dans la première moitié des traitements (1) et (2) (avant création du modèle). Le tableau 2 montre le prétraitement des données inclus dans le processus (1) et le processus (2).
Tableau 2 Prétraitement des données dans le jeu de données chABSA
État des données | Classification du traitement | La description |
---|---|---|
Données brutes(Format XBRL) | - | |
↓ | nettoyage | Extrayez les données HTML de la section représentant les performances du rapport titres à partir des données brutes au format Xbrl, qui est un type de XML. |
Phrase(Format HTML) | - | |
↓ | nettoyage | Suppression des balises HTML |
Phrase | - | |
↓ | Partage | Décomposer les phrases en chaînes de mots |
Chaîne de mots | - | |
↓ | Normalisation, suppression des mots vides | -Remplacer le numéro par 0-Supprimer les caractères vides |
Chaîne de mots requise pour l'analyse | - | |
↓ | Vectorisation | Conversion d'une chaîne de mots en données numériques |
Vecteur caractéristique | - |
Dans l'apprentissage automatique, plus la quantité de données à traiter est grande, plus le temps de traitement et les ressources nécessaires pour le traitement et l'apprentissage sont longs. Par conséquent, il est nécessaire d'estimer à l'avance la quantité de données brutes à saisir.
Le contenu et la quantité de texte dans le rapport sur les titres (FY2016), qui sont les données brutes de l'ensemble de données chABSA, varient d'une entreprise à l'autre. Le rapport sur les titres au format XBRL publié sur EDINET contient des fichiers de données séparés pour chaque société, et le fichier de données pour une société ne dépasse pas 10 Mo. chABSA-dataset gère un total de 2 260 données d'entreprise, totalisant environ 7,9 Go de données.
Maintenant, si vous regardez le traitement indiqué dans le tableau 2, vous pouvez voir deux choses:
Premièrement, il est possible de traiter chaque fichier de données d'entreprise individuellement et séquentiellement, et il n'est pas nécessaire de pouvoir traiter les données de toutes les entreprises à la fois. Deuxièmement, les résultats du prétraitement du fichier de données d'une entreprise n'affectent pas les résultats du traitement du fichier de données d'une autre entreprise. Par conséquent, il est possible de les traiter séparément sans tenir compte de l'ordre de traitement.
De ces choses, il n'est pas nécessaire d'avoir un serveur avec une mémoire de grande capacité qui peut charger toutes les données dans la mémoire à la fois, et il est possible d'augmenter la vitesse en appliquant le mécanisme de traitement parallèle / traitement distribué dans la mesure où les ressources le permettent. Je comprends ça.
Dans le prétraitement du traitement du langage naturel, les étapes caractéristiques sont la division (lorsque la langue à traiter est le japonais) et la vectorisation. Voici quelques exemples de sélection OSS pour chacun de ces processus.
Le tableau 3 montre une bibliothèque de regroupement typique (analyseur morphologique). Chaque bibliothèque a des implémentations internes et des langages de développement différents, mais ce que vous pouvez faire n'est pas très différent.
Tableau 3 Principales bibliothèques d'écriture (analyseur morphologique)
# | Nom de la bibliothèque | La description |
---|---|---|
1 | MeCab | Mainstream des analyseurs morphologiques japonais. Un dictionnaire japonais basé sur le corpus IPA est ouvert au public en même temps. C++Fonctionne à grande vitesse par mise en œuvre dans |
2 | Janome | Un analyseur morphologique encapsulé dans un dictionnaire implémenté uniquement en Python. Conçu pour être facile à utiliser pour les programmeurs Python |
3 | CaboCha | Analyseur morphologique utilisant SVM. Vous devez préparer votre propre dictionnaire japonais et le développer en tenant compte des droits sur les données. |
Comme Janome est utilisé dans le jeu de données chABSA, les scientifiques des données peuvent également utiliser Janome ou d'autres bibliothèques de ségrégation pendant le prétraitement du développement du modèle pour des raisons telles que la facilité de déploiement dans l'environnement de développement.
Si vous recevez un programme de prétraitement d'un spécialiste des données avec le modèle, vous devrez peut-être changer de bibliothèque tout en prêtant attention à la licence et aux performances des données du dictionnaire.
Dans «Vérification des performances du prétraitement des données dans le traitement du langage naturel» qui sera téléchargé plus tard, nous montrerons les points de changement et la différence de performance lorsque le processus d'écriture de division écrit par Janome est remplacé par MeCab.
La méthode d'expression du vecteur de caractéristiques dépend en grande partie de la manière de créer le modèle. Par conséquent, fondamentalement, la méthode de vectorisation par le scientifique des données sera reproduite dans le code, il n'y a donc pas de bibliothèque particulière recommandée.
La plupart de la vectorisation de ces dernières années est basée sur l'hypothèse de distribution selon laquelle «les significations des mots sont formées par les mots environnants». Parmi eux, il existe une "méthode basée sur le comptage" qui crée un vecteur par fréquence d'occurrence et une "méthode basée sur l'inférence" qui utilise un vecteur de poids pour déduire le mot applicable à partir des informations de séquence de mots. La première méthode est utilisée dans le jeu de données chABSA. Word2vec est un exemple typique de cette dernière méthode.
La plupart des processus autres que les étapes de division et de vectorisation, tels que le nettoyage et la normalisation, sont exécutés par une analyse dépendant du format de données, telle que XML ou le remplacement de chaînes de caractères.
Les fonctions requises à ce stade sont la fonction d'analyse dépendant du format des données et la fonction de traitement des expressions régulières qui est standard dans les langages de programmation. Par conséquent, aucune bibliothèque particulière n'est recommandée pour ces étapes non plus.
Dans cet article, j'ai décrit ce qu'est le traitement du langage naturel et le type de prétraitement dont il dispose.