本日のPPTファイル - 辻慶太のホームページ

Download Report

Transcript 本日のPPTファイル - 辻慶太のホームページ

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