エイエイレトリック

なぐりがき

アルファベットをカタカナに変換するpythonパッケージalphabet2kanaを公開しました

f:id:sh111h:20210328123716p:plain

TL;DR

ありそうでなかった、アルファベットをカタカナに変換するや〜つを作りました。*1

github.com

ABCエービーシー に変換します。 読みの付与に使うことを目的としています。

pypi にも登録したので pip でインストールできます。

pip install alphabet2kana

ぜひ使ってみてください。

機能

jaconv の実装に習って a2k という関数で変換できます。

Aエー といったように、単純変換です。 ローマ字読みは しません 。(下に記載の関連パッケージを使うとよいです)

from alphabet2kana import a2k

a2k("ABC")
# エービーシー

日本語が混じっていても使えるようになっています。

a2k("SOS団")
# エスオーエス団

a2k("aclは言語処理だけでなくAFCチャンピオンズリーグの略でも使われます")
# エーシーエルは言語処理だけでなく
# エーエフシーチャンピオンズリーグの略でも使われます

因みに半角のアルファベットにのみ対応しているので、全角アルファベットは半角にする前処理が必要です。 さくっと前処理したい場合はmojimojijaconv を使ってください。

unicodedata.normalize("NFKC")で正規化してもいいと思います。

区切り文字 (delimiter) の機能もあります。

a2k("SOS団", delimiter="・")
# エス・オー・エス団

経緯

mecab の辞書ipadic や Sudachi の辞書にはアルファベットの1文字の読みが付与されておらず、 読みを出力すると* になってしまうことに気づきました。

とはいえ、漢字と違い、アルファベットの読みはほぼ一意に定まるので「とりあえず読みが欲しい」ときの処理ができたらいいなと思い、つくってみました。

Unidic にアルファベットの読み情報があったので、カタカナ表記はUnidicをベースにしています。Zだけ ゼットズィー の2通りの可能性があるのですが、単体での読みは ゼット が多いと考え、 ゼット にしました。

a2k("マジンガーZ")
# マジンガーゼット

a2k("Zホールディングス")
# ゼットホールディングス

関連パッケージ

python-romkan

github.com

  • ローマ字とアルファベットの変換
  • アルファベットをローマ字読みに変換する機能 romkan.to_katakana があります
    • ローマ字表記ではない場合、英字が残ります
 import romkan

romkan.to_katakana("esuouesu")
# エスオウエス

romkan.to_katakana("SOS")
# ソs

alkana.py

github.com

  • 英単語をカタカナに変換
  • 入力はアルファベットのみ受け付けます
import alkana

alkana.get_kana("Hello")
# ハロー

alkana.get_kana("SOS")
# エスオーエス

alkana.get_kana("SOS団")
# None

poetryを使ってpypiに登録する

はじめてpythonパッケージを公開するにあたって、以下の記事を参考にしました。 poetryで環境構築した場合、 poetry publish だけで公開できるので、とても便利だと思いました。

*1:このブログでアルファベットは 英語アルファベット を指します