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.
% pip install mojimoji
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.
>>> 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
>>> 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
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.
Recommended Posts