【Python】漢字をローマ字・ひらがな・カタカナに自動変換する方法(pykakasi)
2021.02.06 /
本記事ではPythonで漢字をローマ字・ひらがな・カタカナに自動変換する方法について解説していきます。
変換する日本語は漢字にひらがなが含まれていても変換可能です。
私の場合、スクレイピングで収集した情報をデータベースに保存する際に、日本の地名をローマ字に変換するために、本記事で紹介する方法を使用しています。
他にもフォルダ内にある日本語のファイル名をローマ字に変換したい場合でも使えますね。
本記事のプログラムは以下の環境で実行しております。
- OS:Windows10
- Python:Python 3.7.6
- pykakasi:2.0.4
本記事を通して以下の知識を学べます。
- pykakasiについて
- pykakasiを使った漢字をローマ字・ひらがな・カタカナに自動変換する方法
pykakasi
pykakasiとは
pykakasiとは漢字をローマ字・ひらがな・カタカナに変換できるPythonのNatural Language Processing (NLP)ライブラリです。
日本人のHiroshi Miuraさんが作成しています。
以下GitHubにソースコードがあります。
pykakasiはGNU General Public Licenseのフリーソフトウェアです。
インストール
標準ライブラリではないので使用するためにはpipでインストールする必要があります。
pip install pykakasi
作成するPythonスクリプトの先頭でpykakasiをインポートしてください。
import pykakasi
pykakasiの使い方
pykakasiはそのバージョンによって対応するPythonと使い方が異なります。
- pykakasi 1.2:python 2.7, 3.5, 3.6, 3.7
- pykakasi 2.0以降:python 3.6, 3.7, 3.8
それぞれのバージョンでの使い方を解説します。
新バージョン(2.0以降)の方が使いやすく便利になっています。
新バージョン(2.0以降)
まず初めにpykakasiのkakasi()メソッドでkakasiオブジェクトを作成します。
kks = pykakasi.kakasi()
kksはkakasiオブジェクトになります。
import pykakasi
kks = pykakasi.kakasi()
print(type(kks))
# class 'pykakasi.kakasi.kakasi'
このkakasiオブジェクトにはconvert()メソッドが用意されています。
convert()メソッドの引数に漢字を指定すると、返り値に‘orig’ ‘kana’ ‘hira’ ‘hepburn’ ‘kunrei’ ‘passport’をキーとする辞書型データとして変換された値が返されます。
result = kks.convert(変換したい漢字)
以下にconvert()メソッドを使用したサンプルプログラムを記します。
import pykakasi
kanjis = ['東京', '横浜']
kks = pykakasi.kakasi()
for kanji in kanjis:
result = kks.convert(kanji)
print(result)
[{'orig': '東京', 'hira': 'とうきょう', 'kana': 'トウキョウ', 'hepburn': 'toukyou', 'kunrei': 'toukyou', 'passport': 'tokyou'}]
[{'orig': '横浜', 'hira': 'よこはま', 'kana': 'ヨコハマ', 'hepburn': 'yokohama', 'kunrei': 'yokohama', 'passport': 'yokohama'}]
上記結果を見るとわかるように、返り値はリストの中に辞書データが入っている形となります。
この結果からpassport情報を取り出す場合は以下のようにします。
result[0]['passport']
このようにして、漢字をローマ字・ひらがな・カタカナに変換したデータを取得できます。
旧バージョン(1.2)
旧バージョンでもまずはpykakasiのkakasi()メソッドでkakasiオブジェクトを作成します。
kks = pykakasi.kakasi()
次にkakasiオブジェクトに対してコンバージョンオプションを指定します。
オプションは次の通りです。
オプション | 説明 |
---|---|
K | カタカナコンバージョン |
H | ひらがなコンバージョン |
J | 漢字コンバージョン |
a | ローマ字コンバージョン |
E | JISローマ字コンバージョン |
kakasiオブジェクトに対してgetConverter()メソッドを使用し、do()メソッドの引数に変換したい文字列を指定します。
import pykakasi
text = "東京"
kks = pykakasi.kakasi()
kks.setMode("H","a") # default: Hiragana -> Roman
kks.setMode("K","a") # default: Katakana -> Roman
kks.setMode("J","a") # default: Japanese -> Roman
kks.setMode("r","Hepburn") # default: use Hepburn Roman table
kks.setMode("s", True) # default: Separator
kks.setMode("C", True) # default: Capitalize
conv = kakasi.getConverter()
result = conv.do(text)
旧バージョンではこのようにして漢字をローマ字に変換します。
まとめ
本記事「【Python】漢字をローマ字・ひらがな・カタカナに自動変換する方法(pykakasi)」はいかがでしたか。
実際に使ってみるとすべての漢字を100%正確にローマ字・ひらがな・カタカナに変換することはできませんでした。
ですが日常で頻繁に使用する漢字であれば問題なく機能しますので、ぜひ必要な場面があればpykakasiを使ってみてください。