[PYTHON] Vue d'ensemble du traitement du langage naturel et de son prétraitement des données

introduction

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

  1. Vue d'ensemble du traitement du langage naturel et de son prétraitement des données ... Cet article
  2. Vérification des performances du prétraitement des données dans le traitement du langage naturel

La table des matières de cet article est la suivante.

1. Traitement du langage naturel et prétraitement de ses données

1.1 Qu'est-ce que le traitement du langage naturel?

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.

1.2 Qu'est-ce que le prétraitement des données du traitement du langage naturel dans un système d'apprentissage automatique?

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 -

2. Exemple de prétraitement basé sur le prétraitement de l'analyse de polarité émotionnelle

2.1 Sélection de cas d'utilisation pour le traitement du langage naturel

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.

2.2 Aperçu du prétraitement à traiter

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 -

2.3 Estimation du volume de données

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.

2.4 Sélection OSS pour le prétraitement

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.

2.4.1 À propos de l'écriture des minutes (division des mots)

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.

2.4.2 À propos de la vectorisation

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.

2.4.3 Autres étapes

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.

Résumé

Dans cet article, j'ai décrit ce qu'est le traitement du langage naturel et le type de prétraitement dont il dispose.

Recommended Posts

Vue d'ensemble du traitement du langage naturel et de son prétraitement des données
Vérification des performances du prétraitement des données dans le traitement du langage naturel
Types de prétraitement dans le traitement du langage naturel et leur puissance
[Traitement du langage naturel] Prétraitement avec le japonais
Logivan du langage artificiel et traitement du langage naturel (traitement du langage artificiel)
■ [Google Colaboratory] Prétraitement du traitement du langage naturel et janome
Réponses et impressions de 100 chocs de traitement linguistique - Partie 1
Traiter le nom de la carte Yugioh en langage naturel --Yugiou Data Science 2. PNL
Réponses et impressions de 100 chocs de traitement de la langue - Partie 2
[WIP] Pré-traitement des notes dans le traitement du langage naturel
Remplissage facile des données pouvant être utilisées dans le traitement du langage naturel
Nettoyage des données 3 Utilisation d'OpenCV et prétraitement des données d'image
Insoutenable manque d'attention dans le traitement du langage naturel
Python: traitement du langage naturel
RNN_LSTM2 Traitement du langage naturel
Pré-traitement des données préfectorales
Analyse des données financières par pandas et leur visualisation (2)
Traitement pleine largeur et demi-largeur des données CSV en Python
Analyse des données financières par pandas et leur visualisation (1)
Pré-traitement et post-traitement de pytest
Traitement du langage naturel 1 Analyse morphologique
Traitement du langage naturel 3 Continuité des mots
Traitement du langage naturel 2 similitude de mots
Application de Python: Nettoyage des données Partie 3: Utilisation d'OpenCV et prétraitement des données d'image
100 traitement de la langue knock-42: Affichage de la phrase de la personne concernée et de la personne concernée
100 langage de traitement knock-70 (en utilisant Stanford NLP): Obtention et formatage des données
Étudiez le traitement du langage naturel avec Kikagaku
100 traitements du langage naturel frappent le chapitre 4 Commentaire
Traitement du langage naturel pour les personnes occupées
100 traitement du langage knock-59: analyse de la formule S
Pourquoi l'expression distribuée des mots est-elle importante pour le traitement du langage naturel?
Se préparer à démarrer le traitement du langage naturel
Résumé de l'installation de l'analyseur de traitement du langage naturel
[Word2vec] Visualisons le résultat du traitement en langage naturel des avis des entreprises
Résumé du traitement multi-processus du langage de script
Prétraitement des fichiers de vidage Wikipedia et partage de grandes quantités de données avec MeCab
Apprenez les bases de la classification de documents par traitement du langage naturel, modèle de sujet
J'ai 0 ans d'expérience en programmation et je défie le traitement des données avec python
Python: prétraitement en machine learning: gestion des données manquantes / aberrantes / déséquilibrées
[Traitement du langage naturel] Extraire les mots-clés de la base de données Kakenhi avec MeCab-ipadic-neologd et termextract
Traitement du langage 100 knocks-44: Visualisation des arbres dépendants
100 traitement de langue knock-22: Extraction du nom de la catégorie
100 Knocking Natural Language Processing Chapitre 1 (Mouvement préparatoire)
100 Language Processing Knock-26: suppression du balisage accentué
3. Traitement du langage naturel par Python 2-1. Réseau de co-occurrence
3. Traitement du langage naturel par Python 1-1. Word N-gram
Séparation de la conception et des données dans matplotlib
J'ai essayé le traitement du langage naturel avec des transformateurs.
Exemple de traitement efficace des données avec PANDAS
Mémo de produits pratique autour du traitement du langage naturel
Python: Apprentissage en profondeur dans le traitement du langage naturel: Implémentation d'un système de sélection de phrases de réponses
3. Traitement du langage naturel par Python 2-2. Réseau de co-occurrence [mecab-ipadic-NEologd]
[Kaggle] De la lecture des données au prétraitement et au codage
[Python] J'ai joué avec le traitement du langage naturel ~ transformers ~
Utiliser des décorateurs pour empêcher la ré-exécution du traitement des données
[Pandas] Principes de base du traitement des données de date à l'aide de dt