[掲示板へもどる]
一括表示

  [No.929] 述語に着目した分析方法について 投稿者:袋井  投稿日:2012/03/18(Sun) 11:56:20

樋口先生さま

お世話になります、袋井と申します。

毎々、マニアックな質問でご迷惑をお掛けしております。


今回は、KH Coderの機能の質問ではなく、
こういう場合には、KH Coderではどのように接近したらよいか、効果的かという(悩み相談的な)質問です。


私は今まで、名詞に着目した分析方法をしてきました。

その理由は、動詞を含むと、否定形や、ポジティブ・ネガティブの文意の扱いに苦慮することが多くあることから、
動詞を扱わないように逃げてきた、というのが本音かもしれません。


係り受けに加え、感性や文意を抽出する専門ソフトも幾つか手元にありますが、
まだまだ精度の面で問題があり、結果を鵜呑みにすることはとても危険です。
痛い経験を何度もしてきました。
(ソフトが悪いのではなく、分析にかけるテキストの質に大きな問題があることも事実です)


KH Coderでは豊富な機能が提供されていますので、これらをうまく活用することで、
否定形や、ポジティブ・ネガティブの文意を把握した分析ができるのではないかと思っております。


分析対象データとして、以下の3文を考えます。
  値上げは納得できない
  値上げは納得いかない
  値上げについて納得いく説明がほしい

いずれも、「値上げ」にネガティブな意見ばかりです。

抽出語リストでは、以下のように出力されます。
・サ変名詞  ⇒値上げ、納得、説明
・動詞B   ⇒いく、できる
・形容詞B  ⇒ほしい
・否定助動詞 ⇒ない


名詞だけを見れば、納得しているのか、納得していないのか、わかりません。


ポジティブ、ネガティブな意見の件数をカウントする場合、
テキスト件数が多い場合には、目検で件数を拾うことは現実的ではありません。

こういう場合に、どのように接近すればよいのでしょうか?

否定助動詞、ナイ形容詞(今回は出現していません)に着目して、
KWICコンコーダンスで確認して、件数を拾うということになるのでしょうか?

否定助動詞、ナイ形容詞(今回は出現していません)に着目して、
コーディングファイルを作成して、件数を拾うことになるのでしょうか?


語〜語のクロス表を自作して、判断するという手もあると思います。
しかし、「ない」と「値上げ」が共起出現するということで、
抽出語だけを見ていると、「値上げ」が「ない」と誤認識する恐れがあります。

可視化するという手もあります。
共起ネットワークでも、「値上げ」〜「ない」にエッジが張られますので、
やはり、「値上げ」が「ない」と誤認識する恐れがあります。

難しいですね。


ご助言をいただければ助かります。


  [No.930] 「ポジティブ」「ネガティブ」といった文意の分析について 投稿者:HIGUCHI Koichi  投稿日:2012/03/18(Sun) 16:08:26

こんにちは、樋口です。書き込みありがとうございます。

> ポジティブ・ネガティブの文意

これは難しいですね。「ポジティブ・ネガティブ」に限らず、何らかの文意を
くみ取る分析はあまり自動化できないのが現状だと思います。

KH Coderを使用する場合は2つのアプローチが考えられます。

■コーディング

学術関連の用途、すなわち分析結果を使って論文を書くような場合には、コー
ディングルールを使う方法をお勧めすることが多いです。

> *ネガティブ
> ( 値上げ and not ( 納得 and not seq(納得-ない)[b] ) )
> or ...

※ちょっと(?)意味を読み取りにくいコードなのですが、「納得」があって
なおかつ「納得」の後ろに「ない」が続いていない場合には、除外するという
ルールです。

こうしたルールを書く場合、コードを振られた文書を目で見て確認するのが基
本ですから、文書数は1000程度以下に抑えるのが望ましいでしょう。つまり扱
える文書の数には限界がでます。

また、原文を確認しながら、こうした細かなルールを書くには時間と労力がか
かります。単に手で分類した方が速いくらいでしょう。

しかし、こうしたコーディングルールを書くことで分類の基準を記録して手元
に残すことができます。さらに、必要であれば分類基準を第三者に明示するこ
とができるようになります。つまり、学術的な意味での信頼性が向上します。
また分類の精度も、人が目で確認するのですから、高い精度を目指すことがで
きます。学術用途であれば、これらのメリットのために労力をさく価値はある
と考えています。

■機械学習

もう手で分類してしまえ、という形に近くなります。ただ、手で分類した結果
から「分類基準のようなもの」を自動生成して、未分類のデータに対して適用
できます。

市販の専門ソフトは、「この語はポジティブ」「この語はネガティブ」という
できあいの基準を持っていることが多いですね。しかし、どの語がポジティブ
でどの語がネガティブかといった点は、分野によって変化する場合があります。
たとえば、輸出産業では「円高」はネガティブな語でしょうが、輸入産業では
同じ「円高」でもポジティブな意味あいになるでしょう。

この点で、自分の分野というか、自分の手元のデータというかに適した形で、
「この語はポジティブ」「この語はネガティブ」という基準を、機械学習で作
ることができます。たとえば今回の例文3つであれば、「値上げ」「納得」
「説明」はすべてネガティブな語として認識されるでしょう。ネガティブな度
合いは「値上げ」「納得」が同等に強く、「説明」はやや劣るといった形です
ね。

