1 / 32

ソースコードの特徴語を用いた Java ソフトウェア部品の 自動分類システム

ソースコードの特徴語を用いた Java ソフトウェア部品の 自動分類システム. 大阪大学 井上研究室 仁井谷 竜介. 背景. ソフトウェア部品検索システムの必要性 ソフトウェア開発の大規模化・複雑化 ソフトウェアを再利用したり,管理する機会の増加 様々なソフトウェア部品検索システム. 検索システム. クエリ検索システム クエリ(検索語・検索文)を入力として与える 適切なクエリを与えれば意図通りの文書が得られる カテゴリ検索システム あらかじめ用意されたカテゴリから文書を探す カテゴリはツリー状に構成されていることが多い クエリを入力しなくてよい

Download Presentation

ソースコードの特徴語を用いた Java ソフトウェア部品の 自動分類システム

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ソースコードの特徴語を用いたJavaソフトウェア部品の自動分類システムソースコードの特徴語を用いたJavaソフトウェア部品の自動分類システム 大阪大学 井上研究室 仁井谷 竜介

  2. 背景 • ソフトウェア部品検索システムの必要性 • ソフトウェア開発の大規模化・複雑化 • ソフトウェアを再利用したり,管理する機会の増加 様々なソフトウェア部品検索システム 名阪和合同研究会

  3. 検索システム • クエリ検索システム • クエリ(検索語・検索文)を入力として与える • 適切なクエリを与えれば意図通りの文書が得られる • カテゴリ検索システム • あらかじめ用意されたカテゴリから文書を探す • カテゴリはツリー状に構成されていることが多い • クエリを入力しなくてよい • 段階的に絞り込むことができる • コンピュータ → ソフトウェア → 表計算 本研究ではこちらに着目 名阪和合同研究会

  4. カテゴリ検索を部品に適用したときの問題点 • 部品をカテゴリに分類する必要がある • 追加・更新する部品をどのカテゴリに入れるか判断しなければいけない • 対象数が多い • カテゴリを再構成・維持する必要がある • 分類・カテゴリ維持は手作業では困難 • 自動化が不可欠 名阪和合同研究会

  5. 研究の目的 • ソフトウェア部品を対象としたカテゴリ検索用の自動分類 • カテゴリのツリー(カテゴリ間の関係)の自動作成 • Javaのクラスをソフトウェア部品とみなす • 入力としてソースコードを用いる • 低コストでカテゴリ検索の利点が得られる • クエリを入力しなくてよい • 段階的に絞り込むことができる 名阪和合同研究会

  6. input read file input file write read 部品(=Javaクラス) のソースコード write 提案手法 • ソースコードの特徴語に着目した分類 • ソースコードを入力として部品をカテゴリに分類 • カテゴリ間に関係を作成 特徴語=カテゴリ として部品を分類 カテゴリ間の関係を作成 特徴語の決定 input read file write file 名阪和合同研究会

  7. 分類の手順 (2) (1) (2.1) (2.2) (2.3) 単語の出現情報 解析 出現重み 計算 利用関係 計算 LSA 計算 重み 重み 単語 重み (3) 単語一覧(特徴語の候補) 特徴語 決定 • ソースコードを解析 • 単語重み計算 • 出現重み計算 • 利用関係による重み加算 • LSA(潜在的意味解析法) • 単語重みの高い語を特徴語とする • 1つの特徴語をそれぞれ1つのカテゴリとして部品を分類 部品と特徴語の組 (4) カテゴリ 生成 名阪和合同研究会

  8. 特徴語の候補となる単語の抽出 • 全ソースコード中に出現する単語の一覧を取得 • 語の記法統一を行う • 大文字、小文字、’_’の有無などの違いを統一する • 例: XMLParser, XML_Parser, xmlParser → XmlParser • 複合語分割を行う • 複数で構成されている語を一部または全部に分割 • 例: XmlParser→ Xml, Parser, XmlParser 名阪和合同研究会

  9. ソースコードの出現場所による重み計算 • 出現した場所を考慮した重要度を求める クラス定義 100×log(1+出現回数) 変数名 10×log(1+出現回数) ドキュメントコメント 15×log(1+出現回数) コメント 2×log(1+出現回数) ・・・ の和を求める 名阪和合同研究会

  10. 利用関係による重み加算 • 利用している部品中の語の重みを加算する • 利用関係に応じて加算時の割合を変える 継承 ×0.5 メソッド呼び出し ×0.01 インスタンス化 ×0.05 など 継承関係での例 \語 file read binary 親クラス5 3 0 子クラス1 0 2 \語 file read binary 親クラス5 3 0 子クラス3.5 1.5 2 名阪和合同研究会

  11. LSA*(潜在的意味解析法) • 重みが類似するものに近い重み与える補正 \語 input read file write print A 10 12 8 0 0 B 8 0 9 0 0 C 0 1 0 8 40 D 0 0 2 30 20 \語 input read file write print A 11 8 9 0 0 B 6 5 6 0 0 C 0 1 0 8 39 D 0 0 2 29 20 * Landauer, T. K., Foltz, P. W., & Laham, D. (1998). Introduction to Latent Semantic Analysis. Discourse Processes, 25, 259-284. 名阪和合同研究会

  12. メソッド定義3 メソッド呼出2 メソッド定義7 メソッド呼出8 メソッド定義2 メソッド呼出10 クラス定義 1 メソッド定義 2 特徴語の決定 • 部品のソースコードから単語重みを求める • 本手法では上位10語を部品の特徴語とする 全ソースコードから得られた単語(特徴語の候補) input output read write get set file ・・・ 単語の出現情報なし なし なし 対象部品ソースコード中に出現する単語の出現箇所と出現回数 部品と関連が強いと ソースコードに出現しない語も特徴語になり得る … 単語重み62.1 0 90.7 0 35.6 18.1 113.9 特徴語 ○ ○ ○ 名阪和合同研究会

  13. input read file 部品 write カテゴリの作成 • 得られた特徴語をそれぞれカテゴリとする • 部品の特徴語をもとにカテゴリに部品を分類 特徴語=カテゴリ として部品を分類 特徴語の決定 input read file write file 名阪和合同研究会

  14. カテゴリ間の関係の作成手順 親子関係 作成 集合類似関係 作成 特徴語類似関係 作成 • カテゴリを入力とする • 全てのカテゴリの組に対し3つの関係が成り立っているか調べる • 成り立っていればその関係をグラフの辺として出力とする • 複数成り立っている場合は優先順位に従って1つだけ決まる 名阪和合同研究会

  15. 親子関係 • カテゴリを部品の集合としてみたときの包含関係があるものの間に作られる関係 • Aの要素の8割⊂B → Aが子 Bが親 部品の集合 カテゴリ 名阪和合同研究会

  16. 集合類似関係 • カテゴリを部品の集合としてみたとき類似するものの間に作られる関係 • A∩Bが両方の8割を超えていたら類似 A B A B 名阪和合同研究会

  17. 特徴語類似関係 • カテゴリに対応する特徴語間の類似度(コサイン尺度)が一定値以上のカテゴリ間に作られる関係 \語 input read A 11 8 B 6 5 C 0 1 D 0 0 input read θ cosθ = 類似度 名阪和合同研究会

  18. カテゴリ間の関係の優先順位 • 集合として同一 → 集合類似関係 • 包含関係 → 親子関係 • 成り立っていれば → 集合類似関係 • 成り立っていれば → 親子関係 • 成り立っていれば → 特徴語類似関係 名阪和合同研究会

  19. Io File Input Output Read Write Print Println カテゴリ間の関係の例 親子関係 集合類似関係 特徴語類似関係 名阪和合同研究会

  20. 実装 分類部 検索部 ソースコード 単語重み計算部 カテゴリ名 クラス名 検索部 利用関係 計算部 入力 部品情報 表示部 検索 SPARS-J 読込 出現重み 計算部 LSA 計算部 検索結果 カテゴリ DB カテゴリ情報 表示部 登録 カテゴリ木 表示部 SPARS DB SPARS-DB 読込部 特徴語 決定部 カテゴリ 生成部 登録 読込 名阪和合同研究会

  21. |検索結果 ∩ 適合部品| |検索結果| 適合率 = 評価 • 実際に分類を行い,検索結果を評価する • 入力はロボットシステム部品254クラス(35システム) • 評価には適合率を用いた • 適合の判断はソースコードを見て行った 名阪和合同研究会

  22. 評価した適合率 • カテゴリと部品の間の評価 • 各部品が属するカテゴリの適合率 • 各カテゴリに属する部品の適合率 • SPARS-J (全文検索)との検索結果の比較 • SPARS-Jで検索されず本システムで検索されたものの中での適合率 名阪和合同研究会

  23. 結果一例:部品が属するカテゴリの適合率 • riu.parts.EnemyStatusが属するカテゴリの適合率 • 適合率 0.7 名阪和合同研究会

  24. 各部品が属するカテゴリの適合率 • 縦軸が各部品の適合率 • 横軸は部品(適合率でソートしている) • avg. 0.86 例:適合率 2/3 の部品 部品 高い適合率が得られた 適合するカテゴリ 適合しないカテゴリ 名阪和合同研究会

  25. 結果一例:カテゴリに属する部品の適合率 • Pointに属する部品(実際は108クラス)の適合率 • 適合率 0.93 ... 名阪和合同研究会

  26. 各カテゴリに属する部品の適合率 • 縦軸が各カテゴリの適合率 • avg. 0.85 例:適合率 4/7 のカテゴリ カテゴリ 適合率0のカテゴリも存在した 高い適合率が得られた 適合する部品 適合しない部品 名阪和合同研究会

  27. 考察 • 有効な分類が得られた • 不適当な特徴語がある • Javadocタグ(@param, @returnなど) • HTMLタグ(br, li) • 前置詞,助詞,代名詞(to, in, this) • Javaの予約語(this) 名阪和合同研究会

  28. SPARS-Jとの比較 • SPARS-Jで検索されず本システムで検索された部品の中でのカテゴリの適合率 • SPARS-Jでは得られない部品 が検索できたカテゴリは43% • avg. 0.49 本システム SPARS-J この部分での適合率 検索結果がSPARS-Jの検索 結果に含まれたカテゴリの場合 適合率が定義できない 名阪和合同研究会

  29. 考察(1/2) • 適合率の平均が低い • ソースコード中に出現しない特徴語は適合しないものが多くある • カテゴリが減ったため、適合率の低いカテゴリ(特徴を表さない特徴語)の割合が相対的に増えた • 適合率が定義できないカテゴリが多い • ソースコード中に出現する特徴語が多い 名阪和合同研究会

  30. 考察(2/2) • 特徴語が部品につき10個固定なのが問題 • 10個では足りないような複雑な部品 • その部品が属するカテゴリの適合率:高い • 特徴語のほとんどあるいは全てがソースコード中に出現するため,SPARS-Jで検索可能 • 特徴を表すが、ソースコード中に出現しない語が特徴語にならない • 10個では多すぎるような単純な部品 • その部品が属するカテゴリの適合率:低い • 無関係な特徴語が幾つも含まれる 名阪和合同研究会

  31. まとめと今後の課題 • まとめ • ソースコードの特徴語に着目した分類手法 • 提案手法による分類の有効性を確認 • 今後の課題 • 部品ごとの適切な特徴語の数の調査 • 特徴語として適さない語の排除方法の考案 • カテゴリ間の関係の評価 名阪和合同研究会

  32. 質問をどうぞ 終 名阪和合同研究会

More Related