ユーザーキーワード置換辞書

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

ファイル仕様

kdic ファイルはテキストファイルです。 以下の形式で記述します。

文字エンコーディング

UTF-8

改行文字

CRLF または LF

コメント行

行頭が // の行はコメントとして無視されます。

登録可能数

登録数に制限はありません。 登録数に比例してメモリ消費が増すため、メモリ不足にならないよう注意が必要です。

注釈

SDK 製品向け

同時に読み込める kdic ファイル数に制限はありません。

レコード

1 つのキーワード置換のレコードは、キーワード、AI 中間言語、マッチモードのセットからなります。 レコードの文法は次の通りです。

レコード要素

必須

説明

1 行目

レコード開始

Yes

文字 - を 1 回以上繰り返した行

2 行目

キーワード

Yes

キーワードとなる文字列

3 行目

AI 中間言語

Yes

置換後の AI 中間言語

4 行目

マッチモード

No

any または boundary

マッチモードは必須ではなく省略可能です。 省略した場合、 any が適用されます。 空行をレコードの内部やレコード間に含めることはできません。

レコード開始

行頭から文字 - を 1 回以上繰り返した行は新しいレコードの開始となります。

キーワード

置換対象となるキーワードをレコードの 2 行目 (レコード開始の次の行) に記述します。

AI 中間言語

キーワードの読み方を、AI 中間言語でレコードの 3 行目に記述します。 AI 中間言語の記述形式については AI 中間言語 を参照してください。

マッチモード

キーワードのマッチモードをレコードの 4 行目に記述します。 any または boundary を指定できます。 行を省略した場合は any として扱います。

エスケープ文字

キーワード、AI 中間言語は以下の文字でエスケープすることができます。

エスケープ文字

意味

\\

\

\n

LF

\r

CR

\-

-

\/

/

\<other>

<other>

<other> について。 \ に上記以外の文字 (= other) が続いた時、その文字自身として扱います。 例えば、 \aa としてエスケープされます。