よって、市販ソフトの基準をそのまま使うよりは精度が上がることを見込める
と思うのですが、どこまで上がるかというと難しいですね。スパム判別くらい
ならほとんど100%に近くなりますが、もっと繊細な文意となると、なんともい
えません。

まとめると、機械学習は精度がどこまで出るかという点が未知数なのですが、
コーディングよりは労力が少なく、より多くのデータに対応できる可能性が
あります。

# KH Coderでは「分類基準のようなもの」を人間が読み取りやすい形で明示で
# きるという点を重視して、ナイーブベイズという機械学習の手法を採用して
# います。しかし、最近の論文をみていると、ランダムフォレストの方が精度
# は高いという話です。これを使われる場合は、RなりWekaなりをご自身で操
# 作していただく必要があります。

■おわりに

いずれのアプローチにしても、「ボタンを押せばあとは機械が…」というわけ
にはいきません。一定の労力と時間を要するでしょうから、あまり「探索的に
あれこれやってみる」というよりも、なるだけ慎重にどんな分析をするか計画
をたてられることがお勧めです。

もっと書くと、こうした文意をくみ取ることは、必ずしも現状の分析ソフトが
得意としていないことを意識して、調査・分析の設計をできると良いかもしれ
ません。

たとえば、アンケートで性別・年齢などの属性、商品Aを好きか嫌いか、その理
由(自由記述)を書いてもらいます。そうすれば、どんな属性の人が、どんな
理由で商品Aを好きなのか(嫌いなのか)を容易に分析できるでしょう。Blogや
Twitterにいくらたくさんデータがあっても、なかなか同じようには行きません。
※これに似た分析の例が、次号の『社会と調査』にCommentaryとして載ります。
http://jasr.or.jp/online/content/aisr/aisr.html

とはいえ、なかなかそうした設計が難しい場合もあるでしょう。その場合、テ
キストからポジティブ・ネガティブをくみ取る部分は、正確を期すならば、人
間が一定の労力をさく必要があるでしょう。分析ソフトが真価を発揮するのは
むしろ、その次の段階で、どんな理由付けでポジティブ・ネガティブに傾くの
かというあたりを調べるための可視化かなぁと思ったりします。あるいは事前
の探索のための可視化を行い、「これらの語を使えば、多くの文書にコードを
効率的に付与できるんじゃないか」といったあたりをつけるところでしょうか。

人間が考えるための補助、判断するための補助になるような、自動処理・可視
化・集計をどれだけできるかというのが、KH Coder制作時によく考えているこ
とです。

ちょっとどの程度お答えになっているか分かりませんが、以上、ひとまずのご
返信までに。


  [No.931] Re: 「ポジティブ」「ネガティブ」といった文意の分析について 投稿者:袋井  投稿日:2012/03/18(Sun) 19:42:30

樋口先生さま

お世話になります、袋井と申します。


質問者の目線に立った的確でわかりやすいご説明、
更に質問者の期待を超える役に立つご教示をいただき、
ありがとうございました。


> 人間が考えるための補助、判断するための補助になるような、
> 自動処理・可視化・集計をどれだけできるかというのが
> KH Coder制作時によく考えていることです。

いいお話を伺うことができました。

私もソフトの自作をすることはございますが、
設計方針をお聞きするというのは大変に参考になります。
ありがとうございました。



> コーディングルールを書くことで分類の基準を記録して手元に残すことができます。

> 学術用途であれば、これらのメリットのために労力をさく価値はあると考えています。


分類基準の仕様をコーディングルールとして明示化することは、とても意義があると思います。

しかし、
私が企業人であり、対象が質の良くない大量データであることを考えると(お客さま対応のコールセンターなどの入電など)
どこまで労力を投入できるか、自信はありません。



> 機械学習は精度がどこまで出るかという点が未知数なのですが、
> コーディングよりは労力が少なく、より多くのデータに対応できる可能性が
> あります。
>
> RなりWekaなりをご自身で操作していただく必要があります。

Rは毎日コーディングしています(自宅でも会社でも)。
Wekaもお気に入りの道具の一つです。

余談となりますが、
機械学習には強い興味があり、色々なソフトを触っていた時期がございます。


機械学習を適用する前提条件として、以下を考えたいと思います。

> その場合、テキストからポジティブ・ネガティブをくみ取る部分は、
> 正確を期すならば、人間が一定の労力をさく必要があるでしょう。

文意を表すタグや意味フラグなどを付与することは、機械学習の計算精度に大きく貢献しますので、
ここは、人手で労力をかける価値があると考えます。



> 事前の探索のための可視化を行い、
> 「これらの語を使えば、多くの文書にコードを効率的に付与できるんじゃないか」
> といったあたりをつけるところでしょうか。

上述しました、文意を表すタグや意味フラグなどの手がかりを得ることに、
事前調査で可視化をうまく活用することを考えたいと思います。


貴重なご助言をいただきまして、誠にありがとうございました。
心より御礼を申し上げます。