[Python] 日本語をローマ字に変換する
はじめに
Pythonで、日本語(漢字)をひらがな、カタカナ、ローマ字に変換する処理を実装します。
今回は、氏名をローマ字に変換する、という用途で使用しています。
使用するライブラリ
・pykakasi
漢字(ひらがな、カタカナ)をローマ字に変換してくれるライブラリです。
使用時にはインストールが必要です。
pip install pykakasi
バージョンが新、旧あります。
新しいバージョンをインストールしても、古いバージョンの関数を使用することができます。
動作環境
・windows10
・Jupyter Notebook 6.2.0
・Python 3.8.11
実装
新しいバージョンでの実装
import pykakasi
kakasi = pykakasi.kakasi()
text = '森 洋平'
result = kakasi.convert(text)
print(result)
オブジェクトの生成は、下記で行います。
kakasi = pykakasi.kakasi()
convert関数は、漢字からローマ字への変換を行います。引数に渡す文字列は、漢字、ひらがな、カタカナでも変換を行うことができます。
result = kakasi.convert(text)
出力結果は下記のようになります。
[{'orig': '森', 'hira': 'もり', 'kana': 'モリ', 'hepburn': 'mori', 'kunrei': 'mori', 'passport': 'mori'},
{'orig': ' ', 'hira': ' ', 'kana': ' ', 'hepburn': ' ', 'kunrei': ' ', 'passport': ' '},
{'orig': '洋平', 'hira': 'ようへい', 'kana': 'ヨウヘイ', 'hepburn': 'youhei', 'kunrei': 'youhei', 'passport': 'youhei'}]
戻り値は、リストの中に辞書型で変換結果が返ってきます。
ローマ字変換は、
・ヘボン式
・訓令式
・パスポート
の3種類で変換されます。
古いバージョンでの実装
import pykakasi
kakasi = pykakasi.kakasi()
# モードの設定
kakasi.setMode("H","a") # Hiragana to ascii, default: no conversion
kakasi.setMode("K","a") # Katakana to ascii, default: no conversion
kakasi.setMode("J","a") # Japanese to ascii, default: no conversion
kakasi.setMode("r","Passport") # default: use Hepburn Roman table
text = '森 洋平'
conv = kakasi.getConverter()
result = conv.do(text)
print(result)
オブジェクトの生成は、新しいバージョンと同じです。
変換したいモードの設定を、setMode関数で行います。
kakasi.setMode("H","a") # Hiragana to ascii, default: no conversion
kakasi.setMode("K","a") # Katakana to ascii, default: no conversion
kakasi.setMode("J","a") # Japanese to ascii, default: no conversion
上から、
・ひらがなからローマ字へ変換
・カタカナからローマ字へ変換
・漢字からローマ字へ変換
という設定を行いました。
次に、ローマ字変換の設定です。
kakasi.setMode("r","Passport")
ローマ字変換のモードは、新バージョン同様、「ヘボン式」、「訓令式」、「パスポート」の3種類です。
今回は、「パスポート」に設定しています。初期設定は、「ヘボン式」となっています。
実行結果は、setModeで指定したローマ字変換の結果を文字列で返します。
mori youhei
また、古いバージョンの関数である、setMode、getConverter、doのメソッドを実行すると、下記のような警告が出力されました。
まとめ
今回は、日本語をローマ字に変換する処理を実装しました。
動作確認で使用した日本語(漢字、ひらがな、カタカナ)は、変換は問題なく変換できていました。