LoginSignup
0
1

More than 1 year has passed since last update.

SudachiPyで発音を取得【Python】

Last updated at Posted at 2022-10-19

概要

Sudachiで発音を取得する関数を作りました。

背景

形態素解析ライブラリのうちMeCabでは発音を取得できますが、Sudachiでは「読み」のみで発音は取得できません。
そこで「読み」の結果を少し調整して、発音(っぽい文字列)を取得する関数を作りました。

実装

ライブラリをインストールします。
辞書はなんでもよいですが、今回はfullでやってみます。

pip install sudachipy
pip install sudachidict_full

関数を作ります。以下がポイントです。

  • 表層系、読み、品詞はそれぞれsurfacereading_formpart_of_speechメソッドで取得可能
  • 記号の発音は取得しない。品詞が「補助記号」かどうかで判定
  • 助詞の「は」「へ」は「ワ」「エ」になおす
from sudachipy import tokenizer
from sudachipy import dictionary

tokenizer_obj = dictionary.Dictionary(dict="full").create()
mode = tokenizer.Tokenizer.SplitMode.A

def get_word_pronunciation(text):
  tokens = tokenizer_obj.tokenize(text ,mode)
  prons = []
  for token in tokens:
    pron, surface, pos = token.reading_form(), token.surface(), token.part_of_speech()[0]
    if pos == "補助記号": #記号は発音しないので結果に含めない
      continue  
    if surface == "" and pos == "助詞": #助詞の「は」は「わ」になおす
      pron = ""
    elif surface == "" and pos == "助詞": # 助詞の「へ」は「え」になおす
      pron = ""
    prons.append(pron)
  return prons

print(get_word_pronunciation("吾輩は猫であるaseaewf123。「どこへ」いきますか"))
['ワガハイ', 'ワ', 'ネコ', 'デ', 'アル', 'aseaewf', 'イチニサン', 'ドコ', 'エ', 'イキ', 'マス', 'カ']
0
1
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
0
1