本記事では、pykakasiというモジュールを紹介します。
このモジュールを使用すると、漢字、ひらがな、カタカナをローマ字に変換することができます。
ローマ字への変換だけでなく、「漢字 → ひらがな」「ひらがな → カタカナ」といった日本語同士の変換も可能です。
また、setModeの対応関係を確認したい方は、こちらをご参照ください。(コピペ利用できるようになっています。)
pykakasiとは
漢字仮名混じり文をローマ字に変換する Python NLP(Natural Language Processing)ライブラリです。
日本人のHiroshi Miuraさんが作成しており、GitHubでソースコードが公開されています。
https://github.com/miurahr/pykakasi
使い方
pykakasi のインストール
以下のコマンドを実行すると、pykakasiをインストールできます。
pip install pykakasi
コードの記述の仕方
pykakasiを利用するには、次のようにコードを記述します。
import pykakasi
kakasi = pykakasi.kakasi() # インスタンスの作成
kakasi.setMode('H', 'a') # ひらがなをローマ字に変換するように設定
kakasi.setMode('K', 'a') # カタカナをローマ字に変換するように設定
kakasi.setMode('J', 'a') # 漢字をローマ字に変換するように設定
conversion = kakasi.getConverter() # 上記モード設定の適用
print(conversion.do('ねこ')) # ねこをローマ字に変換する処理
print(conversion.do('ネコ')) # ネコをローマ字に変換する処理
print(conversion.do('猫')) # 猫をローマ字に変換する処理
実行結果
neko
neko
neko
コードの解説
まず pykakasi.kakasi()と記述し、pykakasiをインスタンス化しています。
次にsetModeメソッドで、文字をどのように変換するか設定します。
もし、ひらがな(H)をローマ字(a)に変換したい場合は次のように設定を行います。
kakasi.setMode('H', 'a')
この設定は、カタカナ(K)をローマ字(a)に変換したい、また、漢字(J)をローマ字(a)に変換したい場合など、複数の設定を同時におこなうことができます。
文字変換に必要な引数の詳細については後述します。
setModeの設定が終わったら、getConverter() メソッドで設定を適用します。
上記の例では、変数 conversionに設定内容を格納しています。
最後に、"conversion.do('変換したい文字列')"を実行することで、setModeで設定した通りの文字変換が行われます。
setModeの引数
setModeメソッドを使用することで、文字をどのように変換するかを設定できます。
引数の設定内容は次の通りです。
setMode('変換前の文字種の頭文字', '変換後の文字種の頭文字')
上記の引数部分には、それぞれの文字種を意味する頭文字を設定します。
使用する頭文字とその意味は以下のようになります。
- H : ひらがな
- K : カタカナ
- J : 漢字
- a : ローマ字
下記設定例では、漢字をローマ字に変換する設定をおこなっています。
kakasi.setMode('J', 'a')
また、冒頭で「漢字 → ひらがな」「ひらがな → カタカナ」といった日本語間の変換も可能とと述べましたが、変換できない組み合わせも存在します。
次のコードは、その対応関係をまとめたものです。
OKは実行可能で、NGはエラーとなる組み合わせです。
kakasi = pykakasi.kakasi()
# OKパターン
kakasi.setMode('H', 'a') # ひらがなをローマ字に変換する(OK)
kakasi.setMode('K', 'a') # カタカナをローマ字に変換する(OK)
kakasi.setMode('J', 'a') # 漢字をローマ字に変換する(OK)
kakasi.setMode('J', 'H') # 漢字をひらがなに変換する(OK)
kakasi.setMode('J', 'K') # 漢字をカタカナに変換する(OK)
kakasi.setMode('H', 'K') # ひらがなをカタカナに変換する(OK)
kakasi.setMode('K', 'H') # カタカナをひらがなに変換する(OK)
# NGパターン
kakasi.setMode('H', 'J') # ひらがなを漢字に変換する(NG)
kakasi.setMode('K', 'J') # カタカナを漢字に変換する(NG)
kakasi.setMode('a', 'H') # ローマ字をひらがなに変換する(NG)
kakasi.setMode('a', 'K') # ローマ字をカタカナに変換する(NG)
kakasi.setMode('a', 'J') # ローマ字を漢字に変換する(NG)