3. Traitement du langage naturel par Python 2-2. Réseau de co-occurrence [mecab-ipadic-NEologd]

Tâche

** Utilisez mecab-ipadic-NEologd ** pour effectuer une série de tâches telles que ** supprimer les mots vides ** et ** exprimer dans un réseau cooccurrence **.

** 1. Préparation des données textuelles **

⑴ Lire des données textuelles

from google.colab import files
uploaded = files.upload()

image.png

with open('20200926_suga_un.txt', mode='rt', encoding='utf-8') as f:
    read_text = f.read()
sugatxt = read_text

image.png

⑵ Nettoyage des données

#Supprimer les caractères / symboles inutiles
def clean(text):
    text = text.replace("\n", "")
    text = text.replace("\u3000", "")
    text = text.replace("「", "")
    text = text.replace("」", "")
    text = text.replace("(", "")
    text = text.replace(")", "")
    text = text.replace("、", "")
    return text

text = clean(sugatxt)

#Fractionner ligne par ligne
lines = text.split("。")

image.png

** 2. Création de données de cooccurrence **

⑶ Installation de MeCab et mecab-ipadic-NEologd

# MeCab
!apt-get -q -y install sudo file mecab libmecab-dev mecab-ipadic-utf8 git curl python-mecab > /dev/null
!pip install mecab-python3 > /dev/null

# mecab-ipadic-NEologd
!git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git > /dev/null 
!echo yes | mecab-ipadic-neologd/bin/install-mecab-ipadic-neologd -n > /dev/null 2>&1

#Éviter les erreurs avec les liens symboliques
!ln -s /etc/mecabrc /usr/local/etc/mecabrc

⑷ Créez une instance en spécifiant mecab-ipadic-NEologd

#Vérifiez le chemin du dictionnaire
!echo `mecab-config --dicdir`"/mecab-ipadic-neologd"

image.png

import MeCab

path = "-d /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd"
m_neo = MeCab.Tagger(path)

⑸ Créez une liste de nomenclature basée sur des phrases

stopwords = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0", 
             "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", 
             "un", "deux", "Trois", "quatre", "Cinq", "Six", "Sept", "Huit", "Neuf", "〇", 
             "Année", "Mois", "journée", "Suivant", "Remise", "Fois", "Cible", "Maladie", "c'est tout", "Moins que", "周Année", "Cas", "À chaque fois",
             "de", "もde", "chose", "Yo", "Sama", "Pour", "Avoir tendance à", "cette", "Il", "cette", "Qui", 
             "*", ",", ","]
noun_list  = []

for line in lines:
    result = []
    v1 = m_neo.parse(line)
    v2 = v1.splitlines()
    for v in v2:
        v3 = v.split("\t")
        if len(v3) == 2:
            v4 = v3[1].split(',')
            if (v4[0] == "nom") and (v4[6] not in stopwords):
                 result.append(v4[6])
    noun_list.append(result)

image.png

⑹ Génération de données de cooccurrence

import itertools #Un module qui rassemble les fonctions d'itérateur
from collections import Counter #Une classe qui compte le nombre d'occurrences du type dictionnaire

#Générer une liste de paires de nomenclatures basée sur des phrases
pair_list = []
for n in noun_list:
    if len(noun_list) >= 2:
        lt = list(itertools.combinations(n, 2))
        pair_list.append(lt)

#Aplatir la liste des paires de nez
all_pairs = []
for p in pair_list:
    all_pairs.extend(p)

#Comptez la fréquence des paires de noms
cnt_pairs = Counter(all_pairs)

image.png

** 3. Dessiner un schéma de réseau **

⑺ Création de données de dessin

import pandas as pd
import numpy as np

#Générez les 30 meilleures paires de dictionnaires
dict = sorted(cnt_pairs.items(), key=lambda x:x[1], reverse=True)[:30]

#Convertir le type de dict en tableau 2D
result = []
for key, value in dict:
    temp = []
    for k in key:
        temp.append(k)
    temp.append(value)
    result.append(temp)

data = np.array(result)

image.png

⑻ Import de la bibliothèque de visualisation

import matplotlib.pyplot as plt
import networkx as nx
%matplotlib inline 

#Un module qui rend matplotlib compatible avec l'affichage japonais
!pip install japanize-matplotlib
import japanize_matplotlib

