識別子の命名支援を目的とした動詞-目的語関係の辞書構築

Slides:



Advertisements
Similar presentations
API 呼び出し列の差分を利用した Android アプリケーション比較ツールの 試作 井上研究室 神田 哲也.
Advertisements

大規模コーパスから獲得した 名詞の出現パターンを用いた 事態名詞の項構造解析
シーケンス図の生成のための実行履歴圧縮手法
最大エントロピーモデルに基づく形態素解析と辞書による影響
XHTML構文検証手法における スクリプト要素の静的解析アルゴリズム
JavaScript プログラミング入門 2006/11/10 神津.
シーケンシャルパターンマイニングに基づくオブジェクト指向プログラムのための 欠陥検出手法
メソッド周辺の識別子と メソッド本体のAPI利用実績に基づいたAPI集合推薦手法
データマイニングのための柔軟なデータ取得、操作を支援するAPIの設計
Myoungkyu Song and Eli Tilevich 発表者: 石尾 隆(大阪大学)
実験 関数・記号付き文型パターンを用いた機械翻訳の試作と評価 石上真理子 水田理夫 徳久雅人 村上仁一 池原悟 (鳥取大) ◎評価方法1
情報伝播によるオブジェクト指向プログラム理解支援の提案
テキストマイニング, データマイニングと 社会活動のトレース
Object Group ANalizer Graduate School of Information Science and Technology, Osaka University OGAN visualizes representative interactions between a pair.
リファクタリングのための 変更波及解析を利用した テスト支援ツールの提案
メソッド名とその周辺の識別子の 相関ルールに基づくメソッド名変更支援手法
クラス動作シナリオ可視化手法の プログラム理解作業に対する有効性評価
動詞の共起パターンを用いた 動作性名詞の述語項構造解析
Javaソフトウェア部品検索システムのための索引付け手法の提案と実装
プログラム実行履歴を用いたトランザクションファンクション抽出手法
プログラム実行時情報を用いたトランザクションファンクション抽出手法
相関ルールマイニングを用いた メソッドの命名方法の分析
ソースコード中に出現する 動詞-目的語関係を利用した メソッド名の命名支援手法
類似するコーディングパターンの 利用状況調査ツールの提案
コーディングパターンと キーワードを用いて生成したコードスニペットの推薦
Javaクラスの利用関係を用いた ソフトウェア部品のカテゴリ階層構築法
コードクローンに含まれるメソッド呼び出しの 変更度合の分析
コードクローンに含まれるメソッド呼び出しの 変更度合の調査
コードクローンの分類に基づいた メソッド引き上げ手順の提案とその有効性評価
ポインタ解析におけるライブラリの スタブコードへの置換の効果
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
オブジェクト指向プログラムにおける エイリアス解析について
インラインスクリプトに対するデータフロー 解析を用いた XHTML 文書の構文検証
利用関係に基づく類似度を用いたJavaコンポーネント分類ツールの作成
Javaプログラムの変更を支援する 影響波及解析システム
社会シミュレーションのための モデル作成環境
コードクローン検出ツールを用いた ソースコード分析システムの試作と プログラミング演習への適用
リファクタリング支援のための コードクローンに含まれる識別子の対応関係分析
プログラム動作理解支援を目的とした オブジェクトの振舞いの同値分割手法
動的データ依存関係解析を用いた Javaプログラムスライス手法
コードクローンの動作を比較するためのコードクローン周辺コードの解析
コードクローン検出に基づくデザイン パターン適用支援手法の提案と実現
Webコミュニティ概念を用いた Webマイニングについての研究 A study on Web Mining Based on Web Communities 清水 洋志.
プログラムで多用される 動詞と目的語の関係を利用した メソッド名提案ツール
テキストマイニング, データマイニングと 社会活動のトレース
○ 後藤 祥1,吉田 則裕2 ,井岡 正和1 ,井上 克郎1 1大阪大学 2奈良先端科学技術大学院大学
コードクローン分類の詳細化に基づく 集約パターンの提案と評価
既存ソフトウェア中の 頻出コード片を用いた コード補完手法の提案
コーディングパターンの あいまい検索の提案と実装
JavaScriptを含んだHTML文書に対する データフロー解析を用いた構文検証手法の提案
オブジェクトの協調動作を用いた オブジェクト指向プログラム実行履歴分割手法
メソッドに用いられる 動詞-目的語関係を収録した 辞書構築手法の提案
設計情報の再利用を目的とした UML図の自動推薦ツール
計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木)
プログラムの差分記述を 容易に行うための レイヤー機構付きIDEの提案
オープンソースソフトウェアに対する コーディングパターン分析の適用
メソッドの同時更新履歴を用いたクラスの機能別分類法
ソースコードの編集状況に応じた ソフトウェア部品の自動推薦システム
UMLモデルを対象とした リファクタリング候補検出手法の提案と実現
統合開発環境のための プログラミング言語拡張 フレームワーク
欠陥検出を目的とした類似コード検索法 吉田則裕,石尾隆,松下誠,井上克郎 大阪大学 大学院情報科学研究科
ソフトウェア理解支援を目的とした 辞書の作成法
エイリアス関係を考慮した Javaプログラム用静的スライシングツール
複雑度メトリクスを用いた JAVAプログラム品質特性の実験的評価
プログラムの一時停止時に 将来の実行情報を提供するデバッガ
コードクローン解析に基づく デザインパターン適用候補の検出手法
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
識別子の読解を目的とした名詞辞書の作成方法の一試案
プログラム理解のための 付加注釈 DocumentTag の提案
Presentation transcript:

