1,a) 1,b) N-gram 75.9% 1. Firefox Linux (Open Source Software: OSS) (Mailing List: ML) (Bug Tracking System: BTS) (Version Control System: VCS)?? 1 NNCT, 22 Yatatyou,Yamatokoriyamashi, Nara 639 1080, Japan a) h-kawai@info.nara-k.ac.jp b) uwano@info.nara-k.ac.jp OSS 300? BTS VCS? 1 BTS 1 ML N-gram 2. 1)BTS 2)ML c 2012 Information Processing Society of Japan 1
3) VCS OSS Google code Source Forge BTS ML VCS BTS ML 1 3 VCSBTSML BTS ML VCS BTS BTS ML VCS BTS ML VCS? BTS VCSML Wiki 1 ( 1 ) VCS BTS ML Ver.1 Ver.2 Ver.3 Bug.1 Bug.2 Msg.1 Msg.2 Bug.3 Msg.3 Ver.4 1 ( 2 ) ( 3 ) 3. N-gram 3.1 N-gram MeCab *1 3.2 N-gram N-gram N N 3 N-gram 6 3 N-gram N 3.3 N-gram N-gram N-gram *1 http://code.google.com/p/mecab/ c 2012 Information Processing Society of Japan 2
情報処理学会研究報告 2ᙧ =1䝣䝺䞊䝈 ( 3 ) ソースコードのバージョン管理システムから すべて のソースコードのコミットコメントに対して フレー 形態素 形 がメ モリリーク を起こして いる 態 素 解 析 が メモリ リーク を 起こし て いる ズが含まれているか検索する N-gram バグ報告 ( 4 ) コミットコメントがフレーズを含んでいた場合 含ま れていた回数をカウントする 3ᙧ =1䝣䝺䞊䝈 ( 5 ) より多くのフレーズを含んでいたコミットコメントが 上位になるように順位を付ける ( 6 ) 上位数件のコミットコメントに対応したソースコード を 修正候補として開発者に提示する 図 2 形態素 N-gram の処理 4. 予備実験 実験を行う前に バグ報告文に存在するフレーズがソー 手法である 形態素解析は文章から形態素を切り出すた スコードのコミットコメントにどの程度存在するのか予備 め 意味を得ることができるが 形態素同士の前後関係を 実験で調査する 予備実験では すでに修正が完了したバ 得ることはできない また N-gram は文章から連続した グ報告のコメントに形態素 N-gram を適用し 抽出したフ 文字列を切り出すため 文字列の前後関係は得られるが レーズが修正されたソースコードのコミットコメントに存 文字列の意味を得ることはできない そこで この2つを 在するか調査する 提案手法の推薦精度はフレーズを抽出 組み合わせることにより 文字単位ではなく形態素を単位 するときの形態素 N-gram の N の値によって異なると考え として 文章に N-gram を適用することで複数単語からな られるため 形態素 N-gram の N の値を 1 から 10 まで変 るフレーズや文を抽出できる バグ報告に対して形態素 化させて実験を行う N-gram を行う例を図 2 に示す 予備実験の結果を図 4 に示す 図より 形態素 N-gram 図中の のフラグを更新する という文章の場合 の N の値を大きくするごとに抽出したフレーズを含むコ 形態素解析を行うことにより の フラグ ミットコメントは少なくなっている そのため N を 10 を 更新する という 5 つの形態素に分割され N-gram 以上にして実験を行うメリットは無いと考えられる により 2 形態素を 1 フレーズとして 4 つのフレーズを抽出 N の値が 5 以下のときに 抽出したフレーズを含むコ している N-gram のみの場合 N が 3 の N-gram によっ ミットコメントは 修正されたソースコードのコミットコ て フラグ を抽出できるが ラグを といった 元の文 メントの総数の半分以上存在している これより 修正が 章とは意味の異なる文字列が取り出され 異なる文章を推 完了したバグ報告文から抽出したフレーズをもとに 実際 薦してしまう可能性がある 形態素 N-gram では 最小単 に修正されたソースコードを探しだすことができると考え 位を形態素として N-gram でフレーズを求めることで 元 られる また N の値が小さいほど多くのコミットコメン の文章と異なる意味を持つ文字列や単語の抽出を抑制でき トに抽出したフレーズが存在している これは N の値が るため 推薦精度が高くなると考えられる 小さいということはフレーズが短いということでもあり 提案手法は形態素 N-gram を用いることでバグ報告コメ フレーズをもとにソースコードを探しだす際に検索のノイ ントからフレーズを切り出し コミットコメントに含まれ ズとなる可能性がある 本実験では ノイズとなる情報を るフレーズと比較することで バグ報告とソースコードを 除去しつつ 高い精度でフレーズを元にソースコードを探 リンク付ける し出せる形態素 N-gram の N の値を求める実験を行う 3.4 手順 提案手法の処理手順を図 3 に示す 手順1では実際に開 5. 実験 提案手法を用いた推薦の精度を評価するために実験を行 発者がバグ報告を読み ソースコードを探すことを想定し う 実験ではオープンソースソフトウェアの開発プロジェ 開発者が閲覧しているバグ報告としてバグ報告を 1 件取り クトに報告されたバグ報告と ソースコードのコミットコ 出している メントに対して提案手法を適用し 精度を求める 予備実 ( 1 ) バグ管理システムからバグ報告を 1 件取り出す 験と同様に N を 1 から 10 まで 1 ずつ増やし それぞれの ( 2 ) 取り出したバグ報告の文章を形態素 N-gram を適用し 場合の推薦精度を評価する また 提案手法の有用性を確 フレーズを抽出する 認するために TF-IDF を用いた推薦手法と比較する このとき 形態素 N-gram は文章を読点や など文の終わりや文の先頭を示す記号で区切り 文を またいだフレーズの抽出は行わない c 2012 Information Processing Society of Japan 5.1 推薦対象 実験に用いるデータは 日本語で記述可能なプログラミ 3
3 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 1 2 3 4 5 6 7 8 9 10 4 2008 10 2010 9 BTS VCS BTS VCS 153 1842 158 5.2 1 5 10 1 5 10 1 (1) 0 1 = n (1) 5.3 N-gram N 1 10 N-gram N N 5.4 TF-IDF TF-IDF (term)?tf-idf (2) (4) tf c,n = d c,n C i=1 d i,n (2) D idf c = log e {d : t c d} (3) T F IDF c,n = tf c,n idf c (4) tf c,n c n d c,n n n c idf c c DF(Document Frequency) D c 2012 Information Processing Society of Japan 4
{d : t c d} c idf c (4) TF-IDF TF-IDF?? TF-IDF TF-IDF 5 ( 1 ) ( 2 ) ( 3 ) TF-IDF ( 4 ) ( 5 ) TL-IDF TF-IDF ( 6 ) TF-IDF ( 7 ) 5.5 ( 1 ) 153 ( 2 ) 153 ( 3 ) N-gram 1. 2. ( 4 ) TF-IDF 1. 2. ( 5 ) 3. 4. 6. 6.1 TF-IDF TF-IDF 1 1 TF-IDF N 1 5 10 1 0.310 0.367 0.392 2 0.411 0.506 0.557 3 0.759 0.911 0.981 4 0.703 0.842 0.873 5 0.709 0.835 0.867 6 0.589 0.646 0.646 7 0.538 0.576 0.576 8 0.443 0.475 0.475 9 0.411 0.443 0.443 10 0.329 0.354 0.354 TF-IDF 0.634 0.876 0.915 6 1 N-gram N 1 10 N 3 TF-IDF 1 N 345 TF-IDF TF-IDF 2 TF-IDF 3 984 5552 3 36.9% 3 893 1250 5.44%1 58.2% 3 7 3 3 1 c 2012 Information Processing Society of Japan 5
5 7 3 5552 1250 57.9% 84.3% 1 TF-IDF TF-IDF 6.2 N-gram N 1 10 1 5 10 6 N N 3 1 0.759 5 0.911 10 0.981 N N 1 1 8 1 86.6% 27 10 34.8% N N N=10 10 34.8% 153 N N 6.3 10 5 N 5 1 5 10 N-gram c 2012 Information Processing Society of Japan 6
8 1 5 10 5 10 1 1 5 10 5 10 1 75.9%TF-IDF 12.5% 8 1 7 OSS OSS 7. N-gram 75.9% TF-IDF N 3 TF-IDF N-gram TF-IDF 10 3 1 c 2012 Information Processing Society of Japan 7