Effectuez une conversion demi-largeur / pleine largeur à grande vitesse avec Python

Présentation de la bibliothèque "mojimoji" qui peut convertir des chaînes de caractères japonais en demi-largeur et pleine largeur à grande vitesse avec Python.

mojimoji peut effectuer une conversion pleine largeur / demi-largeur en Python à grande vitesse. En utilisant la méthode introduite dans here, le processus de conversion est effectué en interne en utilisant Cython et C ++ unordered_map, ce qui est considérablement plus rapide que l'implémentation conventionnelle. Ça marche.

Installation

% pip install mojimoji

Aperçu

mojimoji a deux méthodes, han_to_zen et zen_to_han. Vous pouvez également utiliser les arguments de mot clé kana, digit et ascii, respectivement, pour désactiver la conversion katakana, nombre et alphabet.

Conversion de pleine largeur à demi-largeur

>>> import mojimoji
>>> print mojimoji.zen_to_han(u'Aiu abc012')
Aiuu abc012
>>> print mojimoji.zen_to_han(u'Aiu abc012', kana=False)
Aiu abc012
>>> print mojimoji.zen_to_han(u'Aiu abc012', digit=False)
Aiuu abc012
>>> print mojimoji.zen_to_han(u'Aiu abc012', ascii=False)
Iwabc012

Conversion de demi-largeur à pleine largeur

>>> import mojimoji
>>> print mojimoji.han_to_zen(u'Aiuu abc012')
Aiu abc012
>>> print mojimoji.han_to_zen(u'Aiuu abc012', kana=False)
Iwabc012
>>> print mojimoji.han_to_zen(u'Aiuu abc012', digit=False)
Aiu abc012
>>> print mojimoji.han_to_zen(u'Aiuu abc012', ascii=False)
Aiu abc012

performance

De même, comparons la vitesse de fonctionnement avec les bibliothèques zenhan et jctconv qui convertissent la demi-largeur et la pleine largeur avec Python.

% pip install zenhan
% pip install jctconv
% ipython
In [1]: import mojimoji
In [2]: import zenhan
In [3]: import jctconv
In [4]: s = u'Io Eo 012345' * 10
In [5]: %time for n in range(1000000): mojimoji.zen_to_han(s)
CPU times: user 3.90 s, sys: 0.03 s, total: 3.93 s
Wall time: 3.97 s
In [6]: %time for n in range(1000000): zenhan.z2h(s)
CPU times: user 71.05 s, sys: 0.16 s, total: 71.22 s
Wall time: 71.45 s
In [7]: %time for n in range(1000000): jctconv.z2h(s)
CPU times: user 19.75 s, sys: 0.06 s, total: 19.81 s
Wall time: 19.86 s

Vous pouvez voir qu'il est environ 18 fois plus rapide que la bibliothèque zenhan implémentée en Pure Python et environ 5 fois plus rapide que jctconv.

Télécharger

Recommended Posts

Effectuez une conversion demi-largeur / pleine largeur à grande vitesse avec Python
Mesurer la vitesse WiFi avec Python
Effectuer des calculs de volatilité implicite à grande vitesse (traitement des données de marché)
Comment gratter en quelques secondes avec le sélénium de Python
[Python] Trouver le nombre de Fibonacci à grande vitesse (mémorisation, méthode de planification dynamique)
[Python] Article qui permet le calcul rapide de matrices éparses
[Python] Comment obtenir la fraction d'un nombre naturel à grande vitesse
Conversion MP3 → WAV avec Python
Accélérez grossièrement Python avec numba
Implémentez des modes de dessin tels que PhotoShop à grande vitesse avec PIL / Pillow
Convertir un mémo à la fois avec Python 2to3
Effectuez périodiquement un traitement arbitraire avec Python Twisted
Comment créer des fichiers volumineux à haute vitesse
Modèle Python qui effectue une analyse des journaux à une vitesse explosive
[Python3] Une histoire bloquée avec la conversion du fuseau horaire
Coordonnées de latitude et de longitude ↔ Conversion de coordonnées UTM avec python
Corriger les fluctuations de notation demi-largeur et pleine largeur en Python
Vitesse explosive avec Python (bouteille)! Développement d'API Web
Convertissez plusieurs fichiers proto à la fois avec python
[Python] ABC159D (Mathématiques au lycée nCr) [At Coder]