[PYTHON] Ich habe versucht, mit der Bibliothek GiNZA zur Verarbeitung natürlicher Sprache eindeutige Ausdrücke zu extrahieren

Zweck dieses Artikels

Als ich kürzlich nach verschiedenen Dingen suchte, weil ich in Python auf einfache Weise die Extraktion eindeutiger Ausdrücke (Named Entity Recognition; NER) auf Japanisch verwenden wollte, erfuhr ich von `` `GiNZA``` und versuchte es. T. T. Übrigens ist die Eigenausdrucksextraktion eine der Aufgaben der Verarbeitung natürlicher Sprache, bei der bestimmte Wörter wie Datum und Person erkannt werden (siehe Abbildung unten).

image.png

Über GiNZA

GiNZA ist die Verarbeitung natürlicher Sprache(Natural Language Processing; NLP)In einer der Bibliotheken zu tun,Sie können verschiedene Aufgaben ausführen, außer eindeutige Ausdrücke zu extrahieren..


 Um genau zu sein, gibt es eine Bibliothek zur Verarbeitung natürlicher Sprache mit dem Namen `` `spaCy```, aber es scheint, dass sie für den japanischen Verarbeitungsteil zuständig ist. Daher diejenigen, die verstehen, wie man` `` spaCy``` verwendet Ich denke es ist früh.


 Weitere Informationen finden Sie im Folgenden. Dieses Mal wird nur die eindeutige Ausdrucksextraktion eingeführt.
