3. Verarbeitung natürlicher Sprache durch Python 2-2. Koexistenznetzwerk [mecab-ipadic-NEologd]

Aufgabe

** Verwenden Sie mecab-ipadic-NEologd **, um eine Reihe von Aufgaben auszuführen, z. B. ** Entfernen von Stoppwörtern ** und ** Ausdrücken in einem Netzwerk mit gleichzeitigem Auftreten **.

** 1. Aufbereitung von Textdaten **

⑴ Textdaten lesen

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

⑵ Datenbereinigung

#Löschen Sie unnötige Zeichen / Symbole
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)

#Zeile für Zeile teilen
lines = text.split("。")

image.png

** 2. Koexistenzdaten erstellen **

⑶ Installation von MeCab und 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

#Vermeiden Sie Fehler mit symbolischen Links
!ln -s /etc/mecabrc /usr/local/etc/mecabrc

⑷ Erstellen Sie eine Instanz, indem Sie mecab-ipadic-NEologd angeben

#Überprüfen Sie den Wörterbuchpfad
!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)

⑸ Erstellen Sie eine satzbasierte Nomenklaturliste

stopwords = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0", 
             "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", 
             "einer", "zwei", "drei", "vier", "Fünf", "Sechs", "Sieben", "Acht", "Neun", "〇", 
             "Jahr", "Mond", "Tag", "Nächster", "Rabatt", "Mal", "Ziel", "Krankheit", "das ist alles", "Weniger als", "周Jahr", "Fall", "Jedes Mal",
             "von", "もvon", "Ding", "Yo", "Sama", "Zum", "Neigen dazu", "Dies", "Es", "Das", "Wer", 
             "*", ",", ","]
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] == "Substantiv") and (v4[6] not in stopwords):
                 result.append(v4[6])
    noun_list.append(result)

image.png

⑹ Generierung von Co-Auftrittsdaten

import itertools #Ein Modul, das Iteratorfunktionen sammelt
from collections import Counter #Eine Klasse, die die Anzahl der Vorkommen des Wörterbuchtyps zählt

#Generieren Sie eine satzbasierte Nomenklaturpaarliste
pair_list = []
for n in noun_list:
    if len(noun_list) >= 2:
        lt = list(itertools.combinations(n, 2))
        pair_list.append(lt)

#Liste der Nasenpaare abflachen
all_pairs = []
for p in pair_list:
    all_pairs.extend(p)

#Zählen Sie die Häufigkeit von Substantivpaaren
cnt_pairs = Counter(all_pairs)

image.png

** 3. Zeichnen eines Netzwerkdiagramms **

⑺ Erstellung von Zeichnungsdaten

import pandas as pd
import numpy as np

#Generieren Sie die 30 besten Wörterbuchpaare
dict = sorted(cnt_pairs.items(), key=lambda x:x[1], reverse=True)[:30]

#Diktattyp in 2D-Array konvertieren
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 der Visualisierungsbibliothek

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

#Ein Modul, das matplotlib mit dem japanischen Display kompatibel macht
!pip install japanize-matplotlib
import japanize_matplotlib

⑼ Visualisierung mit NetworkX

#Diagrammobjekt generieren
G = nx.Graph()

#Daten lesen
G.add_weighted_edges_from(data)

#Zeichnen eines Diagramms
plt.figure(figsize=(10,10))
nx.draw_networkx(G,
                 node_shape = "s",
                 node_color = "chartreuse", 
                 node_size = 800,
                 edge_color = "gray", 
                 font_family = "IPAexGothic") #Japanische Schriftartspezifikation

plt.show()

image.png

mecab-ipadic-NEologd MeCab Standard
"Infektion" "Infektion", "Krankheit"
"Entwicklungsländer" "Unterwegs", "Land"
"Südostasiatische Union" "Südostasien", "Länder", "Union"
"Menschliche Sicherheit" "Mensch", "von", "Sicherheit", "Sicherheit"

Recommended Posts

