16
識識識識識識識識識識識識識識識識 - 識識 識識識識識識識識 井井井井井 井井 井 1

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

Embed Size (px)

DESCRIPTION

識別子の命名支援を目的とした動詞 - 目的語関係の辞書構築. 井上研究室 鹿島 悠. プログラム中の識別子. いくつかの単語を組み合わせて複合語として意味を表現 expandTree 識別子の組み合わせで意味を表現 Socket クラスの bind( SocketAddress ) 適切な命名のためには,単語や識別子の適切な組み合わせを知る必要がある 単語間の関係を収録した辞書を用いて支援. 動詞 - 目的語関係. プログラムの動作を表わす重要な関係 オブジェクト指向プログラムのメソッドに着目 - PowerPoint PPT Presentation

Citation preview

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

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

井上研究室 鹿島 悠

1

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

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

プログラム中の識別子

• いくつかの単語を組み合わせて複合語として意味を表現– expandTree

• 識別子の組み合わせで意味を表現– Socket クラスの bind(SocketAddress)

• 適切な命名のためには,単語や識別子の適切な組み合わせを知る必要がある

• 単語間の関係を収録した辞書を用いて支援

2

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

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

動詞 - 目的語関係

• プログラムの動作を表わす重要な関係• オブジェクト指向プログラムのメソッド

に着目

Ex. JMenu クラスの void addMenuListener(MenuListener)

MenuListener を JMenu に 追加 (add) する 直接目的語 間接目的語 動詞

3

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

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

問題点

• プログラム中で用いられる関係は既存の自然言語の辞書にあまり含まれていない

• プログラムは多様なドメインを扱うためドメイン固有の関係も多く出現

• 既存の辞書では十分な命名支援を行うことができない

4

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

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

提案手法

• ドメインごとに分類された動詞 - 目的語の関係を収録した辞書の構築

• 入力– オブジェクト指向プログラミング言語で記述された特

定のドメインを扱う複数のソフトウェアのソースコード集合• 実装では Java で記述されたソースコードを対象とした

• 出力– 特定のドメインに出現する動詞 - 目的語関係を収録した辞書

5

動詞 直接目的語 間接目的語Add Product Stock

Close Connection

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

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

提案手法の概要

6

void add Product(Product) in Stock 動詞 1 名詞 2 名詞 2 名詞 3

抽出パターン

メソッド情報

動詞 - 直接目的語 - 間接目的語

特定のドメインに所属するソフトウェアのソースコード

事前に人手で定義void 動詞 1 名詞 2 ( 名詞 2) in 名詞 3 動詞 : 動詞 1 直接目的語 : 名詞 2 間接目的語 : 名詞 3

辞書動詞 直接目的語 間接目的語 出現したソフトウェアの

Add Product Stock 3

Build Data BooleanMatrex 1

Set Password User 4

Describe Alias Xml 1

動詞 直接目的語 間接目的語 出現したソフトウェアの数

Add Product Stock 3

Build Data BooleanMatrex 1

Set Password User 4

Describe Alias Xml 1

パターンマッチ

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

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

メソッド情報

7

戻り値 メソッド名 引数 クラス名

名詞一つ or void

複合語を分解し単語の列にして品詞解析を行う(OpenNLP を利用 )

名詞の列 名詞一つ

各品詞に同じ単語を識別する番号を付与

メソッド情報の例void

createTicketForUser User Server

品詞情報のついた単語の列 4 組

void 動詞 1 名詞 2 前置詞 3 名詞 4 名詞 4 名詞 5

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

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

抽出パターン

8

品詞情報のついた単語の列またはワイルドカード 4 組 と動詞,直接目的語,間接目的語として抽出する単語の指定

戻り値

void名詞一つ

ワイルドカード

メソッド名

品詞の列

引数

名詞の列ワイルドカード

クラス名

名詞一つワイルドカード

各品詞に同じ単語を識別する番号を付与

動詞,直接目的語,間接目的語として抽出する単語の指定

抽出パターンの例戻り値 メソッド名 引数 クラス名

void 動詞 1 名詞 2 前置詞 3 名詞 4 ワイルドカード

ワイルドカード動詞 直接目的語 間接目的語

動詞1

名詞 2 名詞 4

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

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

パターンマッチ

1. ワイルドカード以外で抽出パターンの品詞とメソッド情報の品詞が一致するか,抽出パターン中で同じ番号の単語の出現位置とメソッド情報中の同じ番号の単語の出現位置が一致するか検査

2. 一致していた場合抽出パターンの指定に従い動詞,直接目的語,間接目的語を抽出

void

Create Ticket For User User Server

void 動詞 1 名詞 2 前置詞 3 名詞 4

名詞4

名詞5

戻り値 メソッド名 引数 クラス名

void 動詞 1 名詞 2 前置詞 3 名詞 4 ワイルドカード

ワイルドカード

動詞 直接目的語 間接目的語

create Ticket User

動詞 直接目的語 間接目的語

動詞1

名詞 2 名詞 4

メソッド情報

抽出パターン

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

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

評価実験

• 実験目的– 提案手法により作成した辞書に含まれる動詞 - 目的語関係の評価

• 特定のドメインを対象とした命名支援のための辞書に含まれるのに適当かどうか

• 実験対象– 抽出パターンを 31 個定義

– 4 つのドメインの辞書を作成• 2 つ以上のソフトウェアに出現した三つ組を収録

10

ドメイン 入力したソフトウェア数

収録した三つ組の数

GUI 7 407

Database 9 672

Web Application 10 282

XML 11 547

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

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

実験方法

• 辞書に収録された三つ組に対するアンケート調査– 各三つ組が命名支援のための辞書に収録するのに適当

かどうかを評価– 各辞書から 90 個の組をランダムに抽出

• 被験者は井上研究室の学生 6 人– 全員 Java を用いた開発経験あり– 被験者が開発経験のあるドメインを対象とした辞書に

対して回答– 1 人あたり 2 つの辞書に対して回答– 1 つの辞書につき 3 人の被験者に 30 組づつ評価しても

らう11

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

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

実験結果

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

12

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

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

被験者に適当と判断された例

13

ドメイン 動詞 直接目的語 間接目的語

GUI Click Mouse MouseEvent

Database Add Constraint Table

Web Application

Destroy Session HttpSessionEvent

XML Declare Prefix NamespaceSupport

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

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

被験者に収録すべきでないと判断された例

• 判断の理由– 対象ドメインとは異なるドメインに所属して

いる

14

ドメイン 動詞 直接目的語 間接目的語

Database Release Mouse MouseEvent

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

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

考察

• 辞書作成のために入力したソフトウェアの数が 7 ~ 11 と少なかった– 対象ドメイン以外に所属する関係をフィルタ

リングしきれなかった• 入力したソフトウェアが複数のドメイン

を扱っていた– プログラムで一般的に見られる関係や他のド

メインで見られる関係を取り除くことで解決

15

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

Department of Computer Science, Graduate School of Information Science & Technology, Osaka University

まとめと今後の課題

• まとめ– プログラム中の動詞 - 目的語関係を収録した

辞書の構築手法を提案• 今後の課題

– ドメイン固有の関係を抽出する方法の開発– 辞書を利用した命名支援環境の構築

16