AR-‐Miner: Mining Informave Reviews for Developers from

R1�
ICSE’14勉強会 2014/07/22 AR-­‐Miner: Mining Informa�ve Reviews for Developers from Mobile App Marketplace �
Ning Chen, Jialiu Lin, Steven C. H. Hoi, Xiaokui Xiao, Boshen Zhang�
紹介者: 早瀬 康裕(��⼤大��研)�
1�
R1�
概要�
  問題 –  モバイルアプリのレビューは,アプリの改善に有⽤用.
でも有効な⽀支援がない. –  “informa�ve” なレビューは少ない (35%)�
–  レビューが多過ぎる   Android の Facebookアプリ : 2000 reviews/day   提案⼿手法: AR-­‐Miner (1) 
(2) 
(3) 
(4) 
ノイズや,改善に関係ないレビューを除去 トピックモデリングでグループ化 novel approach で優先度度付け グループと,グループ内のレビューを直感的な視覚
化によって提��
2�
R1�
レビューの例例と分類�
Class
Type (Rule)
Functional flaw that produces incorrect or unexpected result
Performance flaw that degrades the performance of Apps
Informative
Requests to add/modify features
Requests to remove advertisements/notifications
Requests to remove permissions
Pure user emotional expression
NonDescriptions of (apps, features, actions, etc.)
informative
Too general/unclear expression of failures and requests
Questions and inquiries
Real Example
None of the pictures will load in my news feed.
It lags and doesn't respond to my touch which almost always causes me
to run into stuff.
Amazing app, although I wish there were more themes to choose from.
Please make it a little easy to get bananas please and make more
power ups that would be awesome.
So many ads its unplayable!
This game is adding for too much unexplained permissions.
Great fun can't put it down!
This is a crap app.
I have changed my review from 2 star to 1 star.
Bad game this is not working on my phone.
How can I get more points?
Figure 1: Di↵erent Types of Informative and Non-informative Information for App Developers
感�の���
�問�
不不明瞭や⼀一般的すぎる要求�
アプリの機能や,評価値に
ついての説明�
出典: N. Chen et al., “AR-­‐Miner: Mining Informa�ve Reviews for Developers from Mobile App Marketplace”, P. 769�
3�
R1�
AR-­‐Miner の概要�
User Reviews
Report
Preprocess
-ing
Filtering
1
2
Visualization
Ranking
5
4
Grouping
3
Figure 2: Overview of the AR-Miner framework.
We focus on tackling the “Ranking” Step.
出典: N. Chen et al., “AR-­‐Miner: Mining Informa�ve Reviews for Developers from Mobile App Marketplace”, P. 770�
(1)  センテンス単位に分割し,ストップワード除去と正規化 (2)  Expecta�on Maximiza�on for Naive Bayes (EMNB) で改善に有⽤用
でないレビューを除去 (3)  LDA もしくは ASUM でグループ化 (トピック=グループ,レ
ビューはトピックにある割合で参加. Table 3 を参照) (4)  Novel なランキング⼿手法で並び換え (5)  視覚化 (Fig. 5 を参照)�
4�
R1�
Ranking 基��
  Group Ranking → 3つの��の重みつき��
–  Volume: レビュー-­‐トピック⾏行行列列の列列 (縦⽅方向) の��
–  Time Series Pa�ern: Volume の経時変化 (急激に増加しているとか,徐々
に減っているとか) –  Average Ra�ng: トピックに含まれるレビュー評価値の重み付き逆数   スコアが低いレビューに,改善に有⽤用な意⾒見見が含まれていることが多いため   Instance Ranking → 5つの��の重みつき��
–  Propo�on: レビューインスタンスとトピックとの関連度度 (⾏行行列列の要素)�
–  Duplicates: レビューテキストをベクトル空間モデルで集約したときの重
複度度.   重複度度の⾼高いものは,多くのユーザに共通する要求の可能性が⾼高い –  Probability: フィルタリング��で得られる「有⽤用である確�」�
–  Ra�ng: 評価値の逆数�
–  Timestamp: 新�さ�
“Novel” と主張されているが,普通な印象.⽐比較対象の既存
⼿手法[22]はフィルタリング無しで LDA を使っているとの事で,
改善分 (Table 6) はフィルタリングの寄与か?�
5�
R3�
ICSE’14勉強会 2014/07/22 Mining Interprocedural, Data-­‐Oriented Usage Pa�erns in JavaScript Web Applica�ons Hung Viet Nguyen, Hoan Anh Nguyen, Anh Tuan Nguyen, Tien N. Nguyen 紹介者: 早瀬 康裕(��⼤大��研)�
6�
R3�
概要�
  JavaScript の usage pa�ern mining の難しさ (1)  ⼊入れ⼦子になったデータ構造に,名前や型がない事 (2)  cross-­‐language で inter-­‐procedural なコード   HTMLや,ネイティブコードの呼び出し   イベントハンドラなどによる処理理の分断 (3)  動的な型付け (変数に型がない)   提案⼿手法 –  Java Script + HTML を静的に分析することで usage pa�ern を得る –  JSModel: graph-­‐based representa�on for JS usages. –  JSMiner: inter-­‐procedural, data-­‐oriented JS usage pa�erns miner ��
