• 検索結果がありません。

インデキシング

ドキュメント内 WISDOM Web (ページ 143-148)

第 7 章 リンク解析 111

9.2 インデキシング

9.2.1 概要

本節ではインデックスデータについて述べる.TSUBAKIでは転置インデックス方式を採用している.

転置インデックスを100万文書単位で作成し,検索時にデータを120並列に引くことで,1.2億ページを 対象とした検索を実現している.

インデックスに登録されるタームとしては,単語(出現形),単語(代表表記),係り受け(出現形),係 り受け(代表表記),同義表現の5種類があり,それぞれについて,文書頻度,出現文書ID,出現位置,

頻度,タームの素性情報がインデックスに登録される.タームは標準フォーマットに含まれる言語解析結 果から抽出されるため,インデキシングの時に改めて文書は解析しない.また,近接検索(フレーズ検索 を含む)および,スコア計算時にタームの出現位置を利用するため,タームの出現位置をインデックスに 登録している*2.出現位置は,文書の先頭から数えて当該単語が何単語目かを意味する.

インデックス作成の概要を図9.2に示す.作成の手順は以下の通りである.

Step 1: Web標準フォーマットデータからタームを抽出し,タームファイルを作成する

Step 2: 文書毎に作成されたタームファイルを100万文書単位にマージする

Step 3: タームファイルをバイナリ化する

Step 4: タイトル,URL,文書頻度データベースを構築する

*2係り受けタームの出現位置は必要でないが,インデックスへのアクセスを統一的に扱うため,出現位置の情報をインデックス に書き出している.

9.2 インデキシング 131









































































































































































 





9.2 インデックス作成の流れ

9.2.2 タームファイルの作成

個々の標準フォーマットデータからタームを抽出しタームファイルを作成する.図9.3にタームファ イルの例を示す.タームファイルでは,見出しの辞書順(utf8)に従ってタームの情報が保存されている.

見出しの末尾に付いている「*」はそのタームが出現形であることを表しており,フレーズ検索時に利用 される.

タームファイルのフォーマットを図9.4に示す.LABELはタームの見出し,SIDはタームが抽出され た文書ID(SID),TOTAL FREQはタームの出現頻度,SENT IDはタームの出現している文IDであ

る.POS DATAはタームの各出現に関する情報を保持するデータであり,出現位置(POSITON),頻度

(FREQ),素性(FEATURE)からなる.FREQがFloatになっているのは,同義表現タームの場合,1 未満の値をとるためである.同義表現タームの場合,その頻度としてSynGraphより与えられるスコア が用いられる.FEATUREは,タームの各出現に対して付与されるブロックタイプなどの情報である.

32ビット整数で実装されており,各ビットは対応する素性が発火しているかどうかを表す.現状で導入 されている素性を表9.1に示す.例えば,FEATUREの値が128(010000000)の場合,当該タームがメイ ンテキスト領域に出現していたことを意味する.今後はブロックタイプ情報に加え,SynGraphより付与 される文法素性や,係り受けタームにおける格情報を素性ビットに加える予定である.

以下では,標準フォーマットデータから抽出されるタームについて述べる.

s1178:銀幕 0181640135:2.97@2,19,24#46&0.99&16,191&0.99&256,227&0.99&64 s1196:楽しむ 0181640135:1.98@50,60#373&0.99&16,703&0.99&16

s1221:児童 0181640135:0.99@8#107&0.99&16 :

ここ* 0181640135:1@15#160&1&16

こと* 0181640135:2@54,56#533&1&16,595&1&16 こども* 0181640135:1@8#107&1&16

こども*->用語* 0181640135:1@8#107&1&16 この 0181640135:1@62#749&1&16

この* 0181640135:1@62#749&1&16 :

多-> 0181640135:1@19#198&1&256 子供 0181640135:1@8#107&1&16 子供->用語 0181640135:1@8#107&1&16 学 0181640135:1@8#109&1&16

学* 0181640135:1@8#109&1&16

学*->教材* 0181640135:1@8#109&1&16

: 9.3 タームファイルの例

TERM FILETERM INFO+

TERM INFOLABEL SID : TOTAL FREQSENT ID + #POS DATA+

POS DATAPOSITON & FREQ & FEATURE LABELString

SIDString

TOTAL FREQFloat SENT IDInteger POSITONInteger FREQFloat FEATUREInteger

9.4 タームファイルのフォーマット

9.2.2.1 単語ターム

SynGraphの解析結果から,単語の出現形,代表表記を単語タームとして抽出する.単語の出現形はフ

