文節の検索

ここでは,検索プログラム한마루2.0(以下「한마루」とする)を用いて,21世紀世宗計画の平文コーパス(원시 말뭉치)を検索する方法について紹介します.

検索のための準備:コーパスの読み込みを参考に,書きことばあるいは話しことばのコーパスを読み込みます.平文コーパスの場合,自分で作成したテキストファイルを読み込むことも可能です.その場合,テキストファイルはUTF-16LEエンコーディング(BOM付き)で作成しておく必要があります.

検索の基本

検索を行う際,文節を基本とした検索が行われます.検索式にある単語を入力した場合,その単語だけで成り立つ文節が検索されます.例えば,

제일

と入力して検索した場合,検索されるのは

のように,제일だけで構成される文節あるいは記号が続く文節だけです.「제일기획」のように同じ文節内に他の要素が含まれる例は検索されません.

同様に,많다「多い」という語を調べるつもりで,

とだけ入力して検索すると,

など,많に記号が続く例,または많に空白が続く例だけが検索されます.

音節を表す演算子による検索

検索式には,様々な役割を持った特殊文字=演算子(연산자)を用いることができます.以下の演算子は,音節を表すのに用いられます(ガイドp.24「4)音節検索式 表3」).

演算子 役割・意味 連続使用
? 1つの音節
% 0または1つの音節
* 0以上の音節 不可
+ 1つ以上の音節 不可

「?」=1つの音節

?は1つの音節を指します.連続して用いることができ,?の数だけ音節がある例を検索することができます.例えば,

??그룹

は「그룹の前に2音節ある文節」を指し,

などの例が検索されます.そのため,

など,그룹の前に1音節ある文節や,

など,그룹の前に3音節ある文節は検索されません.

記号の扱いはやや曖昧です.上記の「(g&g)그룹」を例として,検索式とその意味,検索されるかどうかについてまとめると,以下の通りです.

検索式 指し示す部分 検索されるか
?그룹 )그룹 検索されない
??그룹 g)그룹 検索される
???그룹 &g)그룹 検索されない
????그룹 g&g)그룹 検索される

以上の結果から,記号は文節の始まりとしては扱われないようです.文節の境界か,または1つの音節として扱われることが分かります.

「%」=0または1つの音節

%は,「0または1つの音節」を表します.例えば

최%

という検索式は,「최という文字の後ろに1音節あってもなくてもよい文節」を指すことになります.結果は

などとなります.

%を連続して用いることもできます.例えば

경%%도에

は,「경という文字の後ろに0~2音節があり,さらに도에が続く文節」ということになります.以下のような例が検索されます.

「*」=0以上の音節

*は0以上の音節を表します.そのため,探したい語で終わるか,あるいは何らかの音節が続く例を検索したい場合に用います.例として,

근처*

を検索してみると,

といった근처だけで成り立つ文節と,

など,근처に他の音節が何音節でも続く文節が検索されます.

ターゲットとする音節の前に*をつけた場合,ターゲットの前に他の音節がある場合とない場合とを検索してくれます.

*가까이

を検索すると,가까이だけで成り立つ文節だけでなく,

などのように,가까이の前に他の音節または記号を含む文節が検索されます.

가까이は助詞ではないため,上記の例の多くは分かち書きの誤りを含んでいることになりますが,実際はこうしたケースが多く含まれています.そのため,例えば가까이の用例を網羅したい場合,*가까이*のように,前後に*をつけておき,多めに用例を検索してから不必要な例を除くのが現実的です.

「+」=1つ以上の音節

+は1つ以上の音節を表します.ターゲットとする音節に他の音節が必ず先行/後行する例だけが検索されます.例えば

+근처+

という検索式では,

などの例が検索され,근처だけで成り立つ文節や근처で終わる文節,근처に助詞などが続く文節は検索されません.また,결근처리や천근처럼など,名詞の근처以外の例も検索される点に注意しましょう.

文節をまたいだ検索

ここまで説明した検索の方法は,その範囲が1つの文節内に限定されたものでした.以下では,複数の文節にまたがる検索について説明します.

隣り合う文節を検索する

検索式に

문화 교육

のように,2つの項目をスペースで区切って並べると,2つの検索対象項目がこの順序で隣り合って出現する文節が検索されます.上記の場合,「문화」「교육」だけで成り立つ文節が,この順序で隣り合って出現するという例が検索されます.

そのため,2つの項目が逆の順で現れる,以下のような例は検索から外れます.

また,「문화」「교육」だけで成り立つ文節が検索対象になるので,

のような文節は検索されません.

検索項目の順序については,項目が3つ以上の場合でも同様です.

미술관 옆 동물원

という検索式では,

は検索されますが,もし仮に「동물원 옆 미술관」という例があっても,検索されません.

なお,それぞれの項目には音節を表す演算子を用いることができます.

*을 수% 있*

という検索式は「을だけか,을の前に1つ以上の音節がある文節」と「수だけか,수の後ろに1つの音節がある文節」と「있だけか,있の後ろに1つ以上の音節がある文節」がこの順序で隣り合っている例が検索されます.例は以下の通り.

ブーリアン演算子による検索

ブーリアン(불리언)演算子には&(AND)と|(OR)があり,項目のいずれかが成り立つ,あるいは全て成り立つ,といった条件を表すことができます.

どちらの演算子も,前後に空白(スペース)を入れてはいけません.

「&」=AND・論理積

前後の項目が同時に現れる例を検索します.例えば

가장&많은

という検索式は,

のように「가장」に続いて「많은」が出現する例だけでなく,

