ローマ字はイタリア語と習った男塾技術四課のテツカです。
- Pykakasi とは?
- インストール
- スクリプト作成
- テスト
- まとめ
1. Pykakasi とは?
漢字仮名混じり文をローマ字に変換する Python Natural Language Processing(NLP)ライブラリです。
pykakasi is a Python Natural Language Processing (NLP) library to transliterate hiragana, katakana and kanji (Japanese text) into rōmaji (Latin/Roman alphabet). 引用元: Pykakasi > Overview
2. インストール
2019/12/13 現在、Pykakasi がサポートする Python は以下の通りです。
Pykakasi supports python 2.7, python 3.5, 3.6, 3.7, 3.8 and PyPy. 引用元: Supported python versions
今回は Python 3 が使える EC2 検証機を 1 台用意します。 [参考] Linux 仮想マシンの起動 / クラウドならアマゾン ウェブ サービス 【AWS 公式】
ログイン後、python3 と pykakasi をインストールします。
sudo yum -y install python3
pip3 install pykakasi --user
今回使用したバージョンは Python 3.7.4 、Pykakasi 1.2 です。
$ python3 -V
Python 3.7.4
$
$ pip3 show pykakasi
Name: pykakasi
Version: 1.2
Summary: Python implementation of kakasi - kana kanji simple inversion library
Home-page: http://github.com/miurahr/pykakasi
Author: Hiroshi Miura
Author-email: miurahr@linux.com
License: GPLv3
Location: /home/ec2-user/.local/lib/python3.7/site-packages
Requires: six, klepto
3. スクリプト作成
以降のテストでは Examples を元にした下記スクリプトを利用します。
kana2romaji.py
import pykakasi def convert_to_romaji(text): """ 漢字仮名混じり文をローマ字に変換する Parameters ---------- text : str ローマ字に変換したい漢字仮名交じり文 Returns ------- result : str ローマ字に変換した文字列 Notes ------- 下記サイトを参考に作成しました https://github.com/miurahr/pykakasi """ kakasi = pykakasi.kakasi() kakasi.setMode("H", "a") # Hiragana to ascii kakasi.setMode("K", "a") # Katakana to ascii kakasi.setMode("J", "a") # Japanese to ascii kakasi.setMode("r", "Hepburn") # use Hepburn Roman table kakasi.setMode("s", True) # add space kakasi.setMode("C", False) # no capitalize conv = kakasi.getConverter() result = conv.do(text) return result if __name__ == "__main__": text = input() romaji = convert_to_romaji(text) print(romaji)
4. テスト
早口言葉
$ python3 kana2romaji.py <<<サバサバした鯖を砂漠で捌き売り捌くサバイバル sabasaba shita saba wo sabaku de sabaki uri sabaku sabaibaru
完璧です。
山手線の駅一覧
[ソース] yamate
大崎 品川 田町 浜松町 新橋 有楽町 東京 神田 秋葉原 御徒町 上野 鶯谷 日暮里 西日暮里 田端 駒込 巣鴨 大塚 池袋 目白 高田馬場 新大久保 新宿 代々木 原宿 渋谷 恵比寿 目黒 五反田
[結果]
$ cat yamate | while read line; do python3 kana2romaji.py <<<$line; done osaki shinagawa tamachi hamamatsuchou shinbashi yuurakuchou toukyou kanda akihabara okachimachi ueno uguisu tani nippori nishinippori tabata komagome sugamo ootsuka ikebukuro mejiro takadanobaba shin'ookubo shinjuku yoyogi harajuku shibuya ebisu meguro gotanda $
「toukyou」「uguisu tani」「shin'ookubo」が気になりますが、ちょっと試してみたいことが。
$ echo 高田馬場 | python3 kana2romaji.py takadanobaba $ echo ジャイアント馬場 | python3 kana2romaji.py jaianto baba
これもすごい。高田馬場は takada no
baba ですが、ジャイアント馬場は jaianto と baba の間に no
がありません。
そして最後にー
$ echo 高輪ゲートウェイ! | python3 kana2romaji.py takanawa geetouei !
ウエイ!(語彙力不足)
5. まとめ
Pykakasi で漢字仮名混じり文をローマ字に変換しましたが、かなりの精度で驚きました。 タグやリソース名の作成、チャット時の飛び道具としていかがでしょう?
以上