形態素解析を活用した推敲の方法

# はじめに
形態素解析を活用した推敲の方法「形態素ベースドレビュー」を提案する．
[2]「数学文章作法 推敲編」では，多様な読み方で多様な推敲を行うのが良い方法であると述べられている．
提案手法は，多様な推敲の一つとなりうる．

手法の対象とする文書は，要求仕様書とする．ただし，論文などの文書にも適用可能と考えられる．

# 検出したい問題
提案手法は，以下の問題を解決することを目的とする．

* あいまい表現により，誤解釈が発生する
* 統一されていない表現により，検索で関連文章を抽出できない

## あいまい表現
[3]「情報伝達型の日本語文章に現れるあいまい表現の類型化とその改善例」で，あいまい表現の類型が示されている．あいまい表現の類型は大きく「文レベルのあいまいな表現」「語レベルのあいまいな表現」「意味の通じない表現」「表現の意味する範囲が広すぎる「あいまいさ」」に分類されている．提案手法で検出したい問題は，実際に不具合につながった表現を検出することである．過去の不具合を分析すると以下に分類される表現が不具合につながっていた．

* 語レベルのあいまいな表現
 * 用語のあいまいさ
* 表現の意味する範囲が広すぎる「あいまいさ」
 * 定性的な語の使用

「用語のあいまいさ」については，[4]「要求仕様の誤解釈を検出するDomain Word Modelingの提案」で解決策を提案している．今回の取り組みでは，「定性的な語の使用」に分類されるあいまい表現を検出の対象とする．

## 統一されていない表現
不具合を分析すると，あいまい表現ではなく，統一されていない表現も不具合につながることが分かった．派生開発で影響箇所を検出するために，検索をしても影響箇所が特定できないという問題である．表記ゆれはツールで検出することが可能であるが，全く異なる用語を同じ意味で使っている箇所は検出できない．

# 現状分析
## 要求仕様書のレビュー
要求仕様書のレビューでは，要求仕様書に記載されている文章を，初めから順に読んでいくことが多い．この方法だと，どうしても"補完"をしてしまい「わかったつもり」になりやすく，表現の意味する範囲が広すぎる「あいまいさ」を検出しにくい．[6]「わかったつもり 読解力がつかない本当の原因」では，読み手が「わかったつもり」に陥るメカニズムが示されている．
また，統一されていない表現も検出しにくい．統一されていない表現も検出するには，複数の文章にまたがって確認をする必要がある．1文1文を順に読んでいくレビューでは，読んでいない文章に記載されている単語を記憶しておく必要がある．これは非常に困難な行為である．
つまり，文章を初めから順に読んでいくレビューでは，以下が困難である．

* "補完"をせず単語のあいまいさを確認する
* 文書内で使用されている単語の比較をする

# 先行研究
あいまい表現や統一されていない表現を検出するために，辞書を活用する方法が先行研究で示されている．

## 推敲のコツ
[2]「数学文章作法 推敲編」では，推敲のコツとして，要注意語句の一覧を作成することを提案している．

> 用語集を作りましょう．説明文ではどのような用語を使うかが非常に大切になります．一つの文章にはたくさんの用語が登場しますから，文章を推敲しながら「どの用語が適切だろう」といちいち迷う状況は良くありません．用語集を作れば「現在，こういう用語でこの文章を書いている」ということが明確になります．
> 自分がつい使ってしまう要注意語句の一覧を用意しておき，検索するのも良い方法です．

## キーワードベースドレビュー
[7]「キーワードベースドレビュー－ドキュメントのあいまいさや不備に着目したレビュー手法－」では，ドキュメントのあいまいさや不備につながるキーワードを分類・整理し，キーワードが使われている箇所を確認する手法を提案している．

### キーワードの分類観点
* 数値的表現
* 時間的表現
* 深さや長さを表す言葉
* 実態のない表現
* 条件指定表現
* 否定表現
* 受動表現
* 不明瞭な表現
* 形容表現
* 指示表現

## 省略と修飾パターンを用いた用語不一致検証
[8] 「省略と修飾パターンを用いた用語不一致検証による要求仕様の一貫性検証支援ツールの実現と適用評価」では，用語不一致となる概念を定義し，検証ルールと辞書を用意し，検証する手法を提案している．
### 用語不一致となる概念
* 省略 
 * 要求仕様書中に定義された設計要素から，形容詞や名詞を省略して，要求仕様書中で利用している場合に，用語不一致とみなす．
* 修飾
 * 要求仕様書中に定義された設計要素に，形容詞や名詞を修飾して，要求仕様書中で利用している場合に，用語不一致とみなす．
