160 likes | 218 Views
識別子の命名支援を目的とした動詞 - 目的語関係の辞書構築. 井上研究室 鹿島 悠. プログラム中の識別子. いくつかの単語を組み合わせて複合語として意味を表現 expandTree 識別子の組み合わせで意味を表現 Socket クラスの bind( SocketAddress ) 適切な命名のためには,単語や識別子の適切な組み合わせを知る必要がある 単語間の関係を収録した辞書を用いて支援. 動詞 - 目的語関係. プログラムの動作を表わす重要な関係 オブジェクト指向プログラムのメソッドに着目
E N D
識別子の命名支援を目的とした動詞-目的語関係の辞書構築識別子の命名支援を目的とした動詞-目的語関係の辞書構築 井上研究室 鹿島 悠
プログラム中の識別子 • いくつかの単語を組み合わせて複合語として意味を表現 • expandTree • 識別子の組み合わせで意味を表現 • Socketクラスの bind(SocketAddress) • 適切な命名のためには,単語や識別子の適切な組み合わせを知る必要がある • 単語間の関係を収録した辞書を用いて支援
動詞-目的語関係 • プログラムの動作を表わす重要な関係 • オブジェクト指向プログラムのメソッドに着目 Ex. JMenuクラスの void addMenuListener(MenuListener) MenuListener をJMenu に 追加(add)する 直接目的語 間接目的語 動詞
問題点 • プログラム中で用いられる関係は既存の自然言語の辞書にあまり含まれていない • プログラムは多様なドメインを扱うためドメイン固有の関係も多く出現 • 既存の辞書では十分な命名支援を行うことができない
提案手法 • ドメインごとに分類された動詞-目的語の関係を収録した辞書の構築 • 入力 • オブジェクト指向プログラミング言語で記述された特定のドメインを扱う複数のソフトウェアのソースコード集合 • 実装ではJavaで記述されたソースコードを対象とした • 出力 • 特定のドメインに出現する動詞-目的語関係を収録した辞書
提案手法の概要 特定のドメインに所属する ソフトウェアのソースコード 抽出パターン 事前に人手で定義 void 動詞1 名詞2 (名詞2) in 名詞3 動詞 : 動詞1 直接目的語 : 名詞2 間接目的語 : 名詞3 メソッド情報 void addProduct(Product) in Stock 動詞1 名詞2 名詞2 名詞3 パターンマッチ 動詞-直接目的語-間接目的語 辞書
メソッド情報 品詞情報のついた単語の列4組 戻り値 メソッド名 引数 クラス名 名詞一つ or void 複合語を分解し 単語の列にして 品詞解析を行う (OpenNLPを利用) 名詞の列 名詞一つ 各品詞に同じ単語を識別する番号を付与 メソッド情報の例 void createTicketForUser User Server void 動詞1 名詞2 前置詞3 名詞4 名詞4 名詞5
抽出パターン 品詞情報のついた単語の列またはワイルドカード4組 と 動詞,直接目的語,間接目的語として抽出する単語の指定 戻り値 メソッド名 引数 クラス名 void 名詞一つ ワイルドカード 名詞の列 ワイルドカード 名詞一つ ワイルドカード 品詞の列 各品詞に同じ単語を識別する番号を付与 動詞,直接目的語,間接目的語として抽出する単語の指定 抽出パターンの例 戻り値 メソッド名 引数 クラス名 void 動詞1 名詞2 前置詞3 名詞4 ワイルドカード ワイルドカード
パターンマッチ • ワイルドカード以外で抽出パターンの品詞とメソッド情報の品詞が一致するか,抽出パターン中で同じ番号の単語の出現位置とメソッド情報中の同じ番号の単語の出現位置が一致するか検査 • 一致していた場合抽出パターンの指定に従い動詞,直接目的語,間接目的語を抽出 メソッド情報 void CreateTicketForUser User Server void 動詞1 名詞2 前置詞3 名詞4 名詞4 名詞5 抽出パターン 戻り値 メソッド名 引数 クラス名 void 動詞1 名詞2 前置詞3 名詞4 ワイルドカード ワイルドカード
評価実験 • 実験目的 • 提案手法により作成した辞書に含まれる動詞-目的語関係の評価 • 特定のドメインを対象とした命名支援のための辞書に含まれるのに適当かどうか • 実験対象 • 抽出パターンを31個定義 • 4つのドメインの辞書を作成 • 2つ以上のソフトウェアに出現した三つ組を収録
実験方法 • 辞書に収録された三つ組に対するアンケート調査 • 各三つ組が命名支援のための辞書に収録するのに適当かどうかを評価 • 各辞書から90個の組をランダムに抽出 • 被験者は井上研究室の学生6人 • 全員Javaを用いた開発経験あり • 被験者が開発経験のあるドメインを対象とした辞書に対して回答 • 1人あたり2つの辞書に対して回答 • 1つの辞書につき3人の被験者に30組づつ評価してもらう
実験結果 • 対象ドメインの辞書に収録するのに適当と判断された三つ組 • GUI :全体の64% • Database :全体の71% • XML :全体の52% • Web Application : 全体の56%
被験者に収録すべきでないと判断された例 • 判断の理由 • 対象ドメインとは異なるドメインに所属している
考察 • 辞書作成のために入力したソフトウェアの数が7~11と少なかった • 対象ドメイン以外に所属する関係をフィルタリングしきれなかった • 入力したソフトウェアが複数のドメインを扱っていた • プログラムで一般的に見られる関係や他のドメインで見られる関係を取り除くことで解決
まとめと今後の課題 • まとめ • プログラム中の動詞-目的語関係を収録した辞書の構築手法を提案 • 今後の課題 • ドメイン固有の関係を抽出する方法の開発 • 辞書を利用した命名支援環境の構築