Upload
idra
View
39
Download
2
Embed Size (px)
DESCRIPTION
Java ソフトウェア部品検索システムのための索引付け手法の提案と実装. 大阪大学基礎工学情報科学科 井上研究室 梶田 泰伸. 研究背景. Java ソフトウェア部品検索システム SPARS-J を開発 検索語に対して全文検索を行い,検索語と関連した部品(クラス、インターフェイス)のソースコードを提供 あらかじめソースコードに対し 索引付け を行い、 索引語 をデータベースに登録 →検索語と一致する索引語を検索 用語 索引語 : 文書の内容を特徴付ける単語 索引付け : 文書中から索引語を抽出する処理. - PowerPoint PPT Presentation
Citation preview
Java ソフトウェア部品検索システムのための索引付け手法の提案と実装
大阪大学基礎工学情報科学科井上研究室
梶田 泰伸
2004/2/26 特別研究発表会2
研究背景Java ソフトウェア部品検索システムSPARS-J を開発
検索語に対して全文検索を行い,検索語と関連した部品(クラス、インターフェイス)のソースコードを提供あらかじめソースコードに対し索引付けを行い、索引語をデータベースに登録
→検索語と一致する索引語を検索用語
索引語 : 文書の内容を特徴付ける単語索引付け : 文書中から索引語を抽出する処理
2004/2/26 特別研究発表会3
現状の問題点全ての語を抽出しそのまま索引語としている static boolean safetyCheck(int row){
for (int j=1; j<column; j++) if (board[j] == row)
return false ; } return true ;}
複合語“ safetyCheck” が存在
検索語“ safety” や“ check” にマッチしない
この部品は検索されない
不要語が存在データベース容量の無駄
検索漏れstatic boolean
safetyCheck (
int row
) {
for ・・・
2004/2/26 特別研究発表会4
研究の目的Java ソースコードの特性を生かした索引付け手法を提案する
検索漏れを減らすため適合部品:
データベースの容量の増加を抑えるため
索引語の拡張
不要語の除去
• 検索語が出現する部品• 検索語が、語形変化して出現する部品
2004/2/26 特別研究発表会5
提案手法の概要ソースコードはプログラム部とコメント部に分かれる
プログラム部:文法はプログラム言語に依存 → Java
コメント部:文法は自然言語に依存 → 英語
2.プログラム部
1.プログラム部、コメント部
3.コメント部索引語の拡張
不要語の除去
2004/2/26 特別研究発表会6
不要語の除去(プログラム部、コメント部)
不要語とはその語が他の多くの部品に存在し、出現した部品を絞り込むのに役に立たない語プログラム部 コメント部
記号 (例外: “ _” 、“ $” )数字のみで構成される語
1文字の語(1文字の語+数字)予約語
名詞(代名詞を除く)、動詞( be 動詞を除く)、形容詞、副詞 以外の語
2004/2/26 特別研究発表会7
This is a sample caseclass roomNumber static int column 10 a0 a1 static char string1 string2 static boolean saftyCheck int row for int j 1 j column j if board j row
return false return true This method checks 1 argument
索引付けの例(不要後の除去:プログラム部、コメント部)
/* This is a sample case. */class roomNumber { static int column = 10, a0, a1; static char string1, string2; static boolean saftyCheck ( int row ){ for ( int j = 1; j < column; j++){ if ( board[ j ] == row )
return false; } return true; } // This method checks 1 argument.}
記号数字のみの語
予約語1文字の語
不要な品詞の語
以下の不要語の除去
記号
/* This is a sample case. */class roomNumber { static int column = 10, a0, a1; static char string1, string2; static boolean saftyCheck ( int row ){ for ( int j = 1; j < column; j++){ if ( board[ j ] == row )
return false; } return true; } // This method checks 1 argument.}
This is a sample caseclass roomNumber static int column 10 a0 a1 static char string1 string2 static boolean saftyCheck int row for int j 1 j column j if board j row
return false return true This method checks 1 argument
数字のみの語
This is a sample caseclass roomNumber static int column a0 a1 static char string1 string2 static boolean saftyCheck int row for int j j column j if board j row
return false return true This method checks argument
1文字の語
This is a sample caseclass roomNumber static int column a0 a1 static char string1 string2 static boolean saftyCheck int row for int j j column j if board j row
return false return true This method checks argument
This is sample caseclass roomNumber static int column static char string1 string2 static boolean saftyCheck int row for int column if board row
return false return true This method checks argument
予約語
This is sample caseclass roomNumber static int column static char string1 string2 static boolean saftyCheck int row for int column if board row
return false return true This method checks argument
This is sample case roomNumber column string1 string2 saftyCheck row column board row
This method checks argument
不要な品詞の語
This is sample case roomNumber column string1 string2 saftyCheck row column board row
This method checks argument
sample case roomNumber column string1 string2 saftyCheck row column board row
method checks argument
C :
C :
2004/2/26 特別研究発表会8
1. 複合語の切り分けJava では、複合している単語の始まりは大文字で書き、残りは小文字で書く慣例
1. 小文字から大文字になる箇所で切り分ける 2. 大文字から小文字になる箇所の1つ前の文字で切り分け
る“$” 、” _” でも切り分け
2. 省略語を本来の形にする省略語リストを作成(現在70語程度)
3. 語の最後が数字なら数字を除去する
索引語の拡張(プログラム部)
addIDKey add IDKeyadd ID Key
addID IDKey
新たに索引語とする
temporarytmp
errorerr
readInputFile
getProcessID
2004/2/26 特別研究発表会9
sample case roomNumber room Number column string1 string2 safety Check safetyCheck row column board row
method checks argument
sample case roomNumber column string1 string2 safetyCheck row column board row
method checks argument
sample case roomNumber room Number column string1 string2 safety Check safetyCheck row column board row
method checks argument
sample case roomNumber column string1 string2 safetyCheck row column board row
method checks argument
sample case roomNumber room Number column string string1 string2 string safety Check safetyCheck row column board row
method checks argument
sample case roomNumber room Number column string string1 string2 string safety Check safetyCheck row column board row
method checks argument
sample case roomNumber room Number column string1 string2 safety Check safetyCheck row column board row
method checks argument
索引付けの例(索引語の拡張:プログラム部)
複合語の切り分け
省略語の復元
末尾の数字を除去
プログラム部の索引語の拡張
複合語の切り分け
末尾の数字を除去
省略語の復元
C :
C :
2004/2/26 特別研究発表会10
索引語の拡張(コメント部)1. 複合語の切り分け2. 原形でない語は、原形も索引語とする
形態素解析ツール TreeTagger を利用入力された単語を解析して、その単語の品詞情報と原形を出力例:“ She saw men” を入力すると
She PP she
saw VVD see
men NNS man 品詞情報は、不要語の除去に利用品詞情報原形
2004/2/26 特別研究発表会11
データベース
索引付けの例(索引語の拡張:コメント部)
複合語の切り分け
コメント部の索引語の拡張
sample case roomNumber room Number column string string1 string2 string safety Check safetyCheck row column board row
method checks argument
原形でない語を原形に戻す原形でない語を原形に戻す
sample case roomNumber room Number column string string1 string2 string safety Check safetyCheck row column board row
method checks argument
sample case roomNumber room Number column string string1 string2 string safety Check safetyCheck row column board row
check method checks argument
sample case roomNumber room Number column string string1 string2 string safety Check safetyCheck row column board row
check method checks argument
索引語として登録
C :
C :
2004/2/26 特別研究発表会12
評価1. 検索漏れをどの程度減らすことができるか
検索漏れの少なさを示す尺度
5種類の検索語で検索手法適用前と手法適用後で再現率を比較
2. データベース容量の増加はどの程度抑えられるか
5種類のソースコード群に対してデータベースを作成不要語除去前と不要語除去後でサイズ( KB )を比較
• 再現率= 検索された部品中の適合部品の数全部品の中の適合部品の数
2004/2/26 特別研究発表会13
再現率の変化
全ての検索語おいて再現率が上昇
Netscape DevEdge で公開されているソースコード261ファイル(部品数281)を対象
0.77
1.00
0.75
1.00 1.00
0.31
0.23
0.67
0.56
0.29
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
提案手法適用前提案手法適用後
再現
率
K1 K2 K3 K4 K5検索語
複合語の切り分けが完全でなかった
“scrollbar” が “ bar” で検索されない
2004/2/26 特別研究発表会14
データベース容量の変化DB の種類
部品数
手法導入前(KB)
索引語拡張のみ(KB)
索引語拡張 +不要語除去(KB)
DB1 281 8176 12752 (156.0%) 11344 (138.7%)
DB2 511 9440 14608 (154.7%) 12224 (129.5%)
DB3 767 17664 25760 (145.8%) 22544 (127.6%)
DB4 1120 17456 25584 (146.6%) 21728 (124.5%)
DB5 2844 84384 141968 (168.2%) 124480 (147.5%)
-25.3%
-18.2%
-22.1%
-20.7%
-17.2%
部品数に関わらず、データベース容量の増加が約 20%抑えられた
平均 -20.7%
2004/2/26 特別研究発表会15
まとめと今後の課題Java ソフトウェア部品検索システムのための索引付けを提案した
索引語を拡張することにより、検索漏れを減らすことができた不要語を除去することにより、索引語拡張の際のデータベース容量の増加が約 20%抑えられた今後の課題
複合語のより完全な切り分けコメント部が日本語である場合の提案手法の適用他のプログラム言語への提案手法の適用
2004/2/26 特別研究発表会16
発表終了
2004/2/26 特別研究発表会17
補足:5種類の検索キー
K1 set bar
バーの設定を行なっている部品が目的
K2 initialize window
ウィンドウを初期状態に戻す処理が記述されている部品が目的
K3 font
sizeフォントのサイズ関連のことが記述されている部品が目的
K4 frame
update新しいフレームにアップデートする際に行なう処理が記述されている部品が目的
K5 mouse
eventマウスの操作で起こるイベントが記述されている部品が目的
2004/2/26 特別研究発表会18
補足:各手法の検索結果の比較
手法なし
複合語切り分
け省略
語末尾の数字除去
複合語の切り分け
原形に戻す 全手法 適合
文書
set bar 4 10 4 4 5 5 10 13initialize
window
3 3 7 3 3 3 13 13
font size 8 9 8 8 9 8 9 12frame
update
5 8 5 6 6 5 9 9
mouse event 4 14 4 4 4 4 14 14
2004/2/26 特別研究発表会19
補足:各手法のデータベース容量の変化
2004/2/26 特別研究発表会20
補足:各手法の索引語総数の変化
2004/2/26 特別研究発表会21
補足:各手法の処理時間の変化
2004/2/26 特別研究発表会22
補足:処理の流れ
JAVAJAVA
ソ ー スソ ー ス
コ ー ドコ ー ド
・字句解析
・コメント部の語抽出
・形態素解析品詞原形参照表
・不要語除去
索引品詞リスト
・不要な品詞 の語を除去
Word DB
・拡張した索引語を登録
・参照
・不要語除去
コメント部の語
・索引語として登録
・拡張した索引語を登録
コメント部
プログラム部
抽出した語
1
2
3
4
4
5
5