* 表記ゆれ辞書一致
 * あらかじめ定義した表記ゆれ辞書に定義された表記ゆれ関係にある用語が，要求仕様書中に利用されている場合に，用語不一致とみなす．

# 解決策の提案
## 解決方針
先行研究で示されている手法を適用するためには，事前に辞書を作成する必要がある．また，新しい用語が登場した場合には，既存の辞書が役に立たなくなり，辞書をメンテする必要がある．
手法の導入障壁を下げるために，事前に辞書を作る必要のない解決方法にした．
要求仕様書に記載されている文章を，初めから順に読んでいくレビューから，要求仕様書に対して形態素解析をした結果をレビューする方針とした．考案した手法は，形態素ベースドレビューと呼ぶ．
形態素解析結果のレビューは，文章を初めから順に読んでいくレビューより，以下の行為がしやすいと考えた．

* "補完"をせず単語のあいまいさを確認する
* 文書内で使用されている単語の比較をする

形態素解析には，KHCoderを使用した．

## KH Coder
[11]KH Coderは，テキスト型（文章型）データを統計的に分析するためのフリーソフトウェアである．
入力した文章から，自動で抽出語のリストを作成することが可能である．抽出語のリストは，各品詞ごとに，多く出現した語から順に並べられる．
また，複合語を自動で検出し，抽出語のリストを作成することも可能である．

## 形態素ベースドレビューの手順
形態素ベースドレビューの手順を示す．本手順は，KH Coderを使用することを前提とした手順である．

1. レビュー対象の文書を形態素解析し、抽出語のリストと複合語のリストを作成する．
2. あいまい表現を抽出する．
 1. 抽出語のリストから，「形容詞」「形容動詞」「ナイ形容」「副詞」「副詞可能」に分類される単語を抽出する．
 2. 複合語のリストから，接尾辞「-性」「-化」「-的」が付加される単語を抽出する．
3. 同義語を抽出する．
 1. 抽出語のリストと複合語のリストから，「名詞」「サ変名詞」「未知語」に分類された単語と「複合語」を抽出し，同義語がないかをチェックする．
4. あいまい表現と同義語の修正を検討する．

ちなみに，同義語は，出現頻度が少ない単語のほうが，修正すべき単語の可能性が高い．たまたま，他と異なる表現を使ってしまった可能性が高い．そのため，同義語のチェックは，出現頻度が少ない単語から確認していったほうが効率的である．

時間が限られているときは，同義語は「未知語」と「複合語」に絞って確認をするとよい．もともと，「統一されていない表現により，検索で関連文章を抽出できない」という問題を解決しようとしており，検索する用語は専門用語であるケースが多い．「未知語」と「複合語」が専門用語となっている可能性が高いため，「未知語」と「複合語」に分類されている単語で，同義語となっているものを解決しておくことが効果的である．

## KH Coderの利用手順
形態素ベースドレビューのために、必要となるKH Coderの利用手順を示す．詳細は，KH Coderのマニュアルを参照．
1. レビュー対象の文書をテキストファイルにしておく．
2. kh_coder.exeを実行する．
3. メニュー[プロジェクト]-[新規]を実行する．
4. ダイアログ「新規プロジェクト」で，「分析対象ファイル」を選択し，「OK」ボタンを押下する．
5. メニュー[前処理]-[複合語の検出]-[茶茎を使用]を実行する．
6. ダイアログ「複合語の検出（茶茎）」で，「全複合語のリスト」ボタンを押下する．
7. 出力された複合語のリストを保存する．
8. メニュー[前処理]-[前処理の実行]を実行する．
9. メニュー[ツール]-[抽出語]-[抽出語リスト]を実行する．
10. 出力された抽出語のリストを保存する．

# 効果
* 過去に不具合流出につながった要求仕様書のあいまい表現（定性的な語）がされている箇所を，提案手法で検出できた．実験事例は2件．
* レビュー済みの要求仕様書に対して，提案手法を実行し，レビューでは見逃していた「定性的な語」と「同義語」を検出できた．

# 今後の課題
* あいまい表現と位置付ける単語の条件は、語解釈の実例から見直しが必要である。例えば、複合語で注意すべき接尾辞については，実例から見直しが必要である．
* 定性的な語の使用箇所は，一律問題であり修正すべきと判断することが難しい．そのため，定性的な語の使用箇所を本手法で検出しても，修正しないという判断をし，その判断の結果，後工程で誤解釈が発生する可能性がある．修正要否の判断に，後工程の担当者が加わるなどの対策が必要となる可能性がある．
* 形態素解析をした結果から辞書を作成することで，同義語の抽出を効率化することを検討する．
* Word2Vecなども活用することで，同義語を自動検出することを検討する．

