中納言マニュアル:検索条件式
ここでは、主に EBNF で記述します。 EBNF で使われる主な記法の意味は以下の通りです。
記法 | 説明 |
---|---|
= | 定義(左辺が名称、右辺が定義内容) |
[ ] | 中の記述は省略可能 |
{ } | 中の記述を0回以上繰り返し |
( ) | グループとして扱う |
| | または |
? ? | 特殊な文字列 |
" " | 文字列そのもの |
, | 文字列の連結 |
検索条件式群と検索条件式
検索条件式群(conditions)は複数の検索条件式(condition)をセミコロンで区切ったものです。 EOF は入力の終わりを示します。
検索条件式(condition)は共起条件(cooccurrence or clause)にコーパス条件、出版年、その他の条件、出力ファイル名を組み合わせたものになります。
指定条件 | 定義名 | 記述方法 | |
---|---|---|---|
コーパス条件 | corpus condition item | IN ... | 省略可能。定義の詳細はコーパス条件を参照 |
出版年 | published years | PUBLISHED IN ... | 省略可能。西暦で指定。複数指定する場合は空白で区切る |
その他の条件 | search option set | WITH OPTIONS ... | 省略可能。定義の詳細はその他の条件を参照 |
出力ファイル名 | filename | OUTPUT INTO ... | 省略可能。定義の詳細は文字列などを参照 |
conditions = { ";" }, condition, { { ";" }, condition }, { ";" }, EOF condition = [ "SEARCH " ], cooccurrence or clause, [ " IN ", corpus condition item ], [ " PUBLISHED IN ", published years ], [ " WITH OPTIONS ", search option set ], [ " OUTPUT INTO ", filename ], ( EOF | ";" )
共起条件
共起条件(cooccurrence or clause)では複数の条件を連結したり、条件の否定を書くことが可能です。
指定条件 | 定義名 | 記述方法 | |
---|---|---|---|
または | cooccurrence or clause | ... OR ... | ANDより演算順序は後 |
かつ | cooccurrence and clause | ... AND ... | NOTより演算順序は後 |
以外 | cooccurrence not clause | NOT ... NOT(...) |
cooccurrence condition item を否定 cooccurrence or clause を否定 |
cooccurrence or clause = cooccurrence and clause, { " OR ", cooccurrence and clause }
cooccurrence and clause = cooccurrence not clause, { " AND ", cooccurrence not clause }
cooccurrence not clause = [ "NOT " ], cooccurrence condition item | [ "NOT" ], "(", cooccurrence or clause, ")"
cooccurrence condition item は、共起条件の種類や文中での位置、表示のオプションを組み合わせたものです。
指定条件 | 定義名 | 記述方法 | |
---|---|---|---|
条件の種類 | cooccurrence condition item | 前方共起: ... キー: ... 後方共起: ... |
|
文中での位置 | lemma position condition | WITHIN △ WORDS FROM ○○ ON △ WORDS FROM ○○ |
○○から△語以内 ○○から△語 省略可能。○○には キー、文頭、文末 のいずれか。 |
キーと連結して表示 | - | DISPLAY WITH KEY | 省略可能 |
検索方法 | lemma condition item | ○○ = □□ (完全一致) ○○ LIKE □□ (ワイルドカードを使用した場合) ○○ @@ □□ (全文検索) |
○○にはlemma condition property key □□には文字列 |
cooccurrence condition item = cooccurrence condition prefix, ":", lemma not clause, [ lemma position condition ], [ " DISPLAY WITH KEY" ]
cooccurrence condition prefix = "前方共起" | "キー" | "後方共起"
lemma position condition = lemma position condition prefix, positive number, "WORDS", "FROM", lemma position root
lemma position condition prefix = " WITHIN " | " ON "
lemma position root = "キー" | "文頭" | "文末"
lemma or clause = lemma and clause, { " OR ", lemma and clause }
lemma and clause = lemma not clause, { " AND ", lemma not clause }
lemma not clause = [ "NOT " ], lemma condition item | [ "NOT " ], "(", lemma or clause, ")"
lemma condition item = lemma condition property key, lemma condition
lemma condition property key = "書字形出現形" | "発音形出現形" | "品詞" | "活用型" | "活用形"
| "語彙素" | "語彙素読み" | "語形" | "語形代表表記" | "書字形" | "語種" | "全文検索"
lemma condition = " = ", quoted string | " LIKE ", quoted string | " @@ ", quoted string
注:lemma condition property key はコーパスによっては指定できないものがあります。
例
キー: ( 品詞 = "名詞" AND ( 語彙素 LIKE "%学校" OR 語彙素 = "高校" OR 語彙素 = "大学" ) ) AND 後方共起: ( 品詞 = "助詞" AND 語彙素 = "に" ) ON 1 WORDS FROM キー AND 後方共起: ( 品詞 = "動詞" AND ( 語彙素 = "行く" OR 語彙素 = "往く" ) ) WITHIN 10 WORDS FROM キー
この例は、以下の3つの条件すべて満たすものを表します。
- キーは、品詞が名詞で、語彙素が「学校」で終わるか、語彙素が「高校」か、語彙素が「大学」
- キーの次の語が、品詞が助詞で、語彙素が「に」
- キーから後方10語以内に、品詞が動詞で、語彙素が「行く」あるいは語彙素が「往く」
キー: ( 品詞 = "動詞" AND 語彙素 = "減る" ) WITHIN 6 WORDS FROM 文末 AND 後方共起: ( 品詞="助動詞" AND 語彙素="た" ) WITHIN 4 WORDS FROM キー AND 前方共起: ( 品詞 = "名詞" AND ( 語彙素 = "腹" OR 語彙素 = "お腹" ) ) WITHIN 6 WORDS FROM キー
この例は、以下の3つの条件すべて満たすものを表します。
- キーは、品詞が動詞で、語彙素が「減る」で、文末から6語以内。
- キーから後方4語以内に、品詞が助動詞で、語彙素が「た」
- キーから前方6語以内に、品詞が名詞で、語彙素が「腹」あるいは語彙素が「お腹」
キー: 全文検索 @@ "おなかが減った"
この例は、以下の条件を表します。
- 全文検索で「おなかが減った」
コーパス条件
コーパス条件(corpus condition item)では、検索対象に含めるレジスターの指定を行えます。 コーパス条件でも、複数の条件を連結したり、条件の否定を書くことが可能です。 レジスターに対して、さらに詳細なジャンル指定を行うこともできます。
指定条件 | 定義名 | 記述方法 | |
---|---|---|---|
または | corpus or clause | ... OR ... | ANDより演算順序は後 |
かつ | corpus and clause | ... AND ... | NOTより演算順序は後 |
以外 | corpus not clause | NOT ... NOT(...) |
一つのレジスターを除外 corpus or clause を否定 |
ジャンル指定 | GENRE ... | 一つのレジスターに対して |
corpus condition item = corpus or clause
corpus or clause = corpus and clause, { " OR ", corpus and clause }
corpus and clause = corpus not clause, { " AND ", corpus not clause }
corpus not clause = [ "NOT " ], string, "=", quoted string, [ " GENRE ", genre or clause ] | [ " NOT " ], "(", corpus or clause ")"
genre or clause = genre set, { " OR ", genre set }
genre set = genre clause, { genre clause }
genre clause = string, "=", quoted string
例
registerName = "出版・新聞"
この例は、以下の条件を満たすものを表します。
- レジスターが「出版・新聞」
registerName = "出版・新聞" GENRE GENRE1 = "全国紙" GENRE2 = "朝日新聞"
この例は、以下の条件をすべて満たすものを表します。
- レジスターが「出版・新聞」
- ジャンル1が「全国紙」かつジャンル2が「朝日新聞」
registerName = "出版・新聞" GENRE GENRE1 = "全国紙" GENRE2 = "朝日新聞" OR GENRE1 = "地方紙"
この例は、以下の条件をすべて満たすものを表します。
- レジスターが「出版・新聞」
- ジャンル1が「全国紙」かつジャンル2が「朝日新聞」、あるいは、ジャンル1が「地方紙」
その他の条件
その他の条件は、「文字列 = 二重引用符で囲まれた文字列」の形で指定する条件を、必要に応じて ANDで組み合わせたものです。
search option set = search option clause, { " AND ", search option clause } search option clause = string, "=", quoted string
string | quoted string の中身 | 意味 |
---|---|---|
unit | 1, 2, 3, 4 | 検索種別。現在のページと異なっているとエラー。 短単位検索なら1、長単位検索なら2、文字列検索なら3、位置検索なら4 |
tglKugiri | 文字列 | 区切りに使用する文字列 |
tglBunKugiri | 文字列 | 文区切りに使用する文字列 |
tglWords | 正の整数 | 前後文脈の語数 |
limitToSelfSentence | 0, 1 | 共起条件の範囲。文境界をまたぐなら0、またがないなら1 |
tglFixVariable | 0, 1, 2 | 検索対象。固定長なら0、可変長なら1、両方なら2 |
keyDisplay | 0, 1, 2 | キー表示形式。語なら0、文字列全体なら 1 または 2 |
resultUnitWord | short, long | 結果表示単位。短単位なら short、長単位なら long |
targetString | 1, 2, 3 | 対象文字列。校訂本文なら 1, 原文なら 2 または 3 |
encoding | UTF-8 UTF-16LE Shift_JIS EUC-JP |
文字コードの種類 |
endOfLine | CRLF CR LF |
改行コードの種類 |
例
tglKugiri="+"
この例は、以下の条件を表します。
- 文脈中の区切り記号を + にして結果を表示
endOfLine="CRLF" AND encoding="UTF-16LE"
この例は、以下の条件を表します。
- ダウンロード時に Windows の Excel で処理できる形式で出力
文字列など
上で出現したその他の定義は以下のようになっています。
published years = publish year, { " ", publish year } published year = single digit without zero, single digit, single digit, [ single digit ] filename = ? Plain string with some symbols ? quoted string = '"', ? Escaped string ?, '"' string = ? Plain string without symbols ? positive number = single digit without zero, { single digit } single digit without zero = "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" single digit = single digit without zero | "0"