一件ずつ推論するモード

辞書全体を一度に推論するのではなく、個々の単語について一つずつアクセント推定したいケースもあるでしょう。このページではそのためのツールを紹介します。

s2ya: 表層形 → 読み&アクセント

s2ya は、単語の標準的な表記法(表層形)から、その読みとアクセントを推定します。読みの推定には、MeCab と UniDic による最適解を利用します。

  • 入力:漢字などによる、標準的な表記法(表層形)

  • 出力:読みとアクセント

$ echo 機械学習 | docker run tdmelodic:latest tdmelodic-s2ya

すると以下のような結果が得られます。

キ[カイガ]クシュー

以下のようなエイリアスを利用すると便利です。

$ alias tdmelodic-s2ya="docker run tdmelodic:latest tdmelodic-s2ya"

このコマンドを使って、他の単語も試してみてください。

$ echo 深層学習 | tdmelodic-s2ya
シ[ンソーガ]クシュー

$ echo 確率微分方程式 | tdmelodic-s2ya
カ[クリツビブンホーテ]ーシキ

$ echo 電験一種 | tdmelodic-s2ya
デ[ンケンイ]ッシュ

$ echo マルクス・アウレリウス・アントニヌス | tdmelodic-s2ya
マ[ルクスアウレリウスアントニ]ヌス

$ echo IoT | tdmelodic-s2ya
ア[イオーティ]ー

同様にして、文のアクセントも推定できます。

$ echo 今日の東京の天気は晴れ | tdmelodic-s2ya
キョ]ーノト[ーキョーノテ]ンキワハレ

$ echo 漢字の音読みには主に呉音と漢音があり、漢音の方が新しい。 | tdmelodic-s2ya
カ[ンジノオンヨミニ]ワオ]モニゴ[オントカ]ンオンガアリ[カ]ンオンノホ]ーガアタラシ]ー

$ echo 現在、西新宿ジャンクションから談合坂サービスエリアまで、およそ四十五分 | tdmelodic-s2ya
ゲ]ンザイニ[シシンジュクジャ]ンクションカラダ[ンゴーサカサ[ービスエ]リアマ]デ]オ[ヨソヨ]ンジュー[ゴ]フン

$ echo 完備なノルム空間をバナッハ空間といい、完備な内積空間をヒルベルト空間という。 | tdmelodic-s2ya
カ]ンビナノ[ルムク]ーカンオバ[ナッハク]ーカントイーカ]ンビナナ[イセキク]ーカンオヒ[ルベルトク]ーカントイウ

$ echo 権利の行使及び義務の履行は、信義に従い誠実に行わなければならない。 | tdmelodic-s2ya
ケ]ンリノコ]ーシオヨビギ]ムノリコーワ[シ]ンギニシ[タガイセージツニオコナワナ]ケレ]バナラナイ

警告

上で見たように、 tdmelodic は形式的には文のアクセント予測が可能であり、また学習データにも少量の文章データを使用しています。しかし、tdmelodic はもともと文のアクセント推定を主眼として設計・学習したものではありません。このため、この方法によって推定された文のアクセントはあくまで参考程度のものです。

注釈

s2ya の読み予測にはUniDic辞書を使用します。これは、docker イメージの中に入っている辞書が UniDic のみであるためです。もし Neologd など他の辞書を使用して読み推定をしたい場合は、次の sy2a をご利用ください。

sy2a: 表層形&読み → アクセント

sy2a は、単語の表層形と読みから、アクセントを推定するツールです。

  • 入力:表層形(漢字など)と読み

  • 出力:アクセント

例えば以下のように使用します。

$ alias tdmelodic-sy2a="docker run -v tdmelodic:latest tdmelodic-sy2a"
$ echo 機械学習,きかいがくしゅー | tdmelodic-sy2a
キ[カイガ]クシュー

他の例

$ echo 日本語アクセント,にほんごあくせんと | tdmelodic-sy2a
ニ[ホンゴア]クセント

$ echo 御御御付け,おみおつけ | tdmelodic-sy2a
オ[ミオ]ツケ

$ echo 談合坂SA,だんごーざかさーびすえりあ | tdmelodic-sy2a
ダ[ンゴーザカサービスエ]リア

また、文のアクセントも同様に推定できます。

$ echo Wifiに接続できません,わいふぁいにせつぞくできません | tdmelodic-sy2a
ワ[イファイニセ[ツゾクデキマセ]ン

$ echo 国立市の国立大学,くにたちしのこくりつだいがく | tdmelodic-sy2a
ク[ニタチ]シノコ[クリツダ]イガク

$ echo 漢音は、当時の唐の都、長安の音を持ち帰ったものである。,かんおんわとーじのとーのみやこちょーあんのおとおもちかえったものである | tdmelodic-sy2a
カ]ンオンワ[ト]ージノト]ーノミ[ヤコ[チョ]ーアンノオ[ト]オモ[チカエッタモノ]デア]ル

注釈

Neologd などの先進的な辞書を使用して読み推定を行いたい場合は、一例として以下のようなコマンドで読みが推定できます。

$ TEXT=ラグビー日本代表の試合を見に飛田給に

$ YOMI=`echo $TEXT \
$       | mecab -d \`mecab-config --dicdir\`/mecab-unidic-neologd/ \
$       | sed -e "/^EOS/d" | cut -f 2 | perl -pe 's/\s+//g'`

$ # An alternative approach:
$ YOMI=`echo $TEXT | mecab -Oyomi -d \`mecab-config --dicdir\`/mecab-ipadic-neologd/`

$ # check the result.
$ echo $YOMI
ラグビーニホンダイヒョーノシアイオミニトビタキューニ

$ # accent prediction.
$ echo $TEXT,$YOMI | tdmelodic-sy2a
ラ[グビーニホンダ]イヒョーノシ[アイオミ]ニトビタキュ]ーニ