R3�
JSModelと例例�
 
 
ラベル付き有向グラフ 頂点 –  program ac�ons incl
ObjLit
incl
  関数呼び出し   変数への代⼊入   データ操作opera�ons (e.g., ‘+’, ‘==’, ‘!=’, etc) –  data  
 
 
 
変数 関数 オブジェクトのリテラル HTML のデータ –  control structures  
辺 incl
in
out
=
in
or igin
destination
out
=
in
destination
waypoints
out
=
in
waypoints
travelMode
out
=
in
...DRIVING
arg
L21
directionsService
=
obj
request
out
L27
route
arg
Function
(anonymous)
  分岐⽂文と繰り返し⽂文 –  制御フロー –  データフロー –  ⼊入れ⼦子関係 (データとコード両⽅方)�
or igin
incl
Node Types
status
param
Action
in
incl
L28
param
IF
cond
OP
in
...OK
Data
Control
incl
response
incl
arg
clearMarkers L29
directionsDisplay
obj
setDirections L30
Edge Types
Control Flow
Data Flow
Inclusion
Figure 4: JSModel for the body of calcRoute in Figure 1
出典: H.V. Nguyen et al., “Mining Interprocedural, Data-­‐Oriented Usage Pa�erns in JavaScript Web Applica�ons”, P. 794�
8�
R3�
JSMiner アルゴリズム�
  AGM の派⽣生 –  サイズ1のパターン