⑼ Visualisation par NetworkX

#Générer un objet graphique
G = nx.Graph()

#Lire les données
G.add_weighted_edges_from(data)

#Dessiner un graphique
plt.figure(figsize=(10,10))
nx.draw_networkx(G,
                 node_shape = "s",
                 node_color = "chartreuse", 
                 node_size = 800,
                 edge_color = "gray", 
                 font_family = "IPAexGothic") #Spécification de la police japonaise

plt.show()

image.png

mecab-ipadic-NEologd Norme MeCab
"Infection" "infection", "Maladie"
"Pays en voie de développement" "En chemin", "Pays"
"Union de l'Asie du Sud-Est" "Asie du sud est", "Des pays", "syndicat"
"Sécurité humaine" "Humain", "de", "sécurité", "Sécurité"

Recommended Posts

3. Traitement du langage naturel par Python 2-2. Réseau de co-occurrence [mecab-ipadic-NEologd]
3. Traitement du langage naturel par Python 2-1. Réseau de co-occurrence
Python: traitement du langage naturel
3. Traitement du langage naturel par Python 1-1. Word N-gram
[Python] J'ai joué avec le traitement du langage naturel ~ transformers ~
100 coups de traitement du langage avec Python 2015
Créer un environnement pour le traitement du langage naturel avec Python
Étudiez le traitement du langage naturel avec Kikagaku
100 traitements de langage avec Python
[Traitement du langage naturel] Prétraitement avec le japonais
100 traitements de langage avec Python (chapitre 3)
100 traitements de langage avec Python (chapitre 2, partie 2)
100 traitements de langage avec Python (chapitre 2, partie 1)
J'ai essayé le traitement du langage naturel avec des transformateurs.
Dockerfile avec les bibliothèques nécessaires pour le traitement du langage naturel avec python
Démarrer avec Python avec 100 coups sur le traitement du langage
RNN_LSTM2 Traitement du langage naturel
Python: apprentissage profond du traitement du langage naturel: principes de base
Traitement d'image avec Python
Profitons du traitement du langage naturel à l'aide de l'API COTOHA
[Traitement du langage naturel] Extraire les mots-clés de la base de données Kakenhi avec MeCab-ipadic-neologd et termextract
3. Traitement du langage naturel avec Python 1-2. Comment créer un corpus: Aozora Bunko
3. Traitement du langage naturel par Python 3-1. Important outil d'extraction de mots Analyse TF-IDF [définition originale]
[Chapitre 5] Introduction à Python avec 100 coups de traitement du langage
Modèle utilisant un réseau neuronal convolutif dans le traitement du langage naturel
[Chapitre 3] Introduction à Python avec 100 coups de traitement du langage
[Chapitre 2] Introduction à Python avec 100 coups de traitement du langage
[Chapitre 4] Introduction à Python avec 100 coups de traitement du langage
Traitement d'image avec Python (partie 2)
"Traitement Apple" avec OpenCV3 + Python3
[Analyse de co-occurrence] Analyse de co-occurrence facile avec Python! [Python]
Réseau de neurones avec Python (scikit-learn)
Traitement du signal acoustique avec Python (2)
Traitement du signal acoustique avec Python
100 Language Processing Knock Chapitre 1 (Python)
100 Language Processing Knock Chapitre 2 (Python)
Traitement d'image avec Python (partie 1)
Traitement du langage naturel 1 Analyse morphologique
Traitement du langage naturel 3 Continuité des mots
Traitement d'image avec Python (3)
Python: représentation vectorielle en langage naturel
Programmation réseau avec Python Scapy
Traitement du langage naturel 2 similitude de mots
[Python] Traitement d'image avec scicit-image
[Pratique] Créez une application Watson avec Python! # 3 [Classification du langage naturel]
[Python] Essayez de classer les boutiques de ramen par traitement du langage naturel
[Python] Traitement parallèle facile avec Joblib
Réseau neuronal avec OpenCV 3 et Python 3
100 traitements du langage naturel frappent le chapitre 4 Commentaire
100 Language Processing Knock Chapitre 1 en Python
Mesure de retard unidirectionnelle du réseau par python
Traitement du langage naturel pour les personnes occupées
Traitement d'image avec la binarisation Python 100 knocks # 3
Logivan du langage artificiel et traitement du langage naturel (traitement du langage artificiel)