[PYTHON] Packen Sie japanische Verarbeitungssoftware in ein Docker-Image

Packen Sie japanische Verarbeitungssoftware in ein Docker-Image

Ich habe versucht, die folgende Software, die für die Verarbeitung japanischer natürlicher Sprache nützlich ist, in ein Docker-Image zu packen.


Erscheinungsort


Wie benutzt man

Starten Sie Bash

Wenn Sie vorerst einen Container einrichten und hineingehen möchten, können Sie dies folgendermaßen tun:

$ docker run --rm -it ototadana/nlp-jp bash

Starten Sie Python (REPL)

Das Starten von Python sieht folgendermaßen aus:

$ docker run --rm -it ototadana/nlp-jp python

MeCab Ein Beispiel für die Ausführung des Befehls mecab:

$ echo "Der UFO-Absturz, der letztes Jahr zu einem heißen Thema wurde, ist nur noch eine touristische Ressource. Stadtspezialitäten" | docker run --rm -i ototadana/nlp-jp mecab
Letztes Jahr Nomen,Anwalt möglich,*,*,*,*,letztes Jahr,Sakunen,Sakunen
Themennomenklatur,Allgemeines,*,*,*,*,Thema,Wadai,Wadai
Hilfs,Fallassistent,Allgemeines,*,*,*,Zu,D.,D.
Naru Verb,Unabhängigkeit,*,*,Fünf Schritte, La Linie,Kontinuierliche Verbindung,Werden,Natsu,Natsu
Hilfsverb,*,*,*,Besondere,Grundform,Ta,Ta,Ta
UFO Nomen,Proprietäre Nomenklatur,Allgemeines,*,*,*,UFO,UFO,UFO
Crash Nomen,Verbindung ändern,*,*,*,*,Absturz,Twirac,Twirac
Fallnomenklatur,Allgemeines,*,*,*,*,Vorfall,Jiken,Jiken
, Symbol,Lesepunkt,*,*,*,*,、,、,、
Nun Nomenklatur,Anwalt möglich,*,*,*,*,jetzt,Ima,Ima
Ist ein Assistent,Hilfe,*,*,*,*,Ist,C.,Beeindruckend
Nur ein Substantiv,Allgemeines,*,*,*,*,jedoch,frei,frei
Hilfswörter,Union,*,*,*,*,von,Nein,Nein
Nomen für Tourismusressourcen,Proprietäre Nomenklatur,Allgemeines,*,*,*,Tourismusressourcen,Kankoushigen,Kanko Shigen
.. Symbol,Phrase,*,*,*,*,。,。,。
Stadt Nomen,Allgemeines,*,*,*,*,Stadt,Machi,Machi
Hilfswörter,Union,*,*,*,*,von,Nein,Nein
Spezialnomenklatur,Allgemeines,*,*,*,*,Spezialität,Mabutsu,Mabutsu
EOS

CaboCha Beispiel für die Ausführung des Befehls cabocha:

$ echo "Der UFO-Absturz, der letztes Jahr zu einem heißen Thema wurde, ist nur noch eine touristische Ressource. Stadtspezialitäten" | docker run --rm -i ototadana/nlp-jp cabocha
letztes Jahr---D
Zum Thema-D
wurde-D
UFO-Absturz,-----D
jetzt---D
Gerade-D
Tourismusressourcen.---D
die Städte-D
Spezialität

Japanisches WordNet

Es wird als Datenbank im SQLite-Format im japanischen WordNet gespeichert. Sie können mit Python-Code wie folgt darauf zugreifen:

example-wordnet.py:

import sqlite3

query = """
    select c.def from sense a, word b, synset_def c
      where b.lemma = ? and c.lang = 'jpn'
      and a.wordid = b.wordid and a.synset = c.synset
    """

with sqlite3.connect('/dictionary/wnjpn.db') as conn:
    print([row[0] for row in conn.cursor().execute(query, ['Thema'])])

Wenn Sie diesen Code auf der Hostseite geschrieben haben, mounten Sie das aktuelle Verzeichnis auf der Hostseite und führen Sie es mit der Option -v wie folgt aus:

$ docker run --rm -i -v $PWD:/app ototadana/nlp-jp python /app/example-wordnet.py
['Gegenstand des Gesprächs oder der Diskussion']

MeCab + Japanisches WordNet

Auf MeCab kann auch über Python-Code zugegriffen werden. Aus Python-Code können Sie MeCab in Kombination mit japanischem WordNet wie folgt verwenden:

example-mecab+wordnet.py:

import MeCab, sqlite3

def get_definition(word):
    query = """
        select c.def from sense a, word b, synset_def c
          where b.lemma = ? and c.lang = 'jpn'
          and a.wordid = b.wordid and a.synset = c.synset
        """
    with sqlite3.connect('/dictionary/wnjpn.db') as conn:
        return [row[0] for row in conn.cursor().execute(query, [word])]

tagger = MeCab.Tagger()
tagger.parse('')

node = tagger.parseToNode('Der UFO-Absturz, der letztes Jahr zu einem heißen Thema wurde, ist nur noch eine touristische Ressource. Stadtspezialitäten').next

while node:
    print('%s:' % node.surface)
    print('  - %s' % node.feature)
    for definition in get_definition(node.feature.split(',')[6]):
        print('  - %s' % definition)
    print()
    node = node.next

Wenn ich das mache, sieht es so aus:

