見出し画像

[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のメソッドを実行すると、下記のような警告が出力されました。

画像1

まとめ

今回は、日本語をローマ字に変換する処理を実装しました。
動作確認で使用した日本語(漢字、ひらがな、カタカナ)は、変換は問題なく変換できていました。




いいなと思ったら応援しよう!