Reine Python-Version Online-Morphologieanalyse-Tool Rakuten MA

Ich habe einen Pure Python Rakuten MA geschrieben, daher ist dies ein Einführungsartikel.

Was ist Rakuten MA?

Rakuten MA ist ein morphologischer JavaScript-Analysator von Rakuten NLP Project. Ich denke, dass die Funktionen darin bestehen, dass Sie online sequentiell lernen und das Modell einfach aktualisieren können und dass Sie morphologische Analysen von der Client-Seite über den Browser durchführen können.

Für Details ist die Erklärung im folgenden Artikel leicht zu verstehen.

Python-Version Rakuten MA

Ich wollte Rakuten MA mit Python verwenden, also habe ich die Python-Version geschrieben!

Sie können es mit $ pip install rakutenma installieren.

https://pypi.python.org/pypi/rakutenma

from rakutenma import RakutenMA

rma = RakutenMA(phi=1024, c=0.007812)
rma.load("model_ja.json")
rma.hash_func = rma.create_hash_func(15)

print(rma.tokenize("Hinten ist ein Eichhörnchen"))
print(rma.train_one(
       [["Uraniwa","N-nc"],
        ["Zu","P-k"],
        ["Ist","P-rj"],
        ["Garten","N-n"],
        ["Niwatori","N-nc"],
        ["Aber","P-k"],
        ["Ist","V-c"]]))

Mit diesem Gefühl können Sie die API auf die gleiche Weise wie die ursprüngliche JS-Version verwenden. Siehe PyPI oben für Details.

Es wird nur die Python3-Serie unterstützt </ del>

Ich wollte eigentlich Python 2.7 unterstützen, bin aber erschöpft, daher unterstütze ich vorerst nur die Python 3-Serie. </ del>

Ab Version 0.2 funktioniert es zusätzlich zu Python 3.3 und 3.4 mit Python 2.6 und 2.7. </ ins>

Modelle sind kompatibel

Das Rakuten MA-Modell verarbeitet den Wert einer Zeichenfolge, die durch eine Hash-Funktion digitalisiert wurde. Da das Verhalten dieser Hash-Funktion mit der JS-Version identisch ist, kann dieselbe Modelldatei wie die JS-Version in der Python-Version wiederverwendet werden.

Dieses Paket enthält keine Modelldateien. Bitte beziehen Sie es separat aus dem Original Rakuten MA Repository.

Vergleich der Bearbeitungszeit

Ich habe versucht, die Verarbeitungszeit mit der ursprünglichen JS-Version zu vergleichen, indem ich Tokenize gedreht und jeweils 1000 Mal gelernt habe.

Ausführungsumgebung

Vergleichscode

rakutenma_benchmark.py


# -*- coding: utf-8 -*-
from rakutenma import RakutenMA

rma = RakutenMA()
for i in range(1000):
    rma.tokenize("Ich habe vor nichts mehr Angst")
    rma.train_one(
        [["Bereits","F"],
         ["Was","D"],
         ["Ebenfalls","P-rj"],
         ["erschrocken","A-c"],
         ["Abwesend","X"]])

rakutenma_benchmark.js


var RakutenMA = require('./rakutenma');

var rma = new RakutenMA();
rma.featset = RakutenMA.default_featset_ja;

for (var i = 0; i < 1000; i++) {
    rma.tokenize("Ich habe vor nichts mehr Angst");
    rma.train_one(
        [["Bereits","F"],
         ["Was","D"],
         ["Ebenfalls","P-rj"],
         ["erschrocken","A-c"],
         ["Abwesend","X"]]);
}

Ergebnis

Ich habe mit einem Rand im Computer erneut gemessen. (15.01.2015) </ ins>

$ time python rakutenma_benchmark.py 

real	0m3.583s
user	0m3.573s
sys	0m0.009s

$ time node rakutenma_benchmark.js

real	0m1.852s
user	0m1.831s
sys	0m0.027s

Es dauert fast doppelt so lange wie die ursprüngliche JS-Version (; ´Д`)

Ich habe es auch mit Pypy versucht.

$ time pypy3 test.py 

real	0m1.908s
user	0m1.859s
sys	0m0.042s

Die Leistung entspricht der ursprünglichen Familie.

schließlich

Ich habe Rakuten MA für Python geschrieben. Es ist fast doppelt so langsam wie die ursprüngliche Familie, und es ist nicht gut, weil es den großen Vorteil verliert, es über einen Browser verwenden zu können, aber nur diesen einen Punkt können Sie Rakuten MA von Python verwenden, ohne Klebercode zu schreiben.

Recommended Posts

Reine Python-Version Online-Morphologieanalyse-Tool Rakuten MA
Text Mining mit Python ① Morphologische Analyse (re: Linux-Version)
[Python] Morphologische Analyse mit MeCab
Python: Japanischer Text: Morphologische Analyse
Japanische morphologische Analyse mit Python
Aktivieren Sie die morphologische Analyse-Engine MeCab in Python 3 (Version März 2016).
Text Mining mit Python ① Morphologische Analyse
Python-Visualisierungstool für die Datenanalyse
Einrichtung von CaImAn, einem Tool zur Analyse der Kalziumbildgebung (Python)
Python: Vereinfachte morphologische Analyse mit regulären Ausdrücken
Gründlicher Vergleich von drei morphologischen Python-Analysebibliotheken
Installation des Werkzeugs für die morphologische Analyse (MeCab, Human ++, Janome, GiNZA)