読者です 読者をやめる 読者になる 読者になる

textutil_ja

Python

かなからローマ字に変換

romanize.romanizeで、ヘボン式のかな⇒ローマ字変換を行う。PerlLingua::JA::KanaをそのままPythonに移してある。

>>> from textutil_ja import romanize
>>> romanize.romanize(u"さとう ひさと")
u'SATOU HISATO'

romanize.romanize_passportで、パスポート式(ヘボン式+α)のかな⇒ローマ字変換。こちらはLingua::JA::Hepburn::PassportをそのままPythonに移した。

long_vowls_hオプションで、OU, OOのときOHに変換するかどうかを指定する。デフォルトはFalse.

>>> from textutil_ja import romanize
>>> romanize.romanize_passport(u"さとう ひさと", long_vowels_h=True)
'SATOHHISATO'
>>> romanize.romanize_passport(u"さとう ひさと", long_vowels_h=False)
'SATOHISATO'
>>> romanize.romanize_passport(u"さとう ひさと")
'SATOHISATO'

後で、romanize, romanize_passportにかな以外の値を与えときの挙動を統一すると思う。

ひらがな/かたかなの変換

>>> from textutil_ja import kana
>>> print kana.to_hiragana(u'ベガルタ仙台')
べがるた仙台
>>> print kana.to_katakana(u'べがるた仙台')
ベガルタ仙台

半角/全角の変換

textutil_ja.kana.to_hanで全角カタカナを半角カタカナに変換。textutil_ja.kana.to_zenで逆の操作。

>>> from textutil_ja import kana
>>> print kana.to_han(u'ベガルタ仙台')
ベガルタ仙台
>>> print kana.to_zen(kana.to_han(u'ベガルタ仙台'))
ベガルタ仙台

textutil_ja.kana.to_zenは、内部でunicodedata.normalizeを呼んでいるだけなので、半角カタカナ以外にも影響してしまう。この点は後で修正するかもしれない。

>>> print kana.to_zen(u'ベガルタ仙台 3 - 0 べるま〜れ平塚')
ベガルタ仙台 3 - 0 べるま~れ平塚
# 全角チルダや全角数字も半角に変わってしまう

50音表の行

「さっぽろ、せんだいはサ行」「やまがたはヤ行」・・・のように、かなの50音表の行を得る処理。

>>> from textutil_ja import kana
>>> print kana.get_kana_row(u"せんだい")
さ
>>> print kana.get_kana_row(u"センダイ")
さ

関数名をつけるのに悩んで、英語版Wikipediaのかなの説明を読んだりしてみたが、いまいちぴんとくる英単語が分からなかったので、get_kana_rowとした。ひらがな一文字のユニコード文字列を返すようにしたが、"A", "KA", "SA"・・・のようにASCII文字列を返すのとどっちがいいだろう?

たぶん後で書く

形態素解析MeCabでやっていたけど、後からYahoo!のWEB APIでやりたくなった(vice versa)」ということがあるとやっていられないので、

from textutil_ja.analyzer import analyze, backends
result = analyze(text, backends=backends.MeCab)
result = analyze(text, backends=backends.Yahoo(api_key))

のようなモジュールが欲しいところだ。