# 参考文献
[1] 結城浩，「数学文章作法 基礎編」，ちくま学芸文庫，2015，https://bookmeter.com/books/6574310
[2] 結城浩，「数学文章作法 推敲編」，ちくま学芸文庫，2015，https://bookmeter.com/books/8653540
[3] 阿部圭一，「情報伝達型の日本語文章に現れるあいまい表現の類型化とその改善例」，情報処理学会 デジタルプラクティス 5(1) 70-79, 2014
[4] 柏原一雄，長井亘，不破慎之介，林香織，石川冬樹，栗田太郎，「要求仕様の誤解釈を検出するDomain Word Modelingの提案」，ソフトウェア・シンポジウム2020，2020
[5] @kazuo_reve, 「文章の推敲・校正の個人的なノウハウ」, https://qiita.com/kazuo_reve/items/b15d99759d75f942b9f0
[6] 西林克彦，「わかったつもり 読解力がつかない本当の原因」，光文社新書，2005
[7] 河野哲也，猪塚修，藤森麻紀子，本間周二，茂中義典，「キーワードベースドレビュー－ドキュメントのあいまいさや不備に着目したレビュー手法－」，ソフトウェアテストシンポジウム東京2010，2010
[8] 位野木万里, 近藤公久，「省略と修飾パターンを用いた用語不一致検証による要求仕様の一貫性検証支援ツールの実現と適用評価」，コンピュータソフトウェア 35 巻 3 号 p. 3_109-3_127，2018，https://www.jstage.jst.go.jp/article/jssst/35/3/35_3_109/_pdf/-char/ja
[9] 山村秀樹，「言葉の不統一がもたらす業務とシステムへの悪影響」，https://www.itmedia.co.jp/im/articles/0610/27/news139.html
[10] 若林丈紘，森崎修司，渥美紀寿，山本修一郎，「要求仕様書と設計書における語彙の差分に関する分析」，研究報告ソフトウェア工学（SE） 2015-SE-190巻 20号 P.1-6，2015
[11] 樋口耕一，KH Corder 3，https://khcoder.net/ ，2019
[12] 李夢迪，「接尾辞「-性」「-化」「-的」について ―前接する語基の特徴をめぐって―」，https://www.lang.nagoya-u.ac.jp/nichigen/menu7_folder/symposium/pdf/14/04.pdf
[13] @kaizen_nagoya，「日本語（10）日本語の文章の推敲と校正」，https://qiita.com/kaizen_nagoya/items/3a5b00081a724c31cff9
[14] 山本修一郎，「山修の開発文書品質入門（2） ―― 文書の複雑さを数える」，2011，http://asdoq.jp/blog/details.php?bid=6
[15] @icoxfog417，「形態素解析をして単語を取り出せているつもり・・・か？」，https://qiita.com/icoxfog417/items/e83383263badec7a4805
[16] INCOSE，「Guide for Writing Requirements」
[17] ASDoQ，「システム開発文書品質モデル Ver1.1」
[18] 竹内広宜, 中村大賀, 荻野紫穂, 水野謙, 岩間太, 鎌田真由美，「ソフトウェア開発における文書成果物の分析技術とその活用」
[19] 位野木万里，「高品質な技術文書作成のための網羅性検証の自動化技術」，2019，https://shingi.jst.go.jp/var/rev0/0001/0625/2019_kogakuin_2.pdf
[20] 中島千壽，高橋宏季，位野木万里，「要求仕様のあいまいさを解消するためのプロセスフレームワークの提案」，第82回全国大会講演論文集，2020，https://ipsj.ixsq.nii.ac.jp/ej/?action=pages_view_main&active_action=repository_view_main_item_detail&item_id=205068&item_no=1&page_id=13&block_id=8
[21]井上昇，高橋宏季，位野木万里，「振る舞い用語の同義語に着目したあいまいな要求仕様の検証手法の提案」，第81回全国大会講演論文集，2019，https://ipsj.ixsq.nii.ac.jp/ej/?action=pages_view_main&active_action=repository_view_main_item_detail&item_id=196340&item_no=1&page_id=13&block_id=8


#おわりに
本アイデアは、論文（タイトル「要求仕様に対する形態素ベースドレビューの提案」）にして、ソフトウェア・シンポジウム2021で発表させていただきました。
https://www.sea.jp/ss2021/programme.php

## 論文
###タイトル
要求仕様に対する形態素ベースドレビューの提案

###著者
柏原 一雄、新留 光治、李 路雲、鈴木 淳、松原 潤弥、不破 慎之介（デンソークリエイト）

