Transcript Document

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