LoginSignup
7
5

More than 5 years have passed since last update.

MeCab 使ってよみがなを取ってくる

Posted at

python-mecab とかいうのをインストールしようと思ってハマりかけたので、パットよみがなにしたかっただけということもあり、mecab コマンドをそのまま叩くことにした。

mecab はこんな感じでよみがなを取得できる(辞書にないと取れない)

$ echo "林檎" | mecab -Oyomi
リンゴ

んで、 Django のモデルから名前引っ張ってきて、よみがなに変換するスクリプトが以下。

yomigana.py
# -*- coding: utf-8 -*-

import os
import sys

import re
from subprocess import Popen, PIPE

import jcconv

from django.conf import settings

sys.path.append(os.path.abspath(os.path.dirname('.')))
os.environ['DJANGO_SETTINGS_MODULE'] = 'hogehoge.settings'

from hogehoge.apps.fuga.models import Piyo

def get_yomigana(text):
    p1 = Popen(['echo', text], stdout=PIPE)
    p2 = Popen(['mecab', '-Oyomi'], stdin=p1.stdout, stdout=PIPE)
    p1.stdout.close()
    output = p2.communicate()[0]
    return re.sub(r'\n', '', output)

for piyo in Piyo.objects.all():
    yomigana = jcconv.kata2hira(jcconv.half2hira(get_yomigana(piyo.name )))

    print ','.join([str(user.id), piyo.name.encode('cp932'), yomigana.decode('utf8').encode('cp932')])

プロジェクト名とかは hogehoge にしてる。
外部コマンド叩くのは以下のマニュアルを参考にしました。

どうやら、os.system とかは廃止方向らしい (2.7)

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5