2021.03.29   2021.05.16

【Python】日本語をローマ字に変換する

Python    


本記事では、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はエラーとなる組み合わせです。

setModeの対応関係
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)
コメント
現在コメントはありません。
コメントする
コメント入力

名前 (※ 必須)

メールアドレス (※ 必須 画面には表示されません)

送信