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).
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
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.
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.
livedoor HOMME
MOVIE ENTER
Peachy
Sports Watch
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.
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