GitHub:[megagonlabs/ginza](https://github.com/megagonlabs/ginza)
 [4. Verarbeitung natürlicher Sprache mit spaCy / GiNZA](https://www.ogis-ri.co.jp/otc/hiroba/technical/similar-document-search/part4.html)


# Vorbereitung

 Bereiten Sie zuerst `` `GiNZA``` und` `` spaCy``` vor.

```python
!pip install -U ginza
import spacy
from spacy import displacy
nlp = spacy.load('ja_ginza')

Nachdem das Modell von `GiNZA``` auf der` `spaCy``` Seite geladen wurde, ist es zur Verarbeitung bereit.

Wenn Sie ein Jupyter-Notizbuch verwenden,Ich habe gehört, dass Sie hier stolpern können,In diesem Fall[GitHub](https://github.com/megagonlabs/ginza)Bitte beziehen Sie sich auf.



# Vorbereitung der Daten

 Bereiten Sie als nächstes die zu analysierenden Probendaten vor.
 Dieses Mal werden wir die von Ronwitt veröffentlichten Livedoor-Nachrichtendaten verwenden.
 Da es sich bei den Daten um Nachrichten handelt, die in neun Genres unterteilt sind, werden wir diesmal nacheinander Nachrichtentexte extrahieren und eindeutige Ausdrücke für die neun Nachrichtentexte extrahieren.
 Es wird spekuliert, dass dies Ihnen hilft, die Stärken und Schwächen des Textgenres zu verstehen.

 Laden Sie die Daten von hier herunter und entpacken Sie sie.
 [Livedoor News Corpus](https://www.rondhuit.com/download.html)

```python
!wget https://www.rondhuit.com/download/ldcc-20140209.tar.gz
!tar zxvf ldcc-20140209.tar.gz

Einzigartige Ausdrucksextraktion

Ich habe den Code geschrieben, um den Pfad der Textdatei zu lesen und zu analysieren. Als Test habe ich einen Artikel der deutschen Kommunikation analysiert.

#Text lesen
filepath = "./text/dokujo-tsushin/dokujo-tsushin-4778030.txt"
with open(filepath) as f:
    s = f.read()

#Hier werden verschiedene Bearbeitungen durchgeführt
doc = nlp(s) 

#Zeichnen des Ergebnisses der Eigenausdrucksextraktion
displacy.render(doc, style="ent", jupyter=True)

Das Ergebnis sieht so aus. image.png

Sie können es gut extrahieren! Obwohl es sich um eine Frage des Aussehens handelt, ist es etwas schwierig zu erkennen, da die Farbe nur für PERSON und TIME angegeben ist. Daher werde ich die Farbe als Option ändern.

#Geben Sie eine Farbe für den extrahierten Entitätstyp an
colors = {"COUNTRY":"#00cc00", "CITY":"#00cc00", "GPE_OTHER":"#00cc00","OCCASION_OTHER":"#00cc00",
          "LOCATION":"#00cc00", "LOCATION_OTHER":"#00cc00","DOMESTIC_REGION":"#00cc00","PROVINCE":"#00cc00",
          "STATION":"#00cc00", "CONTINENTAL_REGION":"#00cc00","THEATER":"#00cc00",

          "TIME":"#adff2f","DATE":"#adff2f","DAY_OF_WEEK":"#adff2f",
          "PERIOD_YEAR":"#adff2f", "PERIOD_MONTH":"#adff2f", "PERIOD_DAY":"#adff2f",

          "FLORA":"#adff99","FLORA_PART":"#adff99",
          "DISH":"#ffeb99","FOOD_OTHER":"#ffeb99",
          
          "AGE":"#3385ff","N_PERSON":"#3385ff","N_EVENT":"#3385ff","N_LOCATION_OTHER":"#3385ff","RANK":"#3385ff",
          "N_PRODUCT":"#3385ff","":"#3385ff","":"#3385ff","":"#3385ff","MEASUREMENT_OTHER":"#3385ff","PERCENT":"#3385ff",
          "N_ORGANIZATION":"#3385ff", "ORDINAL_NUMBER":"#3385ff", "N_FACILITY":"#3385ff","SPEED":"#3385ff",
          "PHONE_NUMBER":"#3385ff",

          "MONEY":"#ffff00",

          "COMPANY":"#99c2ff", "SCHOOL":"#99c2ff", "INTERNATIONAL_ORGANIZATION":"#99c2ff",
          "GOE_OTHER":"#99c2ff", "SHOW_ORGANIZATION":"#99c2ff","CORPORATION_OTHER":"#99c2ff",

          "CLOTHING":"#ff66a3",
          "PRODUCT_OTHER":"#ff66a3",

          "PERSON":"#c266ff",
          "POSITION_VOCATION":"#ebccff",

          "MUSIC":"#ff7f50", "MOVIE":"#ff7f50", "GAME":"#ff7f50", "SPORT":"#ff7f50", "BOOK":"#ff7f50", 
          "BROADCAST_PROGRAM":"#ff7f50", 
          
          "ANIMAL_DISEASE":"#cd5c5c"
          }

options = {"colors": colors}
displacy.render(doc, style="ent", options=options, jupyter=True)

Wörter vom Typ "Ort" sind grün, Wörter vom Typ "Organisation" sind blau usw. Es gibt viel Raum für Verbesserungen. Da dies nur ein Experiment ist, bin ich damit zufrieden und habe damit neun Nachrichtenartikel mit eindeutigen Ausdrücken extrahiert. Die Ergebnisse sind wie folgt.

Deutsche Kommunikation

image.png

IT-Life-Hack

image.png

Haushaltsgerätekanal

image.png

livedoor HOMME

image.png

MOVIE ENTER

image.png

Peachy

image.png

Esmax

im01.png

Sports Watch

image.png

Themennachrichten

img01.png

Das Einstellen der Farbe erleichtert das Sehen als die Standardeinstellung. (Ich habe das Gefühl, dass meine Augen ein wenig flackern ...) Abhängig vom Genre der Nachrichten ist es offensichtlich, dass sich viele Personen im Unterhaltungssystem und viele Namen von Produkten und Unternehmen im Gadget-System befinden.

Die Genauigkeit ist wichtig, aber je nach Genre gibt es einige Wörter, die Anlass zur Sorge geben, aber man kann sagen, dass sie im Allgemeinen gut extrahiert sind.

Persönlich war ich besorgt, dass "Yamori" im Artikel von IT Life Hack als FOOD eingestuft wurde.

Referenz

GitHub:megagonlabs/ginza Objektquadrat: 4. Verarbeitung natürlicher Sprache mit spaCy / GiNZA Ronwitt Co., Ltd .: Livedoor News Corpus spaCy:Visualizing the entity recognizer spaCy:Named Entity Recognition

Recommended Posts

Ich habe versucht, mit der Bibliothek GiNZA zur Verarbeitung natürlicher Sprache eindeutige Ausdrücke zu extrahieren
Ich habe versucht, natürliche Sprache mit Transformatoren zu verarbeiten.
Verwenden Sie die Swagger-Benutzeroberfläche. Wenn Sie einen Swagger-UI-ähnlichen Stil wünschen, kopieren Sie einfach die gesamte Datei unter / dist unter https://github.com/swagger-api/swagger-ui. Danach schreiben Sie einfach hier in index.html die URL der yml-Datei um. Wenn Sie der Meinung sind, dass Sie @ApiModel oder @ApiModelProperty nicht finden können, wurden übrigens anscheinend alle Anmerkungen zur Schemadefinition in @Schema integriert. Emotionsanalyse mit Java, Swagger, OpenAPI, Micronaut Natural Language Processing! Ich habe versucht, die Bewertung anhand des Überprüfungstextes vorherzusagen
Ich habe versucht, Mr. Hanyu und Mr. Hanyu mit dem Verarbeiter der Verarbeitung natürlicher Sprache × Naive Bayes zu klassifizieren
[Verarbeitung natürlicher Sprache] Ich habe diese Woche versucht, die aktuellen Themen in der Slack-Community zu visualisieren
[Verarbeitung natürlicher Sprache] Ich habe versucht, die Bemerkungen jedes Mitglieds in der Slack-Community zu visualisieren
Ich habe versucht, die Version 2020 mit 100 Sprachverarbeitung zu lösen [Kapitel 3: Reguläre Ausdrücke 25-29]
Ich habe versucht, die Bewegungen von Wiire-Playern automatisch mit Software zu extrahieren
Ich habe versucht, das Modell mit der Low-Code-Bibliothek für maschinelles Lernen "PyCaret" zu visualisieren.
Ich habe versucht, die Daten mit Zwietracht zu speichern
[Python] Ich habe mit der Verarbeitung natürlicher Sprache ~ Transformatoren ~ gespielt
Ich habe versucht, die 2020-Version von 100 Sprachverarbeitungsproblemen zu lösen [Kapitel 3: Reguläre Ausdrücke 20 bis 24]
Ich habe Hello World mit 64-Bit-OS + C-Sprache ohne Verwendung einer Bibliothek ausprobiert
Ich habe versucht, die 2020-Version von 100 Sprachverarbeitungsproblemen zu lösen [Kapitel 1: Vorbereitungsbewegung 00-04]
Ich habe versucht, die 2020-Version von 100 Sprachverarbeitungsproblemen zu lösen [Kapitel 1: Vorbereitungsbewegung 05-09]
Ich habe versucht, die Sündenfunktion mit Chainer zu trainieren
Ich habe versucht, Funktionen mit SIFT von OpenCV zu extrahieren
Ich habe versucht, eine CSV-Datei mit Python zu berühren
Ich habe versucht, Soma Cube mit Python zu lösen
Ich habe versucht, das Problem mit Python Vol.1 zu lösen
Ich habe versucht, die Sprache mit CNN + Melspectogram zu identifizieren
[Für Anfänger] Sprachanalyse mit dem Verarbeitungswerkzeug "GiNZA" (von der morphologischen Analyse bis zur Vektorisierung)
Ich habe versucht zu überprüfen, ob die Natural Language API (Emotionsanalyse) Net Slang unterstützt.
Ich habe die Changefinder-Bibliothek ausprobiert!
Ich habe versucht, 100 Sprachverarbeitung klopfen 2020
Ich habe versucht, die Verarbeitungsgeschwindigkeit mit dplyr von R und pandas von Python zu vergleichen
Die erste künstliche Intelligenz. Ich wollte die Verarbeitung natürlicher Sprache ausprobieren, daher werde ich die morphologische Analyse mit MeCab mit Python3 versuchen.
Ich habe versucht, die Entropie des Bildes mit Python zu finden
Ich habe versucht zu simulieren, wie sich die Infektion mit Python ausbreitet
Ich habe versucht, die Python-Bibliothek von Ruby mit PyCall zu verwenden
Ich habe versucht, mit TensorFlow den Durchschnitt mehrerer Spalten zu ermitteln
Ich habe versucht, die Zugverspätungsinformationen mit LINE Notify zu benachrichtigen
Ich habe versucht, die Zeit und die Zeit der C-Sprache zu veranschaulichen
Ich habe versucht, in einem tief erlernten Sprachmodell zu schreiben
Studieren Sie die Verarbeitung natürlicher Sprache mit Kikagaku
[Verarbeitung natürlicher Sprache] Vorverarbeitung mit Japanisch
Ich habe versucht, 100 Sprachverarbeitung klopfen 2020: Kapitel 3
Ich habe versucht, 100 Sprachverarbeitung klopfen 2020: Kapitel 1
Vorbereitung zum Starten der Verarbeitung natürlicher Sprache
Ich habe versucht, den Ball zu bewegen
Ich habe versucht, 100 Sprachverarbeitung zu klopfen 2020: Kapitel 2
Ich habe versucht, 100 Sprachverarbeitung zu klopfen 2020: Kapitel 4
Ich habe versucht, den Abschnitt zu schätzen.
Ich habe versucht, den Datenverkehr mit WebSocket in Echtzeit zu beschreiben
Ich habe versucht, die Anfängerausgabe des Ameisenbuchs mit Python zu lösen
Ich habe versucht, die Bewässerung des Pflanzgefäßes mit Raspberry Pi zu automatisieren
Ich habe versucht, die Version 2020 mit 100 Sprachverarbeitung zu lösen [Kapitel 2: UNIX-Befehle 10-14]
Ich habe versucht, natürliche Zahlenausdrücke und arithmetische Verarbeitung nur mit Listenverarbeitung
Ich habe versucht, das Bild mit OpenCV im "Skizzenstil" zu verarbeiten
Ich habe am Wochenende versucht, mit Bitcoin Systre zu beginnen
Dockerfile mit den notwendigen Bibliotheken für die Verarbeitung natürlicher Sprache mit Python
Ich habe versucht, das Bild mit OpenCV im "Bleistift-Zeichenstil" zu verarbeiten
Ich habe versucht, die Größe des logischen Volumes mit LVM zu erweitern
Ich habe versucht, die Version 2020 mit 100 Sprachverarbeitung zu lösen [Kapitel 2: UNIX-Befehle 15-19]
Fassen Sie mit tf.data.Dataset api zusammen, wie Text (Verarbeitung natürlicher Sprache) vorverarbeitet wird
Ich habe versucht, die Effizienz der täglichen Arbeit mit Python zu verbessern
Ich habe zum ersten Mal versucht, mit DynamoDB und Step Functions eine serverlose Stapelverarbeitung zu erstellen
Ich werde eine detaillierte Erklärung zum Tod schreiben, während ich 100 Python für die Verarbeitung natürlicher Sprache 2020 mit Python löse
[Python] Ich habe versucht, die Nacht der Galaxienbahn mit WordCloud zu visualisieren!