資料
全文検索
|
しばらく前までは、記事を検索できるようにするにはインデクサーと呼ばれる人たちが前もってすべての記事を実際に読んでキーワードを振っておく必要がありました。記事を検索する人はこのキーワードと、書誌データと呼ばれる雑誌名、著者名、タイトルなどを頼りに探していました。
電子化された記事が少ないうちはこれでも何とかなりましたが、最近ではほとんどの記事が電子化されただけでなく、電子メール、インターネットの普及により膨大な量の電子化された記事が身の回りにあふれるようになってきました。 一方コンピューターの能力も強力になり、文書のなかにないキーワード で探すのは無理ですが、電子化された記事のなかを高速に直接全部調べて検索できる全文検索システムが実用化されてきました。
最近のコンピューターは高速になってきたので、あまり多量の記事を扱うのでなければ簡便な方式です。準備をする作業もいりませんし、漏れもありません。ノイズもほとんどありません。実際のシステムでは他の方式で絞り込んだあとに、ノイズを取り除くときにも使われています。
米国ではワードプロセッサーの歴史が長いためか豊富な記事の蓄積があり、全文検索システムも早くからいくつか開発されてきました。文章をスペースで単語に分解して、そのままインデックスにする方式を取っているものが多く見受けられます。 代表的な英文の全文検索システムの処理を、順を追って説明します。
英語は比較的多義語が多いので検索のときに問題になることがあります。例えばbankという言葉には「銀行」という意味と、「土手」という意味があります。「土手」の意味のbankというキーワードで探したら、「銀行」に関する記事がたくさん出てしまうということがあります。
日本語は欧米の言葉のように単語同士がスペースで区切られていないので単語を切り出すこと自体が大変です。単語を切り出すのに文を文法的に解析(形態素解析)して分解する必要があります。これにはふつう大きな辞書が必要です。日本語では表記の揺れとして同じ言葉にいくつかの書き方が許されていますが、これも辞書を大きくしている要因です。解析を失敗したときのやり直しなどが必要になるので単語を取り出す処理だけでも相当に時間がかかります。
文書中に現れるすべての文字の種類を記録しておく方式です。検索文中の文字の種類をすべて持っている記事をヒットした記事にします。例えば「当日」をキーにして検索すると「当」と「日」の両方の文字を持っている記事をすべて検索します。この文字成分表は文字が出現したかどうかだけしか記録していません。したがって「当日」で検索したときには、「当日」を持っている記事の他に「日当」を持っている記事も検索されてしまいます。
文中から1文字ずつずらしたN文字の並びを順に取り出してインデックスを作るN文字インデックス(N-gram)と呼ばれる方式があります。検索漏れがないことと、文法解析をしていないのでどのような言語にでも適用できることが特徴です。米国でもこの方法で実現している全文検索システムもあります。
この方法ではいま例えば原文のどこかに「能率」という言葉があって、まったく離れたところに「不能」という言葉があったとときに、「不能率」というキーで検索したときに記事のなかにその文字列がなくてもヒットしてしまいます。 いろいろ工夫されてはいますが、インデックスが大きくなったり、登録に時間がかかったりする問題があります。この方式も文法的な解析をしない方式なので質問文を解析してシソーラスで拡張するというような処理はこの方式だけではできません。しかし漏れがないので特許検索のように漏れが致命的な問題になる場合には適した方法です。
ノイズとは指定した利用者が必要としない記事を検索してしまうことをいいます。逆に利用者が必要な記事で検索できなかった記事を漏れといいます。どこまでがノイズでどこまでが漏れかは研究がどの段階にあるかで異なります。研究の初期段階では広くいろいろな記事を必要とするので要求も大まかでノイズに寛容ですが、最終段階では要求が細かくなりノイズにたいしても厳しくなります。ノイズと漏れの問題を扱うときによく出てくる「適合率」と「再現率」という二つの相反する指標を説明しておきます。 適合率とは取り出した記事のうち、どの程度の記事が検索条件に合っているかを示す指標です。 再現率とは検索条件に合っているすべての記事のうち、どの程度の記事が取り出せたかを示す指標です。 ほとんどの場合「適合率」を上げると「再現率」が下がり、「再現率」を上げると「適合率」が下がります。
![]() 重み付け(スコア) いろいろな手段を用いて絞り込んでも検索した記事の件数があまりに多いとすべての記事を読むのは不可能です。何らかの方法で重み付けをして検索した記事を重要な順に表示したほうが親切です。重み付けの方法としては、例えばある特定の言葉を含んだ文のなかに現れたときはその文のなかで重要な言葉であるというような経験的な手法で評価する方法がありますが、文の種類によって評価が正確になったり、不正確になったりします。またある人には重要な記事でも、別の人にはそれほど重要ではないということが頻繁におこります。 もうひとつ検索したキーワードがありふれた言葉かどうかを調べてキーワードとして珍しい言葉で検索した記事の重みを大きくする方法で重みの少ない文を削除する方式があります。キーワードによってはあまり実質的なスコア付けができません。 文書要約 助詞を削除したり、言い回しを意味が同じでより短いものに言い換える方法はせいぜい20パーセント程度しか短くできません。
もう一つの方法では、まず文章を文に分解します。重み付けのところで述べた手法を用いて各文ごとのスコアを計算します。スコアの低い文を削除して重要な文だけを残します。当然重み付けのところで述べたのと同じ問題が残ります。
「俊司」は文書中の文字の並びをもとにハッシュ(hash)テーブルを作ってそのテーブルを作って検索する方式を取っています。文法的な解析はしていません。検索漏れのないこと、ノイズが出ること、日本語以外の言語でもなんら問題なく処理できることなどはN文字インデックスと同じです。
開発済みの形態素解析プログラム、シソーラスなどを組み合わせてさらに強力な検索エンジンを考えています。
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||