[PYTHON] Vous devenez ingénieur en 100 jours ――Jour 66 ――Programmation ――À propos du traitement du langage naturel

Cliquez ici jusqu'à hier

Vous deviendrez ingénieur dans 100 jours - Jour 63 - Programmation - À propos de la probabilité 1

Vous deviendrez ingénieur dans 100 jours - Jour 59 - Programmation - À propos des algorithmes

Vous deviendrez ingénieur dans 100 jours --- Jour 53 --Git --À propos de Git

Vous deviendrez ingénieur dans 100 jours - Jour 42 --Cloud --À propos des services cloud

Vous deviendrez ingénieur dans 100 jours - Jour 36 --Base de données --À propos de la base de données

Vous deviendrez ingénieur dans 100 jours-24 jours-Python-Bases du langage Python 1

Vous deviendrez ingénieur dans 100 jours --Jour 18 --Javascript --Les bases de JavaScript 1

Vous deviendrez ingénieur dans 100 jours - Jour 14 --CSS --CSS Basics 1

Vous deviendrez ingénieur dans 100 jours - Jour 6 --HTML - Bases du HTML 1

À partir de ce moment, il s'agit de traitement du langage naturel.

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

Les langues que les humains ont spontanément utilisées, comme l'anglais et le japonais, sont appelées «langues naturelles».

D'autre part, les langages artificiels basés sur des règles telles que «langage de programmation» sont appelés «langages formels» pour les distinguer.

Qu'est-ce que le «traitement du langage naturel»? Laissez l'ordinateur traiter le «langage naturel» que les humains utilisent quotidiennement. Il fait référence à une série de technologies.

De nombreuses techniques sont incluses dans le «traitement du langage naturel».

Principales technologies de traitement du langage naturel

Le système technique de traitement du langage naturel est comme ça.

Nom Contenu
Analyse morphologique Une méthode de division en éléments morphologiques et de discrimination de la partie de chaque élément morphologique
Analyse Une méthode de division en éléments morphologiques et de clarification des relations entre eux et les relations syntaxiques en les traçant.
Analyse sémantique Une méthode d'interprétation du sens d'une phrase à l'aide d'un dictionnaire de concepts, etc.
Analyse contextuelle Une méthode pour vérifier la connexion de plusieurs phrases

Lors du traitement du japonais avec un ordinateur, l'analyse morphologique est une technique de base. Puisque la langue change de jour en jour, il est difficile pour les ordinateurs de la gérer.

Parce que les humains ne traitent pas complètement les informations linguistiques, mais font des interprétations «raisonnables» à partir d'un grand nombre d'interprétations. La «validité» devient difficile à mettre en œuvre sur un ordinateur.

Il est assez difficile de faire plus que l'analyse sémantique et de futures recherches sont attendues.

À propos de l'analyse morphologique

L'analyse des éléments de formulaire sépare les phrases en la plus petite unité de mots appelée éléments morphologiques. C'est une méthode pour distinguer la partie de chaque morphologie.

** Séparation **

C'est une manière d'écrire avec un espace entre les mots comme en anglais. Watashi Ga Hentai Death I had Lewd Death

** Analyse morphologique anglaise **

C'est très facile dans des langues comme l'anglais où les mots sont séparés par des espaces. La procédure d'analyse morphologique en anglais est résumée ci-dessous.

1.Diminuez toute la phrase pour éviter que les mots ne soient distingués par la position du mot

2.it's et don'Séparer les abréviations telles que t (il's → it 's 、 don't → do n't)

