RomanKana: Romaji to Hiragana Converter Module for Python/C++

RomanKana とは

RomanKanaは"konnnichiha!"のようなローマ字表記の文字列を"こんにちは!"の ようなひらがな表記の文字列に変換するためのPythonモジュールです。 変換規則は一般的な日本語仮名漢字変換プログラムの動作に似せてあります。 実行部分はC++で書かれており、Pure Pythonで同様の処理を行う場合よりも高速に動作すると思われます。 また、C++部分はPythonに依存しないので、別のC++プログラムから直接includeして使用できます。

ローマ字検索や検索エンジンのインデクサなどのためのビルディングブロックとしてご活用ください。

新着情報

デモ


ダウンロード

RomanKana はフリーソフトウェアです. MIT Licenseに従って 本ソフトウェアを使用することができます。

リビジョン1.0.0とそれより前のリビジョンでは、デフォルトの動作と使い方に違いがあります。詳しくはインストールを参照してください。

RomanKanaをコンパイルするためにはBoostDartsがインストールされている必要があります。

インストール

% tar xvzf RomanKana-1.0.0.tar.gz
% cd RomanKana
% sudo python setup.py install

RomanKanaはboostライブラリとdartsを必要とします。 boostは/usr/local/include/boostに、 dartsは/usr/local/includeにあることを想定しています。 もしお使いのシステムで上記の場所に必要なファイルが無い場合は、 setup.pyのinclude_dirsの項目を直接編集してください。

...
include_dirs=['/usr/local/include/boost',        # ← ここ(boost)
              '/usr/local/include',              # ← ここ(darts)
              '/usr/include',
              'swig']),
...

リビジョン0.1.2から、ca → か、qwa → くぁ などの あまり一般的でないと思われるルールが追加されました。

リビジョン1.0.0 以降では、デフォルトでこの機能は無効です。 Convertクラスのコンストラクタに定数フラグ USE_EXTENDED_RULES を渡すと有効になります。

>>> import RomanKana
>>> conv = RomanKana.Converter()
>>> print conv.convert('qwa')
qわ
>>> conv = RomanKana.Converter(RomanKana.Converter.USE_EXTENDED_RULES)
>>> print conv.convert('qwa')
くぁ
    

リビジョン0.1.3まではこのルールはデフォルトで有効です。 無効にするには、setup.pyの ROMANKANA_ADDRULES マクロの定義を削除して build してください。

...
define_macros=[
      ('ROMANKANA_ADDRULES', None),        # ← 削除
      ('ROMANKANA_KATAKANA_VU', None),
],
    

リビジョン0.1.3から、ひらがな+濁点の「う゛」を カタカナ一文字の「ヴ」で代用することができるようになりました。

リビジョン1.0.0 以降では、デフォルトでこの機能は無効です。 Convertクラスのコンストラクタに定数フラグ USE_KATAKANA_VU を渡すと有効になります。

>>> import RomanKana
>>> conv = RomanKana.Converter()
>>> print conv.convert('vu')
う゛
>>> conv = RomanKana.Converter(RomanKana.Converter.USE_KATAKANA_VU)
>>> print conv.convert('vu')
ヴ
    

リビジョン0.1.3では、この機能はデフォルトで有効です。 「う゛」を使用したい場合は、setup.pyの ROMANKANA_KATAKANA_VU マクロの定義を削除して build してください。

...
define_macros=[
      ('ROMANKANA_ADDRULES', None),
      ('ROMANKANA_KATAKANA_VU', None),     # ← 削除
],
    

リビジョン1.0.0以降で 拡張ルールと「ヴ」の両方を使いたい場合は、 両方のフラグをORで指定してください (USE_KATAKANA_VU | USE_EXTENDED_RULES)。

使い方

基本

% python
...
>>> import RomanKana
>>> conv = RomanKana.Converter()
>>> 
>>> print conv.convert('konnnichiha!')
こんにちは!
>>> 
>>> print conv.convert('a-yu-happi-?')
あ-ゆ-はっぴ-?
   

convert()はUTF-8の半角小文字ローマ字文字列を受け取り、UTF-8のひらがな文字列を返します。

コツ

RomanKana.Converter() は呼ばれるたびに内部でdouble array を構築します。アレイのサイズは小さいのですが、多少の計算が発生します。このdouble array は作成したRomanKana.Converter オブジェクトのsave()メソッドに書き込み可能なディレクトリ名を渡すことでファイルに保存しておくことができます。

% python
...
>>> import RomanKana
>>> conv = RomanKana.Converter()
>>> conv.save('.')
0
   

保存したディレクトリをRomanKana.Converter()に渡すことで、double array を新規に構築せず、ファイルから読み込むことができます。十分にディスクが速く、キャッシュが効いている場合、何度もRomanKana.Converter()を呼び出すのであれば、保存したファイルから読み込む方が速いと思われます。

% python
...
>>> import RomanKana
>>> conv = RomanKana.Converter('.')
   

save()で保存したファイルはCPUやOSやRomanKanaのバージョンが変わらない限り同じ内容なので、一度手動で作っておくだけで十分です。

TODO

謝辞