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 特別研究発表会
© Copyright 2024 ExpyDoc