SQL • リレーショナルデータベース を管理する言語に SQL(Structured Query Language)がある。すなわち、 • テーブルを作成・削除・変更 したり、 • テーブルに追加・削除・編集 したり、 • テーブル内データの検索な どを行うプログラム言語 • 流通しているSQL DBMS実装 • Ingres, Oracle Database, IBM DB2, Microsoft SQL Server, Postgre SQL, MySQL, SQLite 等 • SQL蔵書検索システム例では、 SELECT フィールド FROM テーブル WHERE フィールド LIKE ‘%キーワード%’ というような構文でキーワードを探せる。 具体的には、「書誌」テーブルの「タイト ル」フィールドに「義経千本桜 」 「著者」 フィールドに「国立劇場調査記録課」を 探したい場合、 SELECT タイトル FROM 書誌 WHERE タイトル LIKE ‘%義経%’ AND 著者 LIKE ‘%劇場%’ と記入すればよい。 %はワイルドカードといいトランプの「バ バ」のようなもので任意の文字列 簡易検索システム: Excel VBA例 念のためウィルスチェック後使用下され 1. 変数である「見つかったセル」, 「最初のセル」, 「見つける列」, 「ワークシート」, 「キーワード」等の型を定義 2. どんなキーワードが入っても良い変数をつくる 3. キーワードを探し、見つかったセルにする 4. 見つからなければ、表示しプログラムから抜け出る 5. 見つかったセルを最初のセルにする 6. 見つかったセルの行全体を別シートにコピーする 7. 次に見つかったセルを見つかったセルにする 8. もし、最初のセルの番地と見つかったセルの番地が同じなら抜け出す 9. でなければ、別シートの行末にコピーする キーワードを入れ→ シート「検索結果」を見よ ID タイトル アドレス 4001 絵画と物語絵 http://cinii.ac.jp/naid/1023 4002 源氏物語絵巻の構図 4003 徳川本源氏物語絵巻 簡易検索システム: Excel VBA例 Sub 検索結果別シートへ() Dim 見つかったセル As Range, 最初のセル As Range, 見つける列 As Range Dim WS1 As Worksheet, WS2 As Worksheet, キーワード As String Set WS1 = Sheets("全文") Set WS2 = Sheets("検索結果") WS2.Cells.Clear WS1.Activate キーワード = Range("B2").Value Set 見つける列 = Range("全文[タイトル]") Set 見つかったセル = Cells.Find(What:=キー ワード) If 見つかったセル Is Nothing Then MsgBox "見つかりません" Exit Sub Else 念のためウィルスチェック後使用下され Set 最初のセル = 見つかったセル 見つかったセル.EntireRow.Copy WS2.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) End If Do Set 見つかったセル = Cells.FindNext(見つ かったセル) If 見つかったセル.Address = 最初のセ ル.Address Then Exit Do Else 見つかったセル.EntireRow.Copy WS2.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) End If Loop End Sub 参考:Office Tanaka [見つかったセ ルを別のシートにコピーする] , 早川清志『Excel VBAで行うデータベース活用の教科書』p.48 情報検索システム: • ソート済みが前提 対象全文データ 全文検索の手法:例:Google • クロール→インデックス化 • アルゴリズム • スパム対策 • ポリシー • クロール(検索ロボット)ソフト 全文データ 1bt ID: A12301 雨にも負け|ず 風にも|負けず 雪|にも夏の暑 タイトル: 飴にも負けず 41 著者: 宮澤賢治 さにも負け|ぬ 丈夫な|体をもち |欲はなく決 11 21 51 61 1bt ID: B10023 風の物語 = |A story o|f wind 菩 提の曲 URL: http://www2.mmc.atomi .ac.jp/~artnavi1/worksho p/makeMusic/workIndex .html 101 111 121 131 秋、嵯峨野| を佳人と歩|く、、、ふ|と、、、雨 141 151 161 171 が降る。 11 21 • 転置索引ファイル • インデックス化 • 図書の巻末索引と同様の手法 • 「キーワード, 資料ID, 場所(例1バイト 目)」の索引ファイルを作る 71 全文データ • Index.htmlからタイトル、作者、アドレス、 キーワード等を収集。リンクをたどり、 最終リンクまでのアドレス、キーワード、 タイトルを収集し、データベース化する • 転置索引 31 キーワード 資料ID 場所 雨 A12301 1バイト目 B10023 139バイト目 A12301 13バイト目 B10023 1バイト目 風 31 情報検索システム: • 見出し語抽出法(含む:分かち書き) • N-gram (N文字インデックス法) 形態素解析とN-gramの手法が知られ る • 対象全文を文字単位でN数で分割 する • 形態素解析 • 例:対象文字「情報探索の方法を調 べる」 文章を品詞ごとに分かち書きする方法 例:Yahoo! 日本語形態素解析 (「みんなの知識ちょっと便利帳」より) • 文章例:情報探索の方法を調べる • 解析結果:情報 | 探索 | の | 方法 | を | 調べる | • オプション:品詞の指定:名詞、動詞 • 表示全情報 標記 よみ 品詞 基本形 全情報 情報 じょうほ う 名詞 情報 名詞,名詞,*,情報,じょうほう,情報 探索 たんさく 名詞 探索 名詞,名サ他,*,探索,たんさく,探索 方法 ほうほう 名詞 方法 名詞,名詞,*,方法,ほうほう,方法 調べる しらべる 動詞 調べる 動詞,一段,基本形,調べる,しらべる,調 べる N=1 情 報 探 索 の 方 法 を 調 べ る N= 2 情報 報探 探索 索の の方 方法 法を を調 調べ べる る N=3 情報探 法探索 探索の 索の方 の方法 方法を 法を調 を調べ 調べる べる る 情報検索システム: 線形探索法、2分探索法、ハッシュ探 索法などがある • 線形探索法 (逐次探索する) UNIXのGrep検索(正規表現した文字列検 索)やSQLのLike検索と同様。 • A列に利用者番号 • B列に利用者名があるとする。 • 全部でN件。利用者番号Kを探索する。 1. はじめ→利用者番号Kを手入力 2. J番目に1を代入する 3. N件よりJ番目が多ければ、該当なしと 表示して終わる。違う場合、手順4へ 4. A列のJ番目が求めるKと同じなら、そ のB列のJ番目(=利用者名)を表示して 終わる 5. 見つからなければ、J番目に1を加え (つまり次のJ番目を探し)、手順2と3の 間に移動を繰り返す • 毎回最終番号を判断するのは時間が かかるので「番兵」を入れる方法もあ る。 はじめ k 1→ j yes J> N no yes A(j) = k no 該当なし B(j) J+1→ j おわり 情報検索システム: る。ハッシュ関数を(利用者ID,9)+1と すると下のハッシュ表ができる。 2分探索法 • N個のデータを昇順でソートしておく • 源 義経 mod(13001,9)+1=6 • 織田信長 mod(13003,9)+1=8 あれば表示、なければ、 • 豊臣秀吉 mod(13203,9)+1=1 3. 後半部の中央点を見る • 徳川家康 mod(13304,9)+1=3 4. 手順1-3を繰り返す。 1. 半分にし、中央点 ((1+N)/2)を見る 2. 1 B列 利用 者ID 氏名 13203 豊臣秀吉 13304 徳川家康 13001 源義経 13003 織田信長 2 • =mod ( a, b) はa ÷b の余り • 計算すると同じハッシュ値に 3 ハッシュ表探索法 なる場合がある(衝突)、格納 4 • A列に番号、B列に対応の氏名を格納 するとする。探しやすくするためデー タの格納位置を決めたのをハッシュ 表という。計算式をハッシュ関数(mod 関数),返り値をハッシュ値という。 できない番号をシノニム。 5 • Excelで=mod(数値,除数)で計算でき る。例えば、利用者IDに 13001,13003,13203,13304がいたとす A列 対処法:チェイン法とオープン 6 アドレス法がある。 7 これらの方法を利用して検索。 8 9
© Copyright 2024 ExpyDoc