振り仮名変換

natto-py を通して文にある漢字の読み方を出力することができます。

-F オプション

まず、 -F オプションを使用して ChaSen 読みの出力を指定します。


In [1]:
from natto import MeCab

text = "日本語です。これはカタカナです。ABC123 は全角英数字です。"

カタカナ→ひらがな変換テーブルの作成

ChaSen 読みはカタカナ出力なのでカタカナからひらがなへの変換するために、コードポイントのマッピングを作成します。

katankana

hiragana


In [2]:
katakana = (12449, 12532)    # katakana code-points range
hiragana = (12353, 12436)    # hiragana code-points range

kana2hira = dict(zip(range(katakana[0], katakana[1]+1), 
                     range(hiragana[0], hiragana[1]+1)))

各MeCabNode の char_type を見てカタカナからひらがなに変換するか否かを判断して出力する関数をつくって、 後は map などで適用します。


In [3]:
with MeCab("-Oyomi") as yomi:
    
    def _tr(n):
        if n.is_nor():
            if n.char_type == 2:
                return n.feature.translate(kana2hira)
            else:
                return n.surface
        else:
            return ""

    print("".join(map(_tr, yomi.parse(text, as_nodes=True))))


にほんごです。これはカタカナです。ABC123はぜんかくえいすうじです。

以上。