レーズ検索時に利用する.また,代表表記は内容語のみ抽出する.JUMANの代表表記をタームとして 抽出することで,「子供」「子ども」「こども」のような表記の揺れが解消され,検索漏れを軽減する効果が 期待できる.例えば,図6.19に示した文「子ども服をせんたくする」の言語解析結果からは以下の語が タームとして抽出される.

単語ターム(出現形): 子ども,服,を,せんたく,する

9.2 インデキシング 133

9.1 素性ビット ビット 素性

下位 1 ブロックタイプ(タイトル)

2 ブロックタイプ(キーワード) 3 ブロックタイプ(ヘッダー) 4 ブロックタイプ(フッター) 5 ブロックタイプ(リンク) 6 ブロックタイプ(画像) 7 ブロックタイプ(フォーム) 8 ブロックタイプ(メインテキスト)

9 ブロックタイプ(未判定) 上位 10 インリンク

  

9.5 「子ども服をせんたくする」をKNPで解析して得られる係り受け関係(代表表記化済み,下 線が引かれている単語は内容語)

単語ターム(代表表記): 子供,服,選択,洗濯

「せんたく」のように複数の代表表記(「洗濯」「選択」)が考えられる単語については,全ての表記が文書 に出現したものと見なす.この時,各単語の出現頻度は,代表表記の個数で割った値になる(つまり,「せ んたく」が1回だけ現れる文書では,「洗濯」および「選択」が0.5回ずつ出現していると見なされる.)

9.2.2.2 係り受けターム

言語解析結果から係り受け関係を抽出し,係り受けタームとしてインデックスに登録する.図6.19に 挙げた言語解析結果から得られる係り受け関係を図9.5に示す.この結果からは抽出される係り受けター ムを以下に示す.

係り受けターム(出現形): 子ども→服,服→せんたく 係り受けターム(代表表記): 子供→服,服→洗濯,服→選択

TSUBAKIでは,文節間ではなく内容語間の修飾関係(子供→服)を係り受け関係と見なす.単語ターム

と同様に,係り先または係り元に複数の代表表記がある場合は,その全ての組み合わせを係り受けターム として抽出し,その出現頻度は,組み合わせの数で割った値とする.

9.2.2.3 同義表現ターム

言語解析結果より語・句の同義表現を抽出し,それを同義表現タームとしてインデックスに登録するこ とで,より柔軟な検索を実現する.同義表現タームを用いることで,クエリとして「乳児の虫歯を予防す る」が与えられた場合であっても,「乳児」が「赤ちゃん」と,「予防」が「防ぐ」と同義関係にあること から,「赤ちゃんの虫歯を防ぐには...」と書かれた文書を検索することが可能になる.

SynGraphで解析することで得られるSYNノードを同義表現タームとして抽出する.例えば,図6.21





  

















  







 





 











 



















































9.6 インデックスデータのフォーマット

からは,以下の同義表現タームが抽出される.

s116:乳飲み子/ちのみご, s2914:子女/しじょ<上位語>, s10762:子<上位語>, s2995:小児/しょうに<上位語

>, s34:回避/かいひ, s29239:防ぐ/ふせぐ, s4815:防止/ぼうし, s4814:防ぐ/ふせぐ, s29241:風などをさえ ぎる<上位語>, s807:支える/ささえる<上位語>, s2344:保護/ほご<上位語>, s733:守備/しゅび<上位語>, s1131:攻める/せめる<反義語><否定>

同義表現ターム抽出する際,SYNノードに付与されている以下の文法素性は削除する.

<可能>,<尊敬>,<受身>,<使役>

同義表現タームについては,SynGraphより与えられるスコアを出現頻度と見なし,インデックスに登 録する.例えば,「赤ちゃん」に対して「s116:乳飲み子/ちのみご」というSYNノードが付与されるが,

この時,この文書にはSYNノード「s116:乳飲み子/ちのみご」が0.99回出現しているものと考える.

また,複合語に対して1つのSYNノードが付与されることがある.例えば,「京都大学」に対しては

SYNノード「s10260:京大」が付与される.このような場合,SYNノードの出現位置は,付与している複

合語の主辞の出現位置とする.先程の例の場合,SYNノード「s10260:京大」の出現位置は,「大学」の出 現位置と同じになる.

9.2.3 タームファイルのマージ

標準フォーマットデータ毎に作成されたタームファイルをマージする.マージは2段階に分けて行う.

まず,タームファイルを1万件単位でまとめる.この操作はメモリ上で行う.先述したようにTSUBAKI では,100万文書単位でインデックスデータを作成・管理している.そのため,1万件毎にマージされた ファイルを100件マージし,100万件分のタームファイルを作成する.この操作はメモリ上では難しいた めディスク上で行う.

9.2.4 タームファイルのバイナリ化

9.3 検索 135

ドキュメント内 WISDOM Web (ページ 143-148)