中納言マニュアル:検索条件式

ここでは、主に 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"

 

リンク Links