から,徐々に拡⼤大   どの辺を選んで拡
⼤大するかを決める NextNodes が肝(ら
しい) –  GrouMiner [2] から
アイデアを得た�
1 function MineUsagePatterns(JSModelSet J )
2
AnonymizeVariablesandFunctionsNames(J )
3
S
{Size−1 patterns from J }
4
for each Pattern p in S do ExtendPattern(p, S )
5 return S
6 function ExtendPattern(Pattern p, PatternSet S )
7
C
GenerateCandidates(p)
8
for each q in Cluster (C ) do
9
if Freq(q) > and q 2
/S
10
S
S[q
11
ExtendPattern(q , S )
12 end
13 function GenerateCandidates(Pattern p)
14
C
;
15
for each Instance i of p do
16
for each Node n inL
NextNodes(i) do
17
C
C [ (i
n)
18 return C
19 function NextNodes(Instance i)
20
PriorityList L
;
21
switch LastExtendedNode(i)
22
case Action.Assignment:
L
GetNodes(‘in ’,‘ out ’)
23
case Action.FuncCall:
L
GetNodes(‘is−decl’)
24
case Action.OP:
L
GetNodes(‘in’)
25
case Data.ObjLit, Data.Function: L
GetNodes(‘incl ’)
26
case Data.Variable , Data.HTML: L
Neighbors(i)
27
case Control : L
GetNodes(‘incl ’)
28
L
L [ (Neighbors(i) / L)
29 return L
Figure 5: JSModel usage pattern mining algorithm
出典: H.V. Nguyen et al., “Mining Interprocedural, Data-­‐Oriented Usage Pa�erns in JavaScript Web Applica�ons”, P. 798�
9�
R2�
ICSE’14勉強会 2014/07/22 Mining Billions of AST Nodes to Study Actual and Poten�al Usage of Java Language Features�
Robert Dyer†, Hridesh Rajan†, Hoan Anh Nguyen†, and Tien N. Nguyen†�
†Iowa State University�
紹介者: ����(��⼤大��研)�
10 R2�
���
プログラミング⾔言語の新機能が開発者にどのように 導⼊入されていくのか、Javaで実証研究�
RQ1: Are language features used before release��
RQ2: How fre�uently is each feature used��
RQ3: How did committers/teams adopt features��
RQ4: Could features have been used more��
RQ5: �as old code converted to use new features��
�
分析に使⽤用するデータ:�
31,000+ projects�
9,000,000+ java files�
2013年年9⽉月時点でSourceForgeにあった、Subversion/CVS
リポジトリが⼀一つ以上存在するJavaプロジェクト全て�
11 R2�
l 
l 
�����
0.5ページしか書かれていない�
この論論⽂文は、著者らが以前作った分析基盤「Boa」を特定
の問題に応⽤用したという論論⽂文であるため�
�
「Boa」の簡単な説明:�
l 
l 
l 
SourceForgeやGitHubのようなUltra-‐‑‒Large-‐‑‒Scale Software Repositoriesに対する分析のための プログラミング⾔言語と基盤�
リポジトリに対する多様なクエリを適度度な抽象度度で 投げられる�
クエリをMapReduce(Hadoop)にコンパイルして実⾏行行�
12 R2�
������
論論⽂文のFigure 13より引⽤用�
All: 新機能を⽤用いたコードに機械的に置き換えられる箇所の数�
Old: Allのうち、新機能リリース前に書かれた箇所 (保守作業者が修正できるはずの場所)�
New: Allのうち、新機能リリース後に書かれた箇所 (新機能が使えるのに開発者がそれをしなかった箇所)�
�
àIDEによる新機能の推薦が必要かもしれない�
�
13 R2�
�����������
著者本⼈人による紹介スライド�
l 
http://www.cs.bgsu.edu/rdyer/papers/icse14-‐‑‒
slides.pptx を参照�
14 R4�
ICSE’14勉強会 2014/07/22 Mining Fine-­‐Grained Code Changes to Detect Unknown Code Change Pa�erns�
Stas Negara†, Mihai Codoban‡, Danny Dig‡, and Ralph E. Johnson†�
†University of Illinois ‡Oregon State University�
紹介者: ����(��⼤大��研)�
注: スライド中の引⽤用番号は論論⽂文内のものと同じ�
15 R4�
������
背景�
l 
ソースコードの変更更にはよくあるパターンがある�
例例: Return If Arguments Are Equalパターン(著者らによる命名)�
double computeDistance(Point p1, Point p2) { if (p1.equals(p2)) return 0; �加�
/* 重い計算 */ }�
l 
こうしたパターンを⾒見見つけられればIDEによる⾃自動化などで 開発者の⽣生産性を上げられる�
⽬目的�
l 
VCSのスナップショットではデータが粗すぎて
時間軸を扱う分析に限界がある[23]ため�
‌リアルタイムに収集したソースコード変更更履履歴から 16 今までに知られていない頻出変更更パターンを⾒見見つける�
R4�
アプローチ(1/2)�
変更更履履歴�
l 
l 
未知のものがあるか 上位から確認�
マイニング アルゴリズム�
頻出変更更
パターン�
ソースコード変更更履履歴から頻出変更更パターンを マイニングするアルゴリズムを設計�
アルゴリズムの出⼒力力を上位からいくつか⼿手動で確認し、
未知の変更更パターンが無いか探す (ゴミや既知の変更更パターンがあれば無視する)�
17 R4�
未知のものがあるか 上位から確認�
アプローチ(2/2)�
変更更履履歴�
マイニング アルゴリズム�
頻出変更更
パターン�
論論⽂文のTable 1より引⽤用�
Return If Arguments Are Equal�
Return If Arguments Are Equal�
ソースコード変更更履履歴をASTノードに対する操作の列列として
表現→itembagを変更更パターンとしてマイニング�
18 R4�
l 
���
23⼈人のべ1520時間分のソースコード編集履履歴をマイニング�
p 
l 
マイニング結果の上位36個を第⼆二著者が⼿手動で確認�
p 
l 
5時間半で済んだ à Scalable��
32%が未知の変更更パターン à E�ective��
未知の変更更パターンを10種類確認 à Useful��
その⼀一つ: Change and Propagate Field Typeパターン(論論⽂文より引⽤用)�
l 
オンラインアンケートした420⼈人の半分以上が6種類の変更更
19 パターンについて実際の開発でよく使うと回答�
R4�
�����������
マイニングアルゴリズムの詳細�
l 
本論論⽂文にはアルゴリズムの概要しか書かれていません!�
l 
⼿手法の詳細は http://hdl.handle.net/2142/43889 を参照�
�
マイニングアルゴリズムの実装�
l 
http://codingtracker.web.engr.illinois.edu/ を参照�
20