Skip to content

辞書ファイルについて

Robot-Inventor edited this page Feb 2, 2021 · 3 revisions

辞書ファイルについて

ORIZIN Agentの辞書ファイルの仕様について説明します。

ファイル形式

ORIZIN Agentの辞書ファイルは、独自のotfdフォーマットのテキストファイルです。

otfdフォーマットの構文

otfd ( Orizin Text Format Data ) フォーマットは、プログラミングにおける辞書型での利用に向いているファイル形式です。基本的な構文は次のようになっています。

index:value
index2:value2

:を区切り文字としたindexとvalueを1セットとして、1セットごとに改行します。類似のファイル形式にはcsvやtsvがありますが、あえて区切り文字に:を使用している理由は、次のとおりです。

  • csvは区切り文字に,を使用する。otfdは文章が格納される辞書ファイルとして設計されており、文章では,の使用頻度が高い。,をエスケープするのは手間であり、ファイルサイズも大きくなってしまう
  • tsvは区切り文字にタブを使用する。csvの,と違い、タブが文章中で使用されることは改段落時を除きほぼないと言ってよい。しかし、タブはスマートフォンで入力できない等、利便性に欠ける

以上を踏まえ、区切り文字には文章中での使用頻度が低くてスマートフォンでも入力しやすく、さらにプログラミングの辞書型の記法に似ていることからotfdフォーマットでは区切り文字に:を使用しています。

辞書ファイルの記述ルール

ORIZIN Agentの辞書ファイルでは、otfdファイルのindexやvalueに複数の値を持たせるために区切り文字として/を使用しています。

index1/index2:value1/value2
index3/index4:value3/value4

1行目を例に説明します。1行目では、ユーザーの入力した文字列中にindex1またはindex2もしくは類似する文字列が含まれていた場合はvalue1を読み上げ、value2を画面に表示します。

indexは正規表現をサポートしています。また、「本」と「日本」のように共通する部分のある言葉を別で扱いたい場合は長い方(今回の場合は「日本」)を先に記述します。

indexは/で区切ることによって1つ以上の値、valueは/で区切ることによって1つまたは2つの値を持たせることができます。valueが1つしかなかった場合はそれが読み上げにも画面の表示にも使われ、3つ以上あった場合、3つ目以降は無視されます。

valueが読み上げ用と画面表示用で別々に指定できるのは、音声合成エンジンで上手く読み上げられない言葉への対策です。たとえば、音声合成エンジンで上手く読み上げられない言葉を「読み上げ用には平仮名で書き、画面表示用には漢字で書く」といった使い方が考えられます。

ORIZIN Agentはユーザーの入力を正規化してから辞書ファイルを参照します。そのため、辞書ファイルのindexには正規化後の文字列を書く必要があります。正規化の処理についてはユーザーの入力の正規化についてを参照してください。

また、辞書ファイルを編集した後は必ず、dictionary_checker.pyを使用して辞書ファイルを検証する必要があります。辞書ファイルの検証については辞書ファイルの検証についてを参照してください。