抽出の際は「数に該当する部分」「数以外の文字列」からなるパターンが記述 された辞書を参照し、このパターンと最長一致する文字列が文章中から抽出され る。辞書にはパターンとともに、そのパターンに最長一致した際に行う規格化処 理の情報も記述されており、規格化の際にはこの情報を用いる。辞書はタイプ別 に4つに分かれているため、分類毎にそれぞれの辞書の中身を述べる。
5.2.1 数量表現
数量表現についての辞書は、以下のような形式で記述される(全ての辞書は json形式で記述する)。
{"pattern":"*キロメートル",
"counter":"m",
"SI_prefix":3,
"optional_power_of_ten":0,
"ordinal":false,
"option":""}
patternと一致する文字列が文章中から抽出される。pattern中のアスタリスクは
数に該当する部分を示している。例えば文中に「30キロメートル」という表現が 出てきた際には、辞書中のパターンの中から上の「*キロメートル」というパター ンが最長一致し表現が抽出される。パターンが一致すると、他の要素を参照して 以下の処理が行われる。
• 抽出した文字列中の数を、そのまま@value 属性の値に付与する。
• counter に記述された値を @counter 属性の値に付与する。
• SI接頭辞による補正として、10のSI prefix に記述された値乗を@valueに 乗算する(例:「キロ」であれば、値に10の3乗を乗算する)。
• その他の補正として、10のoptional power of tenに記述された値乗を@value に乗算する(例:「*トン」というパターンでは、10の6乗を乗算する)。
• ordinal がtrueだった場合、@ordinal 属性の値をtrueとする。
• その他、特殊な処理が必要な場合は、optionの記述に従う。
5.2.2 定時間情報表現
定時間表現についての辞書は、以下のような形式で記述される。
{"pattern":"*年*月*日",
"corresponding_time_position":["y", "m", "d"],
"option":""}
規格化の際に行われる処理は以下である。
• 抽出した文字列中の数を、指定された時間単位にセットする。時間単位の 指定はcorresponding time position を参照して行われる。上の例では、初 めの数字が年、次の数字が月、最後の数字が日として認識される。数を時 間単位にセットした後、適切な値(DATE, TIMEのどちらか)が@type に 付与され、適切なISO形式の時間表現が @value に付与される。
• その他、特殊な処理が必要な場合は、optionの記述に従う。
5.2.3 不定時間情報表現
不定時間表現についての辞書はほとんど定時間表現と同じだが、起点からの時 間量を示すためにcorresponding time positionに符号がついている。正の符号は その時刻より後ろであることを、負の符号はその時刻よりも前であることを示す。
また「前」「後」といった文字列の前に「くらい」などの修飾表現がきてしまう ため、この処理も行う。
{"pattern":"か月ぐらい後",
"corresponding_time_position":["+m"],
"process_type":["MOD_APPROX"],
"option":""}
• 抽出した文字列中の数を、指定された通りの時間単位として設定する。ほ ぼ絶対時間表現の場合と同じだが、相対時間表現の場合は時間単位の指定 に符号がつけられている。例えば「-y」「+y」のような形で指定され、「*年 前」「*年後」といったパターンが該当する。
• prodess type に記述された値に応じた処理を行う。詳しくは修飾表現の処 理の節において述べる。
5.2.4 持続時間表現
{"pattern":"*か月半",
"corresponding_time_position":["m"],
"process_type":["han"],
"option":""}
• 抽出した文字列中の数を、指定された通りの時間単位として設定する。
• prodess type に記述された値に応じた処理を行う。詳しくは修飾表現の処
理の節において述べる。
process typeやoptionによって、柔軟な処理の記述が行えるようになっている。
現在の処理で対応できないような表現が表れた場合でも、process type やoption にある値が代入されていた場合のみ呼び出される処理をライブラリに記述するこ とで、容易にシステムを拡張できる。現在、process type に記述されいる値は各 種のmod属性を付与する各種の値と、han のみである。