はじめに
様々な方々のご指導・ご支援・ご協力のおかげで、ソフトウェア品質シンポジウム(SQiPシンポジウム)において、3年連続でSQiP Best Paper Effective Awardを受賞させていただいた。
その経験をもとに、形態素解析を活用した分析で、Awardを受賞できる論文を執筆するための”コツ”をまとめてみる。
※ソフトウェア品質シンポジウム・・・https://www.juse.jp/sqip/symposium/
※Best Paper Effective Award・・・実践的で、現場の品質向上にすぐに役立つ優秀なもの
###受賞論文
- 統合テストにおいて影響範囲に対するテスト漏れを防止する「影響波及パス分析法」の提案, https://www.juse.jp/sqip/symposium/archive/2017/day1/files/ronbun_C1-1.pdf
- 欠陥混入メカニズムの知識を活用したDRBFMの提案,
https://www.juse.jp/sqip/symposium/archive/2018/day1/files/B2-1_ronbun.pdf - 派生開発におけるテスト漏れを防止するDifference Statement Coverage分析法の提案, https://www.juse.jp/sqip/symposium/archive/2019/day2/files/A3-1_ronbun.pdf
分析対象
SQiPシンポジウムに投稿された2015年から2020年の論文を対象とする。
Best Paper Effective Awardを受賞した論文と受賞していない論文をサンプリングで8件選択した。
時間の関係(手間の関係)で、論文の分析は8件でやめてしまった。
今後、分析対象の論文を増やして、提案する”コツ”が妥当性を上げる必要がある。
分析手法
論文を形態素解析し、その結果をデータ分析し、Awardを受賞した論文と受賞していない論文の違いを特定した。
形態素解析は、KHCoder(ChaSen)を利用し実施した。
形態素解析[1]
語を構成する最小の意味のある単位を形態素と呼び、日本語では、名詞や形容詞、動詞語幹、活用語尾、助詞、助動詞などの語(構成単位)が形態素にあたる。
形態素解析では、辞書や語形変化規則などの語彙的な知識と隣り合った形態素間の結合に関する規則を用いて、文の分かち書きを行い、単語列を同定し、個々の単語の品詞の決定などを行う。
KHCoder[2]
KH Coderは,テキスト型(文章型)データを統計的に分析するためのフリーソフトウェアである.
入力した文章から,自動で抽出語のリストを作成することが可能である.抽出語のリストは,各品詞ごとに,多く出現した語から順に並べられる.
また,複合語を自動で検出し,抽出語のリストを作成することも可能である.
ChaSenで分類される品詞は、以下の「ChaSen 品詞体系 (IPA品詞体系)」に示されている。
http://www.unixuser.org/~euske/doc/postag/#chasen
データ分析
形態素解析の結果をもとに、以下のデータを集計し、分析を行った。
データ名 | 説明 |
---|---|
総抽出語数 | 分析対象ファイルに含まれているすべての語の延べ数(出現回数を数える) |
異なり語数 | 何種類の語が含まれているかを示す数(出現回数を数えない) |
出現数1回の語の数 | 論文本文中で1回しか使用されていない語の延べ数 |
論文タイトル使用語の抽出数 | 論文タイトルで使用されている語が、論文本文中で使用されている延べ数 |
修飾語の抽出数 | 「形容詞」「形容動詞」「ナイ形容」「副詞」「副詞可能」に分類される語の延べ数 |
異なり語の割合 | 異なり語数 / 総抽出語数 |
出現数1回の語の割合 | 出現数1回の語の数 / 総抽出語数 |
タイトル使用語の割合 | 論文タイトル使用語の抽出数 / 総抽出語数 |
修飾語の割合 | 修飾語の抽出数 / 総抽出語数 |
分析では、Award受賞しているか否かで層別した散布図・箱ひげ図をもとに、見解を出した。
散布図・箱ひげ図の作成には、Rcmdr(Rコマンダー)を使用した。
形態素解析&データ集計結果
論文毎に形態素解析をし、データを集計した結果を示す。
「AWARD」列は、Award受賞しているか否かを示す(Y:受賞している、N:受賞していない)。
データ分析結果
散布図行列
「異なり語数」と「総抽出語数」
「出現数1回の語の数」と「総抽出語数」
「タイトル使用語の抽出数」と「総抽出語数」
「修飾語の抽出数」と「総抽出語数」
考察(ソフトウェア品質シンポジウムでBest Paper Effective Awardを受賞するコツ)
ソフトウェア品質シンポジウムでBest Paper Effective Awardを受賞するコツ5つを示す。
まとめると、「理解しやすい論文を書けば、Award受賞の確率がかなり上がる」と考えられる。
- 語を多く書く(形態素数:2000以上)
- 使用する語の種類を少なくする(異なり語の割合:22%以下)
- 繰り返し同じ語を使用する(1回しか使用されない語の割合:8%以下)
- 論文タイトルで使用されている語を、論文本文中でも多用する(タイトル使用語の割合:7%以上)
- 修飾語を少なくする(修飾語の割合:8%以下)
先行研究
文書の複雑さを数える[3]
「名詞句複雑度」というメトリクスが提案されている。このメトリクスは、「使用する語の種類を少なくする」「繰り返し同じ語を使用する」というコツと関連する。
文書を計測すると聞いてまず思いつくのは,ページ数や文字数を計測する方法です.また,文に含まれる単語を計測することもできます.単語には,接続詞や助詞などといった繰り返し出現する語も含まれます.助詞や接続詞は単独では意味を持たないので,これらを省いて名詞や名詞句,動詞だけを計測することもできます.名詞句(「寒い日」など)は,名詞(「日」)が指示する対象の属性や状態(「寒い」)を指定することができます.
基本的に,一つの文には一つの動詞が対応しているので,文の個数が動詞の個数に一致します(名詞句の中に出現する動詞は除く).同じ個数の文を含む複数の文書を比較した場合,動詞の個数は一致しますが,名詞句(名詞を含む)の個数は異なる場合があります.したがって,動詞の個数を計測するよりも名詞句を計測するほうが,文書の複雑さを計測するのに適していると考えられています.
N個の文からなる文書に,M個の名詞句が含まれているとします.同じ名詞句が文書の中で繰り返し出てくることがあります.そこで,すべての名詞句が文書の中で1回しか出てこない場合に対して,同じ名詞句が複数回出てくる場合の方が,文書の複雑さが小さいと考えると,次のように「文の名詞句複雑度」を定義できます.
[定義] 文の名詞句複雑度 NPC (Noun Phrase Complexity)
j番目の文に含まれる名詞句が,文書内で出現する回数の逆数の総和を,j番目の文に対する名詞句複雑度と呼ぶ.
参考文献
[1] 保田明夫,「形態素解析と分かち書き処理」,http://www.wordminer.org/wp-content/uploads/2013/04/63_5.pdf
[2] 樋口耕一,KH Corder 3,https://khcoder.net/ ,2019
[3] 山本修一郎,「山修の開発文書品質入門(2) ―― 文書の複雑さを数える」,2011,http://asdoq.jp/blog/details.php?bid=6
[4] @kazuo_reve, 「形態素解析を活用した推敲の方法」, https://qiita.com/kazuo_reve/items/6b7205ffb4ce6ad230ba
[5] 鷲崎弘宜,「論文の書き方入門 2017」,SQiP研究会ミニ講座, 2017,https://www.slideshare.net/hironoriwashizaki/2017-80777238
#おわりに
https://qiita.com/kaizen_nagoya/items/70a53f19d95d571a0e48
@kaizen_nagoyaさんが、「ソフトウェア品質シンポジウムでBest Paper Effective Awardを受賞するコツ?」に付け加えたい5つのことをまとめてくださったので、提示されている5つのことを受賞論文(研究)が満たしていたか評価してみます。
追加分析
論文A:統合テストにおいて影響範囲に対するテスト漏れを防止する「影響波及パス分析法」の提案
論文B:欠陥混入メカニズムの知識を活用したDRBFMの提案
論文C:派生開発におけるテスト漏れを防止するDifference Statement Coverage分析法の提案
評価観点 | 論文A | 論文B | 論文C |
---|---|---|---|
仕事をする | 〇 | 〇 | 〇 |
自分の頭で考える | 〇 | 〇 | 〇 |
利用できるものはなんでも利用する | 〇 | 〇 | 〇 |
自分の好き嫌いははっきりする | 〇 | 〇 | 〇 |
聴衆の興味を知る | × | × | × |
追加考察
###仕事をする
業務の問題を解決し、その解決した事実を論文で発表しています。
発表した論文は、顧客や新メンバなどにプロジェクトの取り組み(工夫)を説明するためにも役立っています。
###自分の頭で考える
自分達で考え工夫したことを論文で発表しています。
論文内では、「参考文献の理論をもとに手法を考案した」等と書いていますが、「問題をもとに自分達で解決策(手法)を考え、問題を解決し、論文を書く段階で、「同じようなことやっている方いるかなぁ」と論文を調査し、参考文献としている」のが実態かもしれません。
###利用できるものはなんでも利用する
手元にある道具、またはすぐに入手できる道具、または自作の道具で、問題を解決してきました。道具を作ることが目的ではなかったので、すぐ使えるものなら何でもよかったです。
自分達の論理を補強するための材料になる論文がないかと検索しまくります。
実開発のデータだけでは、評価が足りないと思ったときには、追加実験をします。そのときは、プロジェクトメンバに頼んで、プロジェクトメンバを被験者にします。
プロジェクトメンバに、論文のレビューをしてもらいます。
###自分の好き嫌いははっきりする
論文を執筆し始めるまでに、業務を通じて自分が「これすごいな!大発見だな!いいな!」と感じたことを伝える論文にしています。
日々業務の中で、「論文を執筆するために、何かネタになりそうなことはないかなぁ」とアンテナを張っています。
###聴衆の興味を知る
これはやれていませんでした。
聴衆の興味に合わせて論文を書くということはしていません。
聴衆に理解していただけるように論文を書くということはしています。その結果が、先に述べた形態素解析による分析結果(「理解しやすい論文を書けば、Award受賞の確率がかなり上がる」)かもしれません。
補足
形態素解析による分析を実施して、もう一つ明らかになったデータがあります。
受賞した3論文のみで、以下の単語が使用されていました。
- 派生開発
- 見逃し
- 変更箇所
- 関数
- 実開発
- 導入
3年間同じテーマ(派生開発、変更箇所、見逃し)の問題に対して、取り組みをしていました。つまり、1つの論文で扱っている問題は小さいです。大きなテーマに対して、関連する小さな問題を一つ一つ解決していったという感じです。以前にご指導をいただいた足立久美さんからは、「大きな川を渡るときには飛び石が複数いる。飛び石一つを一つの論文としなさい。一つの論文では扱う問題は小さくてもいいので、複数の論文を繋いで大きな課題を解決しなさい。」というようなことを教えていただきました。
自分に課していることですが、必ず実開発に導入し効果を確認したことを発表しています。実開発ではない実験で効果を確認しても、前提の違いから実開発に導入できないことが多いと感じています。私は研究を生業にしているのではなく、実開発ですぐに成果を出すことを求められるマネージャなので、実開発で成果を出して、それを論文で発表するというアプローチを取っています。