識別子の命名支援を目的とした動詞-目的語関係の辞書構築 井上研究室 鹿島 悠

プログラム中の識別子 いくつかの単語を組み合わせて複合語として意味を表現 識別子の組み合わせで意味を表現 expandTree 識別子の組み合わせで意味を表現 Socketクラスの bind(SocketAddress) 適切な命名のためには,単語や識別子の適切な組み合わせを知る必要がある 単語間の関係を収録した辞書を用いて支援 Expand tree --- GUI で TreeView を広げる Bind socket --- ネットワークで Socket にアドレスを結び付ける

動詞-目的語関係 プログラムの動作を表わす重要な関係 オブジェクト指向プログラムのメソッドに着目 Ex. JMenuクラスの void addMenuListener(MenuListener) MenuListener を JMenu に 追加(add)する 直接目的語 間接目的語 動詞 単語間の関係は様々なものがありますが... Jmenu に MenuLister を追加する

問題点 プログラム中で用いられる関係は既存の自然言語の辞書にあまり含まれていない プログラムは多様なドメインを扱うためドメイン固有の関係も多く出現 既存の辞書では十分な命名支援を行うことができない 既存の辞書では情報を網羅しきれない

提案手法 ドメインごとに分類された動詞-目的語の関係を収録した辞書の構築 入力 出力 オブジェクト指向プログラミング言語で記述された特定のドメインを扱う複数のソフトウェアのソースコード集合 実装ではJavaで記述されたソースコードを対象とした 出力 特定のドメインに出現する動詞-目的語関係を収録した辞書 動詞 直接目的語 間接目的語 Add Product Stock Close Connection

提案手法の概要 Add Product Stock 3 Build Data 1 Set Password User 4 Describe 特定のドメインに所属する ソフトウェアのソースコード 抽出パターン 事前に人手で定義 void 動詞1 名詞2 (名詞2) in 名詞3 動詞 : 動詞1 直接目的語 : 名詞2 間接目的語 : 名詞3 メソッド情報 void add Product(Product) in Stock 動詞1 名詞2 名詞2 名詞3 パターンマッチ 動詞-直接目的語-間接目的語 辞書 動詞 直接目的語 間接目的語 出現したソフトウェアの数 Add Product Stock 3 Build Data BooleanMatrex 1 Set Password User 4 Describe Alias Xml 動詞 直接目的語 間接目的語 出現したソフトウェアの数 Add Product Stock 3 Build Data BooleanMatrex 1 Set Password User 4 Describe Alias Xml 一定数以上の組を辞書に収録 [スライド変える前に] メソッド情報, 抽出パターン, パターンマッチ

メソッド情報 品詞情報のついた単語の列4組 戻り値 メソッド名 引数 クラス名 名詞一つ or void 複合語を分解し 単語の列にして 品詞解析を行う (OpenNLPを利用) 名詞の列 名詞一つ 各品詞に同じ単語を識別する番号を付与 メソッド情報の例 メソッド情報は品詞情報の付いた単語の列4組で,メソッド中の識別子に品詞情報を付加したものです. void createTicketForUser User Server void 動詞1 名詞2 前置詞3 名詞4 名詞4 名詞5

