読みメモ

はじめに

音声合成とかに興味が出てきたい気がするので、日本語文の「読み」について簡単にメモ。でてこいやるき。

「読み」とは

  • 日本語文は、ひらがな、カタカナ、漢字、アルファベット、数字、記号、、など様々な文字で構成される
  • 特に「漢字」は、「音読み」「訓読み」と、同じ表記でも異なる読み方があり得る
    • 漢字はそれだけで意味を表すので「表意文字」とも呼ばれたりする
  • 「読み」は、「その文字をどのように発音するか?」の情報を付与したもの
    • 漢字の部分の読み方を付与する程度の「振り仮名」や単語(形態素)単位での読み方を表すもの、発声の情報を表す「発音」など、総称して使っているような気がする
振り仮名(ルビ振り)
  • 漢字の読み方を記すために添えられる文字列のこと
    • 主にひらがなやカタカナで漢字に付与されるものを指す
    • 例:「漢字仮名交じり」->「漢字(かんじ)仮名(かな)交(ま)じり」
      • 振り仮名・ルビ振りの場合は、単語全体での読み方ではなく、漢字の部分だけに読み情報が与えられることに注意
  • 「振り仮名の列」と言った場合、「かんじかなまじり」のような漢字を含まない文字列を指さすっぽい
  • 関連として、「仮名遣い」により各単語を「かな」で表記するためのルールが定められていたりする
発音
  • 言語音を出すことをいう
  • ひらがなやカタカナは、ほぼ1単語ずつ音の対応がとれるので、発音を表現するのに用いられたりする
  • 音声記号列
    • 単純に振り仮名の列にして1単語ずつ発音するだけでは情報が不十分だったりする
      • 助詞の「は」 : waと発音する
      • 長音「ー」 : 前の文字をのばして発音する
      • アクセント情報
      • 無声、鼻濁音 : 「す」「が」など
      • など

読みの取得

日本語文に対して、読みを得る方法をいくつか。

形態素解析

形態素解析自体のタスクは「わかち書き」と「品詞推定」だけど、jumanやchasenmecab、KyTeaなどで使える辞書は読みの情報も持っていて、それを利用することができる。
(けど基本的に、同じ品詞のもので複数読みがある場合や、意味を考えた読み分けなどは、提供しないことが多い。)

また、形態素解析の後段処理として、読みを修正するツールを提供している場合がある。

IMEの再変換

IMEによっては、その逆のタスクである、漢字文字列->読みがな列を行う機能を提供しているもよう。
第一候補を返しているとか?

WebAPI

いろんなところでルビ振りを行えるAPIが提供されているもよう。
中はどういうことをやってるかは不明。

読み分けタスク

文脈やその他のメタ情報(扱っているテキストの情報など)を利用して読み分けをしないと読みを付与をするのが難しいものなど。

数字列、数詞複合
  • 数字列(記号を含む場合もある)がどのように読むか
  • 「棒読み(一つずつ読む)」か「桁読み」か、など判定しなければいけない。
    • 1,234(桁読み,せんにひゃくさんじゅうよん)
    • 12.34(小数,じゅうにーてんさんよん)
    • 12-34(点数,じゅうにたいさんじゅうよん)
    • 0120-00-0000(電話番号,ぜろいちにーぜろぜろぜろのぜろぜろぜろぜろ)
    • 123-4567(郵便番号,いちにーさんのよんごーろくなな)
    • 12/34(分数,さんじゅうよんぶんのじゅうに)
数詞+助数詞
  • 「一本(いっぽん)」のように、数詞と助数詞の組み合わせでそれぞれの読み方が決まるものがある
    • 数詞は、漢語系列(いち、に、さん、し/よん、、)と和語系列(ひ、ふ、み、よ、、)とそのハイブリットという分類がある
    • 助数詞側も、数詞に伴って、読みが濁音化・半濁音化するものがある
  • いくつかのパターンに分類でき、「助数詞とそのパターン」で、ある程度読み分けできるもよう
  • また、前方の文字列によって変わるものもある
    • 例:トップ3(とっぷすりー)
「々」(ノマ)
  • 前接する文字列(形態素)によって、読みが決まる
    • さらに、場合によって連濁する
    • 例:日々(ひび)、神々(かみがみ)
  • また「々々」と連続する場合もある
  • 々を含む形態素を辞書に用意していたりするのであまり問題にならないかもしれない
人名・地名
  • 人名や地名は複数の読み方がありうる
  • そして、読みが異なるとさしているものが異なってしまうのでヤバい
  • 地名は、県や市の情報もあると特定できる場合が多い
  • 人名は、有名人の場合、姓名がペアで与えられると特定できる場合が多い
英単語、外国人名、外国地名
  • 英単語を発音などが似たひらがな・カタカナ列に表記し直すことを「transliteration」という
    • 例:Smith->スミス、Wikipedia->ウィキペディア
    • アルファベット以外にも、上海(しゃんはい)など現地読みを当てることもある
〜と書いて〜と読ます系
  • 人名や地名以外でも固有名詞などで、特殊に読む場合がある
動詞
  • 名詞系だけでなく、動詞でも読み分けが必要なものがある
    • 例:行った(いった/おこなった)、通った(とおった/かよった)
    • 「東京へ行った(とうきょうへおこなった)」などは意味がおかしいので、読み分けが必要
  • 下記の論文では、周辺3文字を使うことで読み分けの精度が向上したとのこと