$ docker run --rm -i -v $PWD:/app ototadana/nlp-jp python /app/example-mecab+wordnet.py
letztes Jahr:
  -Substantiv,Anwalt möglich,*,*,*,*,letztes Jahr,Sakunen,Sakunen

Thema:
  -Substantiv,Allgemeines,*,*,*,*,Thema,Wadai,Wadai
  -Gegenstand des Gesprächs oder der Diskussion

Zu:
  -Partikel,Fallassistent,Allgemeines,*,*,*,Zu,D.,D.

Wurde:
  -Verb,Unabhängigkeit,*,*,Fünf Schritte, La Linie,Kontinuierliche Verbindung,Werden,Natsu,Natsu
  -Akzeptiere Veränderung oder Entwicklung
  -Laut und fröhlich
  -Krank werden und Opfer einer Krankheit werden
  -Offiziell ein Jahr dauern
  -Angemessen
  -Zu machen oder darzustellen:
  -Existieren
  -Zahlen- oder Mengenberechnung passt
  -Entwickeln und Reife erreichen
  -Erwachsen werden
  -Passiert auf besondere Weise
  -Erreichen oder geben Sie einen Status, eine Beziehung, einen Zustand, eine Verwendung oder einen Status ein
  -Kann, ändern, gemacht werden, oder sie sind möglich
  -Wechseln Sie schrittweise in einen Zustand und weisen Sie bestimmte Eigenschaften oder Attribute auf
  -Werden
  -In einem bestimmten Zustand oder Zustand sein oder sein
  -Verformt oder Änderungen in Position oder Verhalten unterworfen
  -Lenken oder lenken Sie die Aufmerksamkeit, Interessen, Gedanken oder Interessen einer Person von etwas ab
  -Sich entwickeln

Ta:
  -Hilfsverb,*,*,*,Besondere,Grundform,Ta,Ta,Ta

UFO:
  -Substantiv,Proprietäre Nomenklatur,Allgemeines,*,*,*,UFO,UFO,UFO

Absturz:
  -Substantiv,Verbindung ändern,*,*,*,*,Absturz,Twirac,Twirac
  -Schneller freier Fall aufgrund der Schwerkraft
  -Unter dem Einfluss der Schwerkraft fällt es ohne anzuhalten
  -Stark fallen oder fallen

Vorfall:
  -Substantiv,Allgemeines,*,*,*,*,Vorfall,Jiken,Jiken
  -Öffentlicher Aufruhr
  -Probleme, die untersucht werden müssen
  -Ein einziges bemerkenswertes Ereignis
  -Etwas passiert

、:
  -Symbol,Lesepunkt,*,*,*,*,、,、,、

jetzt:
  -Substantiv,Anwalt möglich,*,*,*,*,jetzt,Ima,Ima
  -Aktuell oder modern
  -Momentan vorhanden
  -Zeit passiert gerade
  -Eine Reihe von Stunden einschließlich des Moments der Rede
  -Nur ein bisschen vorher
  -In historischer Gegenwart
  -An diesem Punkt in der Erzählung einer Reihe von vergangenen Ereignissen
  -In der aktuellen Zeit das Zeitmuster
  -Grade eben
  -Im Moment
  -Aktuell
  -Im Moment

Ist:
  -Partikel,Hilfe,*,*,*,*,Ist,C.,Beeindruckend

jedoch:
  -Substantiv,Allgemeines,*,*,*,*,jedoch,frei,frei
  -Ohne irgendetwas anderes enthalten oder verwandt
  -Und viele sind nichts

von:
  -Partikel,Union,*,*,*,*,von,Nein,Nein

Tourismusressourcen:
  -Substantiv,Proprietäre Nomenklatur,Allgemeines,*,*,*,Tourismusressourcen,Kankoushigen,Kanko Shigen

。:
  -Symbol,Phrase,*,*,*,*,。,。,。

Stadt:
  -Substantiv,Allgemeines,*,*,*,*,Stadt,Machi,Machi
  -Situationen, die Chancen bieten
  -Eine Region der Stadt mit besonderen Merkmalen

von:
  -Partikel,Union,*,*,*,*,von,Nein,Nein

Spezialität:
  -Substantiv,Allgemeines,*,*,*,*,Spezialität,Mabutsu,Mabutsu
  -Unterhaltung für die Massen

:
  - BOS/EOS,*,*,*,*,*,*,*,*

Vielen Dank

Der im obigen Beispiel verwendete Beispielsatz ist der Anfang des Textes von Oedo Controller - Yunomi feat. TORIENA.

** Yunomi ist das Beste! ** (Kurz gesagt, dies ist der Eintrag, den ich nur sagen wollte ...)

Recommended Posts

Packen Sie japanische Verarbeitungssoftware in ein Docker-Image
Generieren Sie ein Docker-Image mit Fabric
[Bildverarbeitung] Posterisierung
Python-Bildverarbeitung
Bildverarbeitung 100 Schläge ①
Bildverarbeitung mit Python (ich habe versucht, es in 0 und 1 Mosaikkunst zu binarisieren)
100 Klopfen bei der Bildverarbeitung !! (021-030) Ich möchte eine Pause machen ...
[PyTorch] Tutorial (japanische Version) ④ ~ TRAINING A CLASSIFIER (Bildklassifizierung) ~
[Python] Maskiere das Bild mit Pillow zu einem Kreis