TL;DR
ありそうでなかった、アルファベットをカタカナに変換するや〜つを作りました。*1
ABC
を エービーシー
に変換します。
読みの付与に使うことを目的としています。
pypi にも登録したので pip でインストールできます。
pip install alphabet2kana
ぜひ使ってみてください。
機能
jaconv の実装に習って a2k
という関数で変換できます。
A
は エー
といったように、単純変換です。
ローマ字読みは しません 。(下に記載の関連パッケージを使うとよいです)
from alphabet2kana import a2k a2k("ABC") # エービーシー
日本語が混じっていても使えるようになっています。
a2k("SOS団") # エスオーエス団 a2k("aclは言語処理だけでなくAFCチャンピオンズリーグの略でも使われます") # エーシーエルは言語処理だけでなく # エーエフシーチャンピオンズリーグの略でも使われます
因みに半角のアルファベットにのみ対応しているので、全角アルファベットは半角にする前処理が必要です。 さくっと前処理したい場合はmojimoji や jaconv を使ってください。
unicodedata.normalize("NFKC")で正規化してもいいと思います。
区切り文字 (delimiter) の機能もあります。
a2k("SOS団", delimiter="・") # エス・オー・エス団
経緯
mecab
の辞書ipadic や Sudachi の辞書にはアルファベットの1文字の読みが付与されておらず、
読みを出力すると*
になってしまうことに気づきました。
とはいえ、漢字と違い、アルファベットの読みはほぼ一意に定まるので「とりあえず読みが欲しい」ときの処理ができたらいいなと思い、つくってみました。
Unidic にアルファベットの読み情報があったので、カタカナ表記はUnidicをベースにしています。Zだけ ゼット
と ズィー
の2通りの可能性があるのですが、単体での読みは ゼット
が多いと考え、 ゼット
にしました。
a2k("マジンガーZ") # マジンガーゼット a2k("Zホールディングス") # ゼットホールディングス
関連パッケージ
python-romkan
- ローマ字とアルファベットの変換
- アルファベットをローマ字読みに変換する機能
romkan.to_katakana
があります- ローマ字表記ではない場合、英字が残ります
import romkan romkan.to_katakana("esuouesu") # エスオウエス romkan.to_katakana("SOS") # ソs
alkana.py
- 英単語をカタカナに変換
- 入力はアルファベットのみ受け付けます
import alkana alkana.get_kana("Hello") # ハロー alkana.get_kana("SOS") # エスオーエス alkana.get_kana("SOS団") # None
poetryを使ってpypiに登録する
はじめてpythonパッケージを公開するにあたって、以下の記事を参考にしました。
poetryで環境構築した場合、 poetry publish
だけで公開できるので、とても便利だと思いました。