ユーザーキーワード置換辞書¶
AITalk 製品の扱うユーザーキーワード置換辞書を説明します。 以降は「ユーザーキーワード置換辞書」は「キーワード置換辞書」と記します。
キーワード置換辞書はユーザー辞書の種類の 1 つです。 ユーザー辞書の概要については ユーザー辞書概要 を参照してください。
キーワード置換辞書には文字列 (キーワード) と読み方を登録します。 AITalk にキーワード置換辞書を読み込むと、入力テキスト中に含まれるキーワードを登録した読み方に置き換えます。 読み方は AITalk 独自の中間言語で指定します。 以降「AITalk 独自の中間言語」は「AI 中間言語」と記します。 制御タグについては AI 中間言語 を参照してください。
キーワード置換辞書による置き換えは言語処理に入る前に行われます。 言語辞書の単語の優先度や文脈に依存せず、キーワードを指定した読み方に確実に置き換えできます。 入力テキスト中に定型的なフレーズが頻出する場合などはキーワード置換辞書の利用が適しています。
GUI でイントネーションやアクセントを編集できるツールを利用して、定型フレーズの読み方をチューニングしてキーワード置換辞書を作成できます。
キーワード置換辞書では置換先の AI 中間言語に制御タグを指定することが可能です。
そのため、特定の記号をポーズとみなす (例: 記号 ■
を #[[SILENCE msec=200]]
に変換する) ことで効率よく制御タグを入力したり、入力テキストに元々書かれている HTML タグ <strong>
をボリューム 1.5 倍として扱う、といった置き換えをすることができます。
制御タグについては 制御タグ を参照してください。
目次
キーワード置換辞書仕様¶
キーワードの判定方法¶
キーワードが入力テキストに含まれるか判定する方法を説明します。
マッチモード¶
キーワードが入力テキストに含まれるか判定する方法をマッチモードと呼びます。 マッチモードには、以下の 2 種類があります。
any
boundary
any
は部分文字列の検索を行います。
短いキーワードを any
で登録すると、意図しない単語の中でキーワード置換が多発しますので注意してください。(チューニングガイド も参照してください。)
boundary
は、キーワードの両端が フレーズ境界 と接しているときのみ入力テキストに含まれると判定します。
このため、意図しないキーワード置換が抑えられます。
フレーズ境界¶
マッチモードが boundary
のときは、フレーズ境界で区切られた部分がキーワードと一致しているときにキーワード置換を行います。
文頭・文末・読点・空白・制御タグをフレーズ境界とします。 入力テキスト中のフレーズ境界で区切られている部分をフレーズとします。
以下で例を用いてフレーズを説明します。
ここでは この任務が無事に終わったら
をキーワードとした場合に、それぞれの例文でキーワード置換が行われるかを示します。
- パターン 1
文頭と読点で区切られているため、キーワード置換が行われます。
この任務が無事に終わったら、旅に出ようと思います。
- パターン 2
読点で区切られているため、キーワード置換が行われます。
最後に、この任務が無事に終わったら、旅に出ようと思います。
- パターン 3
文頭と空白で区切られているため、キーワード置換が行われます。
この任務が無事に終わったら 旅に出ようと思います。
- パターン 4
文頭、読点、空白、いずれとも区切られていないため、キーワード置換は行われません。
この任務が無事に終わったら旅に出ようと思います。
注釈
この任務が、無事に終わったら
をキーワードとした場合、 キーワード置換辞書では以下の文でキーワード置換が行われますが、ユーザーフレーズ辞書では行われません。
この任務が、無事に終わったら、旅に出ようと思います。
複数のキーワードが同じ表記を含む場合¶
複数のキーワードが同じ表記を含む場合、入力テキスト中にキーワードが複数含まれることになります。 その場合、入力テキストを前から探索し、最長一致でキーワードを決定します。
例えば以下の 3 つのキーワードを登録していたとします。
ロード
サイクリング
サイクリングロード
入力テキストが以下の場合は、サイクリングロード
がキーワード置換の対象になります。
自転車でサイクリングロードを飛ばした。
同じキーワードを複数読み込んだ時の優先度¶
同じキーワードを持つ複数のキーワード置換辞書を読み込んだ場合は、後から読み込んだユーザー辞書のキーワードが優先になります。
同じユーザー辞書内に同じキーワードがあった場合も、後から読み込んだキーワードの置換が優先になります。
辞書フォーマット¶
キーワード置換辞書は 1 つのテキストファイルです。 キーワード置換 1 つごとに 3 ~ 4 行記述します。 以降「キーワード置換辞書ファイル」は「kdic ファイル」と記載します。
具体的な kdic ファイルの記載例は次のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 | // コメント行。キーワード置換辞書サンプル
----
津波警報発表
$2_2ツ^ナミケ!ーホー|0ハッ^ピョー$2_2
boundary
----
料金は\\1300です
$2_2リョ!ーキンワ|0セ!ン|0サ^ンビャク!エンデス$2_2
boundary
----
■
#[[SILENCE msec=200]]
any
|
コメント行¶
行頭が //
の行はコメントとして無視されます。
登録可能数¶
登録数に制限はありません。 登録数に比例してメモリ消費が増すため、メモリ不足にならないよう注意が必要です。
注釈
SDK 製品向け
同時に読み込める kdic ファイル数に制限はありません。
レコード¶
1 つのキーワード置換のレコードは、キーワード、AI 中間言語、マッチモードのセットからなります。 レコードの文法は次の通りです。
行 |
レコード要素 |
必須 |
説明 |
---|---|---|---|
1 行目 |
レコード開始 |
Yes |
文字 |
2 行目 |
キーワード |
Yes |
キーワードとなる文字列 |
3 行目 |
AI 中間言語 |
Yes |
置換後の AI 中間言語 |
4 行目 |
マッチモード |
No |
|
マッチモードは必須ではなく省略可能です。
省略した場合、 any
が適用されます。
空行をレコードの内部やレコード間に含めることはできません。
レコード開始¶
行頭から文字 -
を 1 回以上繰り返した行は新しいレコードの開始となります。
キーワード¶
置換対象となるキーワードをレコードの 2 行目 (レコード開始の次の行) に記述します。
マッチモード¶
キーワードのマッチモードをレコードの 4 行目に記述します。
any
または boundary
を指定できます。
行を省略した場合は any
として扱います。
エスケープ文字¶
キーワード、AI 中間言語は以下の文字でエスケープすることができます。
エスケープ文字 |
意味 |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
※ <other>
について。
\
に上記以外の文字 (= other
) が続いた時、その文字自身として扱います。
例えば、 \a
は a
としてエスケープされます。