Outil d'analyse morphologique en ligne version Pure Python Rakuten MA

J'ai écrit un pur Python Rakuten MA, c'est donc un article d'introduction.

Qu'est-ce que Rakuten MA?

Rakuten MA est un analyseur morphologique JavaScript par Rakuten NLP Project. Je pense que les fonctionnalités sont que vous pouvez apprendre en ligne de manière séquentielle et mettre à jour le modèle facilement, et que vous pouvez effectuer une analyse morphologique du côté client via le navigateur.

Pour plus de détails, l'explication de l'article suivant est facile à comprendre.

Version Python Rakuten MA

Je voulais utiliser Rakuten MA avec Python, j'ai donc écrit la version Python!

Vous pouvez l'installer avec $ pip install rakutenma.

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("Il y a un écureuil dans le dos"))
print(rma.train_one(
       [["Uraniwa","N-nc"],
        ["À","P-k"],
        ["Est","P-rj"],
        ["jardin","N-n"],
        ["Niwatori","N-nc"],
        ["Mais","P-k"],
        ["Est","V-c"]]))

Avec ce genre de sentiment, vous pouvez utiliser l'API de la même manière que la version originale de JS. Voir PyPI ci-dessus pour plus de détails.

Seule la série Python3 est prise en charge </ del>

Je voulais vraiment supporter Python 2.7, mais comme je suis épuisé, je ne supporte que Python 3 pour le moment. </ del>

À partir de la version 0.2, il fonctionne avec Python 2.6 et 2.7 en plus de Python 3.3 et 3.4. </ ins>

Les modèles sont compatibles

Le modèle Rakuten MA gère la valeur d'une chaîne numérisée par une fonction de hachage. Le comportement de cette fonction de hachage étant le même que celui de la version JS, le même fichier modèle que la version JS peut être réutilisé dans la version Python.

Ce paquet n'inclut pas les fichiers de modèle, veuillez donc l'obtenir séparément du Référentiel original de Rakuten MA.

Comparaison du temps de traitement

J'ai essayé de comparer le temps de traitement avec la version originale de JS en tournant tokenize et en apprenant 1000 fois chacun.

Environnement d'exécution

Code de comparaison

rakutenma_benchmark.py


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

rma = RakutenMA()
for i in range(1000):
    rma.tokenize("Je n'ai plus peur de rien")
    rma.train_one(
        [["Déjà","F"],
         ["quoi","D"],
         ["Aussi","P-rj"],
         ["Effrayé","A-c"],
         ["Absent","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("Je n'ai plus peur de rien");
    rma.train_one(
        [["Déjà","F"],
         ["quoi","D"],
         ["Aussi","P-rj"],
         ["Effrayé","A-c"],
         ["Absent","X"]]);
}

résultat

J'ai remesuré avec une marge dans l'ordinateur. (2015/01/15) </ 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

Cela prend presque deux fois plus de temps que la version JS originale (; ´Д`)

Je l'ai aussi essayé avec Pypy.

$ time pypy3 test.py 

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

La performance est à égalité avec la famille d'origine.

à la fin

J'ai écrit Rakuten MA pour Python. C'est presque deux fois plus lent que la famille d'origine, et ce n'est pas bon car cela perd le gros mérite de pouvoir l'utiliser à partir d'un navigateur, mais ce n'est que sur ce point que vous pouvez utiliser Rakuten MA de Python sans écrire de code de colle.

Recommended Posts

Outil d'analyse morphologique en ligne version Pure Python Rakuten MA
Text mining avec Python ① Analyse morphologique (re: version Linux)
[Python] Analyse morphologique avec MeCab
Python: texte japonais: analyse morphologique
Analyse morphologique japonaise avec Python
Activer le moteur d'analyse morphologique MeCab en Python3 (version mars 2016)
Text mining avec Python ① Analyse morphologique
Outil de visualisation Python pour le travail d'analyse de données
Mise en place de CaImAn, un outil d'analyse d'imagerie calcique (Python)
Python: analyse morphologique simplifiée avec des expressions régulières
Comparaison approfondie de trois bibliothèques d'analyse morphologique Python
Installation d'outils d'analyse morphologique (MeCab, Human ++, Janome, GiNZA)