抽出パターン 品詞情報のついた単語の列またはワイルドカード4組 と 動詞,直接目的語,間接目的語として抽出する単語の指定 戻り値 メソッド名 引数 クラス名 void 名詞一つ ワイルドカード 名詞の列 ワイルドカード 名詞一つ ワイルドカード 品詞の列 各品詞に同じ単語を識別する番号を付与 動詞,直接目的語,間接目的語として抽出する単語の指定 抽出パターンの例 メソッドの各要素に対応して,品詞情報を付けた単語の列またはワイルドカード4組と動詞,直接目的語,間接目的語として抽出する単語の指定で構成されます.戻り値,….メソッド,...引数,...クラス名,... Voidとワイルドカード以外に同じ番号を付与 戻り値 メソッド名 引数 クラス名 void 動詞1 名詞2 前置詞3 名詞4 ワイルドカード ワイルドカード 動詞 直接目的語 間接目的語 動詞1 名詞2 名詞4

パターンマッチ ワイルドカード以外で抽出パターンの品詞とメソッド情報の品詞が一致するか,抽出パターン中で同じ番号の単語の出現位置とメソッド情報中の同じ番号の単語の出現位置が一致するか検査 一致していた場合抽出パターンの指定に従い動詞,直接目的語,間接目的語を抽出 メソッド情報 動詞 直接目的語 間接目的語 create Ticket User void Create Ticket For User User Server void 動詞1 名詞2 前置詞3 名詞4 名詞4 名詞5 抽出パターン 戻り値 メソッド名 引数 クラス名 抽出パターン中のワイルドカード以外の部分で,.... この抽出パターンのワイルドカード以外の品詞情報と,これに対応するメソッド情報の品詞情報が一致しますので,指定に従い,動詞1,名詞2,名詞4の単語を抽出し,三つ組を抽出します. void 動詞1 名詞2 前置詞3 名詞4 ワイルドカード ワイルドカード 動詞 直接目的語 間接目的語 動詞1 名詞2 名詞4

評価実験 実験目的 実験対象 抽出パターンを31個定義 4つのドメインの辞書を作成 提案手法により作成した辞書に含まれる動詞-目的語関係の評価 特定のドメインを対象とした命名支援のための辞書に含まれるのに適当かどうか 実験対象 抽出パターンを31個定義 4つのドメインの辞書を作成 2つ以上のソフトウェアに出現した三つ組を収録 ドメイン 入力したソフトウェア数 収録した三つ組の数 GUI 7 407 Database 9 672 Web Application 10 282 XML 11 547

実験方法 被験者は井上研究室の学生6人 辞書に収録された三つ組に対するアンケート調査 各三つ組が命名支援のための辞書に収録するのに適当かどうかを評価 各辞書から90個の組をランダムに抽出 被験者は井上研究室の学生6人 全員Javaを用いた開発経験あり 被験者が開発経験のあるドメインを対象とした辞書に対して回答 1人あたり2つの辞書に対して回答 1つの辞書につき3人の被験者に30組づつ評価してもらう

実験結果 対象ドメインの辞書に収録するのに適当と判断された三つ組 GUI :全体の64% Database :全体の71% XML :全体の52% Web Application : 全体の56%

被験者に適当と判断された例 ドメイン 動詞 直接目的語 間接目的語 GUI Click Mouse MouseEvent Database Add Constraint Table Web Application Destroy Session HttpSessionEvent XML Declare Prefix NamespaceSupport

被験者に収録すべきでないと判断された例 判断の理由 対象ドメインとは異なるドメインに所属している ドメイン 動詞 直接目的語 間接目的語 Database Release Mouse MouseEvent 判断の理由 対象ドメインとは異なるドメインに所属している

考察 辞書作成のために入力したソフトウェアの数が7~11と少なかった 入力したソフトウェアが複数のドメインを扱っていた 対象ドメイン以外に所属する関係をフィルタリングしきれなかった 入力したソフトウェアが複数のドメインを扱っていた プログラムで一般的に見られる関係や他のドメインで見られる関係を取り除くことで解決

まとめと今後の課題 まとめ 今後の課題 プログラム中の動詞-目的語関係を収録した辞書の構築手法を提案 ドメイン固有の関係を抽出する方法の開発 辞書を利用した命名支援環境の構築