知識情報演習Ⅲ(後半第5回) 辻 慶太 http://slis.sakura.ne.jp/cje3 1 本資料の内容 • • • • オンライン検索プログラム レポート課題 成績評価 授業評価 2 索引付けの手順概要(復習) (1) 索引語の抽出 extract.prl 文字バイグラム,単語,フレーズなど (2) 不要語の削除 stopword.prl (3) 接辞処理 stemming.prl (4) 索引語の重み付け tf.prl idf.prl 検索手法(検索モデル)によっては不要 例えば,論理式によるブーリアンモデルでは不要 (5) 索引ファイルの編成 3 索引付けのプログラム(復習) 文書群ファイル documents.txt 入力 extract.prl stopword.prl stemming.prl tf.prl 索引ファイル index.txt 出力 idf.prl 出力 入力 出力 入力 出力 入力 出力 入力 4 オンライン処理の図解(復習) 犬 ロボット 検索 ①索引語の抽出 犬 文書集合 D1~D10 索引付け (オフライン) → D2(0.1) D3(0.8) D5(1.2) D9(0.1) ロボット → D1(1.2) D3(0.7) D5(0.1) ②文書と重みの探索 ③スコアの計算 D1 = 1.2 D2 = 0.1 D3 = 0.8 + 0.7 = 1.5 D5 = 1.2 + 0.1 = 1.3 D9 = 0.1 1. D3 2. D5 3. D1 ④文書の整列 4. D2 5. D9 索引 転置ファイル 個別の文書を 読む場合 5 オンライン検索の作成方針 • 索引付けと同様に以下の前処理が必要 (1) 索引語の抽出 (2) 不要語の削除 (3) 接辞処理 索引付けのプログラム をそのまま使う • その後で文書ごとにスコアを計算し,スコアの 降順に整列して出力する 今回作成するプログラム retrieval.prl 6 検索質問ファイルの形式 • 文書群ファイル(documents.txt)と形式を揃えること で,索引付けのプログラムを流用できるようにする • ただし,1つのファイルには検索質問を1件だけ入 力する(その方が処理が簡単になる) • 演習のページにある query.txt を使うとよい <QUERY> <NUM>Q001</NUM> <TEXT> a web searching system </TEXT> </QUERY> <QUERY> 1つの検索質問 <NUM> 検索質問番号 <TEXT> 検索質問の本文 索引付けのプログラムで,<NUM> 中の番号が D で始まることを前提 にしている場合は注意 7 連結方法1: 中間ファイルを作る 入力 検索質問 ファイル query.txt 中間ファイル 出力 extract.prl chuukan1 stopword.prl chuukan2 stemming.prl chuukan3 入力 索引ファイル 標準入力 retrieval.prl index.txt コマンドライン引数 (STDIN) 標準入力と衝突させないため 画面へ出力 % perl extract.prl query.txt > chuukan1 % perl stopword.prl chuukan1 > chuukan2 % perl stemming.prl chuukan2 > chuukan3 % perl retrieval.prl index.txt < chuukan3 コマンドライン引数 標準入力(STDIN) 8 連結方法2: パイプライン処理を行う 検索質問 ファイル query.txt 入力 extract.prl 出力 入力 stopword.prl 出力 入力 stemming.prl 索引ファイル index.txt 入力 出力 入力 retrieval.prl コマンドライン引数 画面へ出力 標準入力 (STDIN) % perl extract.prl query.txt | perl stopword.prl | perl stemming.prl | perl retrieval.prl index.txt 標準入力(STDIN) コマンドライン引数 9 retrieval.prl の仕様 • stemming.prl の出力と索引ファイル(index) を入力し,検索された文書をスコアの降順に 整列して出力する • ヒット件数(検索された文書数)を先頭の行に 出力する Q001 web Q001 search Q001 system stemming.prl の出力 ヒット件数 hit = 6 D004 5.08 D008 3.39 文書番号とスコア D003 1.69 … retrieval.prl の出力 10 エラー処理 • ユーザがプログラムを正しく使った場合に正しく動作 することは当然 • ユーザがプログラムの使い方を誤った場合への対 処が重要 → エラー処理 • 今までに出てきた例 – 開こうとしたファイルが開けなかった open(IN, $file) || die ”$file: $!”; ファイルのオープン または エラーメッセージを出して終了 ファイルのオープンに失敗したら エラーメッセージを出して終了 11 retrieval.prl におけるエラー処理 • 索引ファイルを開く前に,ファイルがコマンドラインで 指定されているかどうかを確認する • 指定されていない場合は,エラーメッセージを出して 強制終了する コマンドライン引数の数を確認 $0: 実行したプログラムの 名称が代入される この場合は retrieval.prl if (@ARGV != 1) { print STDERR ”Usage: $0 <index file>\n”; exit; エラーメッセージを標準エラーに出力する } exit 強制終了 (標準出力に出すと見落とす場合がある) このように表示される → Usage retrieval.prl <index file> 12 レポート課題 • 索引付けとオンライン検索のプログラムを作 成する – extract.prl, stopword.prl, stemming.prl, tf.prl, idf.prl, retrieval.prl • プログラムに行番号を付けて,それぞれの行 について別紙で説明する – 説明は,プログラム1行につき1文程度でよい 13 プログラムと説明の例(extract.prl) 1 while ($line = <>) { 2 chomp($line); 3 if ($line =~ /<NUM>(.+)<\/NUM>/) { 4 $docid = $1; 5 } 6 …… プログラムと説明を別のページに印刷する 1 2 3 4 5 ファイルの内容がなくなるまで1行ずつ読み込む ファイル行の末尾にある改行を削除する ファイル行に <NUM> と </NUM> があれば <NUM> と </NUM> の間にある文字列を$docidに代入する 3行目の if 文による条件分岐の終了 14 レポートの提出方法 • 形式 – 表紙: 科目名,受講クラス(火・水),学籍番号,氏名 – 本文: 6つのプログラムとそれらの説明 – 注意: • • • • • 両面印刷し,左上をステープラで止める プログラムと説明が見開きのページになるように どのプログラムか分かるように 可読性が良くなるように努めること 同一・酷似レポートはどちらも0点とする • 提出場所 – 学務係のレポートボックス – 受講クラスごとにボックスがあるので間違えないように (間違えた場合は採点対象から漏れる場合があります) • 締切(厳守) – 3月6日(火) 17:00 15 成績評価 • 後半5回分の配点(50点) – 出席(30%) • 3点×5回=15点 ここでの数値は目安であり, 実際の評価では多少変動 することがある – レポート(70%) • 「プログラム」と「説明」の組で各5点 5点×6 = 30点 • レポートの体裁や可読性など 5点 • 前半5回分と総合して100点満点で計算し,A~D を判定する • 完成したプログラムの数が多いほど評価は高い • 全てのプログラムが完成しなくても及第点に及ぶ 可能性はあるので,あきらめないように 16 授業評価 • 科目番号 GE11222 • 良いことは良いと書こう – 授業方針を変更する場合に,良い部分を削って しまうことがないように • なるべく理由も書こう – 否定的なコメントを書く場合 • 理由がある → 意見 • 理由がない → 誹謗中傷 17
© Copyright 2024 ExpyDoc