など,文をまたがった場合も含めて,「가장」の後に「많은」が出現する例を検索します.検索される項目の順序は,並べる順序に準じます.そのため,上記の検索式では「많은」の後に「가장」が出現する例は該当しません.

検索の範囲は,元のファイルの<p>タグ内に限定されるようです.

以下のように,3つ以上の項目を並べることもできます.

가장&많이&나타나는

この検索式では,

といった例だけでなく,

のように,「가장」「많이」「나타나는」の順序でそれぞれの文節が出現する例も検索されます.

なお,A&Bという検索式で,文節Aの後に文節Bが複数現れる場合,最初に出現する文節Bまでが検索に該当します.例えば,

*한테%&미스

という検索式(「한테の前に0以上の音節があり,後ろに1つの音節がある文節」の後ろに「미스」という文節が現れる)で検索される以下の例

では,最初の「아무한테나」以降,「미스」という文節が複数現れますが,検索にマッチするのは太字で示している,最初の「미스」までです.

「|」=OR・論理和

前後の項目のどちらかが出現する例を検索します.単独の文節における複数の候補を検索する,という点では,「文節をまたいだ検索」ではないかもしれません.

한국어|우리말

という検索式では,「한국어」もしくは「우리말」という文節を検索します.

この演算子も,複数の項目を並べることができます.

한국어|한국말|우리말

といった検索が可能です.いずれかの項目が出現する例を検索するため,項目の並び順は問いません.

ブーリアン演算子の組み合わせ

&|を組み合わせて用いることができます.その場合は,優先順位に応じて()でくくりますが,()でくくった部分が優先されます.例えば,

(가장|제일)&많은

という検索式では,「가장か제일という文節の後に,많은という文節が現れる」例(2,050例)が検索されます.

カッコの位置を変えて,

가장|(제일&많은)

とすると,「가장という文節」あるいは「제일という文節の後に많은という文節が現れる」例が検索されることになります.この検索式は「가장」だけで成り立つ例を含むので,検索される例は非常に多くなります(35,360例).

カッコを外して,가장|제일&많은という検索を行ったところ,가장|(제일&많은)と同じ結果になりました.가장&제일|많은(가장&제일)|많은と同じ結果になったので,カッコがない場合,|よりも&が優先され,先に処理されるようです.

また,

(아주|매우)&(좋은|나쁜)

という検索式は,「아주か매우という文節の後に,좋은か나쁜という文節が現れる」,以下のような例が検索されます.

上述の通り,ブーリアン演算子のうち&が優先されるので,この検索式からカッコを外した아주|매우&좋은|나쁜は,아주|(매우&좋은)|나쁜を検索するのと同じことになります.

さらに,

(아주|매우)&(좋은|나쁜)&(사람|놈)

という検索式は,「아주か매우という文節」,「좋은か나쁜という文節」,「사람か놈という文節」がこの順序で並ぶ例を指します.

文節の範囲を指定した検索

ある項目Aを基準として,その前後の範囲を文節数で指定し,指定した範囲内に項目Bが現れる,というような検索を行うことができます.範囲の指定には@を用い,@の前後に,検索の範囲として指定する文節数を数字で記述します.例えば,項目Aの前(=左側)3文節以内か,後ろ(=右側)2文節以内に項目Bが現れる,という検索を行う場合は,

項目A 3@2 項目B

のような検索式を書きます.項目Aと範囲指定の式,項目Bの間には,それぞれスペースが必要です.範囲指定の数に0を指定すると,そちら側の範囲は除外されます.例えば3@0であれば,基準とする項目の前3文節だけが範囲として指定されます.0の代わりに数字を省略して,3@としても同じです.

他の演算子との組み合わせ

範囲を指定した検索においても,音節を表す演算子やブーリアン演算子を用いることができます.例えば,

?거나 3@ +거나

という検索式は,「거나の前に1音節ある文節」(=?거나)の「左側3文節以内」(=3@)に,「거나の前に1音節以上ある文節」(=+거나)があるという,以下のような例を検索することができます.

また,ブーリアン演算子も使用した

절대 @5 (않+|없+|안*)

という検索式は,「절대だけで成り立つ文節」(=절대)の「右側5文節以内」(=5@)に,「않に1音節以上続く文節か없に1音節以上続く文節か안に0以上の音節が続く文節」(=(않+|없+|안*))があるという例を検索することになります.検索される例は以下の通り.

字素の検索

1つの音節内での字母を指定して,検索を行うことができます(ガイドp.25「5. 가. 어절 검색 5) 자소 검색식」).1つの音節を[ ]でくくり,[初声,中声,終声]のように,字母をコンマで区切って指定します.[ ]内,コンマの前後にスペースが入らないようにしてください.ただし,「終声がない」例を検索する場合に限り,「終声」として (スペース)を記述することが可能です.

なお,字母の代わりに以下のような演算子を用いることができます.

演算子 意味・役割 使用可能な箇所
? 何らかの字母が必ずあり,その字母は何でもよい 初声・中声・終声
% 字母があってもなくてもよい 終声のみ

要するに,?は「1つの字母」を表し,%は「0または1つの終声字母」を表すということになります.なお,初声・中声・終声の全てに1つずつ字母を記述することはできません.少なくとも一つは,上記の演算子を含む必要があります.

いくつか例を挙げます:

複数を列挙することも可能です:

日本語版のWindows 7上で上記の検索を行ったところ,いずれも検索結果がありませんでした.字母による検索は,韓国語版のWindowsでのみ実行可能なようです.