3. Verarbeitung natürlicher Sprache durch Python 2-2. Koexistenznetzwerk [mecab-ipadic-NEologd]
3. Verarbeitung natürlicher Sprache durch Python 2-1. Netzwerk für das gleichzeitige Auftreten
Python: Verarbeitung natürlicher Sprache
3. Verarbeitung natürlicher Sprache durch Python 1-1. Word N-Gramm
[Python] Ich habe mit der Verarbeitung natürlicher Sprache ~ Transformatoren ~ gespielt
100 Sprachverarbeitungsklopfen mit Python 2015
Erstellen einer Umgebung für die Verarbeitung natürlicher Sprache mit Python
Studieren Sie die Verarbeitung natürlicher Sprache mit Kikagaku
100 Sprachverarbeitungsklopfen mit Python (Kapitel 1)
[Verarbeitung natürlicher Sprache] Vorverarbeitung mit Japanisch
100 Sprachverarbeitungsklopfen mit Python (Kapitel 3)
100 Sprachverarbeitungsklopfen mit Python (Kapitel 2, Teil 2)
100 Sprachverarbeitungsklopfen mit Python (Kapitel 2, Teil 1)
Ich habe versucht, natürliche Sprache mit Transformatoren zu verarbeiten.
Dockerfile mit den notwendigen Bibliotheken für die Verarbeitung natürlicher Sprache mit Python
Erste Schritte mit Python mit 100 Klopfen bei der Sprachverarbeitung
RNN_LSTM2 Verarbeitung natürlicher Sprache
Python: Tiefes Lernen in der Verarbeitung natürlicher Sprache: Grundlagen
Bildverarbeitung mit Python
Lassen Sie uns die Verarbeitung natürlicher Sprache mit der COTOHA-API genießen
[Verarbeitung natürlicher Sprache] Extrahieren Sie Schlüsselwörter aus der Kakenhi-Datenbank mit MeCab-ipadic-neologd und termextract
3. Verarbeitung natürlicher Sprache mit Python 1-2. So erstellen Sie einen Korpus: Aozora Bunko
3. Verarbeitung natürlicher Sprache durch Python 3-1. Wichtiges Tool zur Wortextraktion TF-IDF-Analyse [Originaldefinition]
[Kapitel 5] Einführung in Python mit 100 Klopfen Sprachverarbeitung
Modell unter Verwendung eines Faltungsnetzwerks in der Verarbeitung natürlicher Sprache
[Kapitel 3] Einführung in Python mit 100 Klopfen Sprachverarbeitung
[Kapitel 2] Einführung in Python mit 100 Klopfen Sprachverarbeitung
[Kapitel 4] Einführung in Python mit 100 Klopfen Sprachverarbeitung
Bildverarbeitung mit Python (Teil 2)
"Apple-Verarbeitung" mit OpenCV3 + Python3
[Analyse des gemeinsamen Auftretens] Einfache Analyse des gemeinsamen Auftretens mit Python! [Python]
Neuronales Netzwerk mit Python (Scikit-Learn)
Akustische Signalverarbeitung mit Python (2)
100 Sprachverarbeitung Knock Kapitel 1 (Python)
100 Sprachverarbeitung Knock Kapitel 2 (Python)
Bildverarbeitung mit Python (Teil 1)
Verarbeitung natürlicher Sprache 1 Morphologische Analyse
Verarbeitung natürlicher Sprache 3 Wortkontinuität
Bildverarbeitung mit Python (3)
Python: Vektordarstellung in natürlicher Sprache
Netzwerkprogrammierung mit Python Scapy
Verarbeitung natürlicher Sprache 2 Wortähnlichkeit
[Python] Bildverarbeitung mit Scicit-Image
[Übung] Erstellen Sie eine Watson-App mit Python! # 3 [Klassifizierung der natürlichen Sprache]
[Python] Versuchen Sie, Ramen-Shops durch Verarbeitung natürlicher Sprache zu klassifizieren
[Python] Einfache Parallelverarbeitung mit Joblib
Neuronales Netzwerk mit OpenCV 3 und Python 3
100 Klicks in der Verarbeitung natürlicher Sprache Kapitel 4 Kommentar
100 Sprachverarbeitung Knock Kapitel 1 in Python
Einwegverzögerungsmessung des Netzwerks mit Python
Verarbeitung natürlicher Sprache für vielbeschäftigte Menschen
Die Bildverarbeitung mit Python 100 klopft an die Binärisierung Nr. 3
Künstliche Sprache Logivan und Verarbeitung natürlicher Sprache (Verarbeitung künstlicher Sprache)