3.Séparez le point à la fin de la phrase du mot précédent (M..Ne séparez pas les périodes qui ne sont pas liées à la fin des phrases utilisées

4.Diviser par l'espace

** Analyse morphologique japonaise **

Contrairement à l'anglais, le japonais a peu de blancs et vous ne pouvez pas voir les coupures dans les mots. Par conséquent, il est nécessaire de considérer la division par règles sur la base d'un dictionnaire en utilisant un «dictionnaire» dédié.

Si vous effectuez votre propre analyse morphologique, vous devez définir et appliquer vous-même cette règle de division.

Plusieurs «bibliothèques» ont été développées pour l'analyse morphologique japonaise. Il est courant de l'utiliser pour l'analyse morphologique.

Une bibliothèque typique est appelée «MeCab».

https://ja.wikipedia.org/wiki/MeCab

Il existe également une bibliothèque appelée janome dans le langage Python.

https://mocobeta.github.io/janome/

Si elle est mise en œuvre à l'aide d'une telle bibliothèque, l'analyse morphologique peut être effectuée relativement facilement.

Le mécanisme de la bibliothèque ici est expliqué dans cet article. Découvrez les coulisses de l'analyse morphologique japonaise! Comment MeCab analyse morphologiquement

L'idée de base est de construire un "treillis" et de sélectionner le meilleur "chemin".

Un «treillis» est une «solution possible de rupture de mot».

Je pense que ce qui suit est un exemple facile à comprendre, alors je vais y faire référence.

Référence: https://techlife.cookpad.com/entry/2016/05/11/170000

Il s'agit de «Lattice», et nous sélectionnerons le «chemin optimal» en fonction du «coût».

Le "coût" dépend du "dictionnaire" utilisé pour l'analyse morphologique.

Dans l'analyse morphologique générale, le «dictionnaire NAIST» est utilisé. Les valeurs calculées du «coût d'occurrence» et du «coût de concaténation» sont répertoriées dans ce document. Il semble que la valeur «coût» du «corpus» soit calculée à partir de celui-ci.

Il semble que ce «chemin» au «coût» le plus bas soit le résultat d'une analyse morphologique.

Bien sûr, si elle n'existe pas dans ce dictionnaire, la nomenclature appropriée sera divisée en mots ordinaires. La maintenance du «dictionnaire» est indispensable pour une analyse morphologique correcte.

Les mots nouvellement créés sont parfois appelés «mots inconnus», mais dans le travail d'analyse morphologique, La correspondance avec ces "mots inconnus" et la maintenance des "dictionnaires" occuperont la majeure partie du travail de développement.

Si vous êtes une entreprise qui gère le traitement du langage naturel, vous avez enregistré vous-même un grand nombre de mots Nous construisons une base de données pour gérer les «mots inconnus».

À propos de l'analyse syntaxique

«L'analyse de syntaxe» est également appelée «analyse de dépendance» et est une sorte de technologie de traitement du langage naturel. Après avoir divisé la phrase en éléments morphologiques, la relation de modification entre les mots sera analysée.

Il existe une célèbre bibliothèque appelée «CaboCha».

https://taku910.github.io/cabocha/

Il ne convient pas à l'analyse de phrases trop longues et il est nécessaire de penser en phrases courtes.

Le résultat de l'analyse ressemble à ceci.

Ichiro a bourré les trous faits par Jiro avec des pommes de terre achetées à Hokkaido.

Ichiro-------------D
Jiro-D         |
Avait fait-D       |
Dans le trou-------D
À Hokkaido-D   |
Acheté-D |
Patate-D
Farci

L'analyse de dépendance est une technique qui peut être utilisée lorsque vous souhaitez analyser le sens d'une phrase. Je pense qu'il peut être utilisé pour analyser la structure grammaticale et clarifier le sens des phrases.

Mots qui apparaissent souvent dans le traitement du langage naturel

Expressions régulières

Il s'agit d'une méthode d'expression permettant d'exprimer plusieurs chaînes de caractères dans un seul format. Il est souvent utilisé lors du traitement d'un grand nombre de phrases selon certaines règles.

Cliquez ici pour plus de détails Vous deviendrez ingénieur dans 100 jours - Jour 46 - Programmation - À propos des expressions régulières

N-Gram

Une méthode de division de texte qui divise une chaîne de caractères arbitraires ou un document en caractères «n» consécutifs. Lorsque «n» est 1, «uni-gramme» est lorsque «2 est« bi-gramme » Le cas 3 est appelé «tri-gramme».

Basé sur les personnages

# unigram
'maintenant', 'journée', 'Est', 'je', 'je', 'paradis', 'Qi'

# bigram
'aujourd'hui', 'journée', 'Oui', 'Bien', 'paradis', 'Météo'

# trigram
'aujourd'hui', 'Oui oui', 'Est bon', 'Bon ciel', 'Beau temps'

S'il est basé sur des mots, ce sera une concaténation de «n» mots analysés morphologiquement.

# unigram
'aujourd'hui', 'Est', 'Bien', 'Météo'

# bigram
'aujourd'hui', 'Est bon', 'Beau temps'

# trigram
'Bon aujourd'hui', 'Beau temps'

** vecteur de mot **

Après avoir divisé une phrase en mots, les mots sont affectés aux colonnes du tableau et convertis en données. S'il y a un mot, les données seront 1, sinon elles seront 0.

[1,0,0,0,0,0,1,1,1],
[1,0,0,0,0,0,1,1,0], ...

TF-IDF

«tf-idf» est un type de poids pour les mots d'un document et est utilisé dans des domaines tels que la recherche d'informations et la synthèse de phrases. Les calculs sont basés sur le «vecteur de mots» et sont utilisés pour déterminer la rareté des mots.

Résumé

Le traitement du langage naturel est l'un des domaines de recherche les plus difficiles, mais les domaines où la recherche n'a pas progressé Au contraire, c'est aussi un domaine avec de nombreuses opportunités.

Étudier le japonais est particulièrement difficile, et où mettre en œuvre la partie qui analyse le sens C'est très difficile, vous devez donc vous asseoir et travailler sur vos recherches.

Si vous êtes intéressé, apprenons le traitement du langage naturel.

34 jours avant de devenir ingénieur

Informations sur l'auteur

HP d'Otsu py: http://www.otupy.net/

Youtube: https://www.youtube.com/channel/UCaT7xpeq8n1G_HcJKKSOXMw

Twitter: https://twitter.com/otupython

Recommended Posts

Vous devenez ingénieur en 100 jours ――Jour 66 ――Programmation ――À propos du traitement du langage naturel
Vous devenez ingénieur en 100 jours ――Jour 67 ――Programmation ――A propos de l'analyse morphologique
Vous serez ingénieur dans 100 jours ――Jour 71 ――Programmation ――À propos du scraping 2
Vous serez ingénieur dans 100 jours ――Jour 74 ――Programmation ――À propos du scraping 5
Vous serez ingénieur dans 100 jours ――Jour 73 ――Programmation ――À propos du scraping 4
Vous serez ingénieur dans 100 jours ――Jour 75 ――Programmation ――À propos du scraping 6
Vous deviendrez ingénieur dans 100 jours --Jour 68 --Programmation --A propos de TF-IDF
Vous serez ingénieur dans 100 jours ――Jour 70 ――Programmation ――À propos du grattage
Vous serez ingénieur dans 100 jours ――Jour 81 ――Programmation ――À propos de l'apprentissage automatique 6
Vous serez ingénieur dans 100 jours ――Jour 82 ――Programmation ――À propos de l'apprentissage automatique 7
Vous serez ingénieur dans 100 jours ――Jour 79 ――Programmation ――À propos de l'apprentissage automatique 4
Vous serez ingénieur dans 100 jours ――Jour 76 ――Programmation ――À propos de l'apprentissage automatique
Vous serez ingénieur dans 100 jours ―― Jour 80 ―― Programmation ―― À propos de l'apprentissage automatique 5
Vous serez ingénieur dans 100 jours ――Jour 78 ――Programmation ――À propos de l'apprentissage automatique 3
Vous serez ingénieur dans 100 jours ――Jour 84 ――Programmation ――À propos de l'apprentissage automatique 9
Vous serez ingénieur dans 100 jours ――Jour 83 ――Programmation ――À propos de l'apprentissage automatique 8
Vous serez ingénieur dans 100 jours ――Jour 77 ――Programmation ――À propos de l'apprentissage automatique 2
Vous serez ingénieur dans 100 jours ――Jour 85 ――Programmation ――À propos de l'apprentissage automatique 10
Vous serez ingénieur dans 100 jours ――Jour 63 ――Programmation ――À propos de la probabilité 1
Vous serez ingénieur dans 100 jours ――Jour 65 ――Programmation ――A propos de la probabilité 3
Vous serez ingénieur dans 100 jours ――Jour 64 ――Programmation ――À propos de la probabilité 2
Vous serez ingénieur dans 100 jours --Jour 86 --Base de données -
Vous serez ingénieur dans 100 jours ―― Jour 60 ―― Programmation ―― À propos de la structure des données et de l'algorithme de tri
Vous serez ingénieur dans 100 jours ――Jour 24 ―― Python ―― Bases du langage Python 1
Vous serez ingénieur dans 100 jours ――Jour 30 ―― Python ―― Bases du langage Python 6
Vous serez ingénieur dans 100 jours ――Jour 25 ―― Python ―― Bases du langage Python 2
Vous serez ingénieur dans 100 jours - Jour 29 - Python - Bases du langage Python 5
Vous serez ingénieur dans 100 jours - Jour 33 - Python - Bases du langage Python 8
Vous serez ingénieur dans 100 jours --Jour 26 --Python --Basiques du langage Python 3
Vous serez ingénieur dans 100 jours --Jour 32 --Python --Basiques du langage Python 7
Vous serez ingénieur dans 100 jours --Jour 28 --Python --Les bases du langage Python 4
Vous serez ingénieur dans 100 jours - Jour 27 - Python - Exercice Python 1
Vous serez ingénieur dans 100 jours - Jour 34 - Python - Exercice Python 3
Vous serez ingénieur dans 100 jours - Jour 31 - Python - Python Exercice 2
Vous devenez ingénieur en 100 jours - Jour 35 - Python - Ce que vous pouvez faire avec Python
[WIP] Pré-traitement des notes dans le traitement du langage naturel
Python: apprentissage profond du traitement du langage naturel: principes de base
Insoutenable manque d'attention dans le traitement du langage naturel
J'ai lu un livre d'introduction sur le traitement du langage naturel
Modèle utilisant un réseau neuronal convolutif dans le traitement du langage naturel
Vérification des performances du prétraitement des données dans le traitement du langage naturel
Créer un environnement pour le traitement du langage naturel avec Python
Python: traitement du langage naturel
RNN_LSTM2 Traitement du langage naturel
Types de prétraitement dans le traitement du langage naturel et leur puissance
[Traitement du langage naturel] Je souhaite rencontrer un ingénieur qui change de poste (ou juste avant)
Traitement du langage naturel 1 Analyse morphologique
Traitement du langage naturel 3 Continuité des mots
Une histoire d'essayer de LT pour effectuer le codage en direct du traitement du langage naturel et de l'analyse des dépendances en un instant à partir d'un endroit vide
Traitement du langage naturel 2 similitude de mots
Dockerfile avec les bibliothèques nécessaires pour le traitement du langage naturel avec python
Réfléchissez sérieusement au langage à utiliser dans l'enseignement de la programmation et l'enseignement de la programmation.
Étude de cas sur le traitement du langage naturel: Fréquence des mots dans'Anne avec un E '
Puis-je devenir ingénieur IA dans un cours en ligne à AI Academy?
Devenez bientôt un ingénieur IA! Apprenez complètement Python / AI / Machine learning / Deep learning / Analyse statistique en quelques jours!