###要旨
要求仕様が自然言語のような曖昧さを含む記法で記述されている場合，曖昧に表現された文が不具合を誘発させることがある．実際に我々の組織では，「修飾語」または「同義語」を使用している文が不具合を誘発していた．要求仕様書から修飾語・同義語が使用されている曖昧な文を検出するために，「形態素ベースドレビュー」を考案した．実開発に形態素ベースドレビューを導入し，効果を確認した．

###リンク
https://www.sea.jp/ss2021/download/22-SS2021.pdf

###論文の参考文献
この記事を執筆したときと、論文を執筆したときで、参考文献が異なります。論文の内容に直接関係ないものを外したり、論文の内容の前提・根拠を補強するために必要なものを追加したりしました。

[1]	厳密な仕様記述ＷＧ委員，“厳密な仕様記述入門”，独立行政法人情報処理推進機構，2013
[2]	山本修一郎，“要求工学 連載第87回 要求文の曖昧さの摘出法”，https://www.bcm.co.jp/site/youkyu/youkyu87.html，2005
[3]	阿部圭一，“情報伝達型の日本語文章に現れるあいまい表現の類型化とその改善例”，情報処理学会デジタルプラクティス Vol.5 No.1 p.70-79，2014
[4]	誉田直美，“レビュー技術動向”，ソフトウェア品質シンポジウム2017，2017
[5]	柏原一雄，長井亘，不破慎之介，林香織，石川冬樹，栗田太郎，“要求仕様の誤解釈を検出するDomain Word Modelingの提案”，ソフトウェア・シンポジウム2020，2020
[6]	原正幸，松本裕治，“ipadic version 2.7.0 ユーザーズマニュアル”，奈良先端科学技術大学院大学, 2003
[7]	井上昇，高橋宏季，位野木万里，“振る舞い用語の同義語に着目したあいまいな要求仕様の検証手法の提案”，情報処理学会第81回全国大会講演論文集，2019
[8]	中島千壽，高橋宏季，位野木万里，“要求仕様のあいまいさを解消するためのプロセスフレームワークの提案”，情報処理学会第82回全国大会，2020
[9]	西林克彦，“わかったつもり 読解力がつかない本当の原因”，光文社新書，2005
[10]	村田真樹，内元清貴，馬青，井佐原均，“日本語文と英語文における統語構造認識とマジカルナンバー7±2”，自然言語処理 6巻 7号 p.61-71，1999
[11]	河野哲也，猪塚修，藤森麻紀子，本間周二，茂中義典，“キーワードベースドレビュー－ドキュメントのあいまいさや不備に着目したレビュー手法－”，ソフトウェアテストシンポジウム東京2010，2010
[12]	位野木万里, 近藤公久，“省略と修飾パターンを用いた用語不一致検証による要求仕様の一貫性検証支援ツールの実現と適用評価”，コンピュータソフトウェア 35巻 3号 p.109-127，2018
[13]	保田明夫，“形態素解析と分かち書き処理”，テキスト・マイニング研究会 テキスト型データのマイニング，p.145-180，https://www.wordminer.org/wp-content/uploads/2013/04/63_30.pdf，2006
[14]	樋口耕一，KH Coder 3，http://khc.sourceforge.net，2019
[15]	樋口耕一，“フリーソフトウェア「KH Coder」による計量テキスト分析: 手軽なマウス操作による分析からプラグイン作成まで”，研究報告人文科学とコンピュータ（CH） Vol.2015-CH-107 No.9 p.1-2，2015
[16]	結城浩，“数学文章作法 推敲編”，ちくま学芸文庫，2015
[17]	岡本博幸，内山敬太，鈴木彩子，高橋一仁，西山茂，野中誠，“要求仕様書の特性に着目した個人レビュー手法の実験的評価”，ソフトウェア品質管理研究会 第20年度 (2004年度) 分科会成果報告, 2005
[18]	Takehiro Wakabayashi，Shuji Morisaki，Norimitsu Kasai，Noritoshi Atsumi，Shuichiro Yamamoto，“Tool Supported Detection of Omissions by Comparing Words between Requirements and Design Document”，Journal of Information Processing 28巻 p.136-149，2020
[19]	Shuji Morisaki，Masato Nishiguchi，Tetsuya Yonemitsu，Atsushi Motoyama，“A Method to Remove Extraneous Words in Defect Log by Using Common Vocabulary”，コンピュータ ソフトウェア 37巻 2号 p.2_120-2_126，2020
[20]	伴凌太，高橋宏季，位野木万里，“word2vecを用いた同義語辞書自動作成手法の提案と適用評価”，情報処理学会第81回全国大会講演論文集，2019