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

  [No.1489] 関連語検索の共起ネットワーク 投稿者:油山  投稿日:2013/10/26(Sat) 08:15:05

樋口先生、

お世話になります、油山と申します。


関連語検索の共起ネットワークで不具合に遭遇しましたので、ご報告させていただきます。

よろしくお願いいたします。

−−−−−
ブログ分析を進めております。
特定の場合ですが、以下の不具合が発生します。
・特定の語 ; 省エネ
・類似度の閾値th; 0.1前後

再現性がございます。


まず、関連語検索の画面から共起ネットワークを実行すると(デフォルト設定で実行)、
本来ならば、target_wordsが矩形表示されるはずですが、表示されません。

エラー等の表示はありません。

その場合、更に、「調整」で「すべての語を小さめの円で表示」にすると、エラーが表示されます。

※末尾に、Stack Traceのエラー内容を添付します


類似度の閾値thの値を下げていくと、ある時点から、正常に、target_wordsが矩形表示されるようになります。


手がかりが乏しい状況ですが、まずはご報告させていただきます。

よろしくお願いいたします。


※Stack Traceのエラー内容
--- Begin Traceback ---
Can't use string ("0") as a HASH ref while "strict refs" in use at
/<C:\khcoder20130805\kh_coder.exe>plotR/network.pm line 282.
plotR::network::new at /<C:\khcoder20130805\kh_coder.exe>plotR/network.pm
line 282
gui_window::r_plot_opt::selected_netgraph::calc at
/<C:\khcoder20130805\kh_coder.exe>gui_window/r_plot_opt/selected_netgraph.pm
line 44
gui_window::r_plot_opt::__ANON__ at
/<C:\khcoder20130805\kh_coder.exe>gui_window/r_plot_opt.pm line 58
Tk callback for .toplevel20.button1
Tk::__ANON__ at /<C:\khcoder20130805\kh_coder.exe>Tk.pm line 250
Tk::Button::butUp at /<C:\khcoder20130805\kh_coder.exe>Tk/Button.pm line 175
<ButtonRelease-1>
(command bound to event)


  [No.1491] Re: 関連語検索の共起ネットワーク 投稿者:HIGUCHI Koichi  投稿日:2013/10/26(Sat) 18:27:55

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

> target_wordsが矩形表示されるはず

ときおり、矩形表示されない場合があります。これは現在のところ、そういう
仕様となっております。

作成の流れとしては、関連語検索によってプロットに用いる語を選んだ上で、
target_words(検索対象語)が出現している文書だけを使って、共起の強さ(
Jaccard係数)を計算しています。そして(デフォルトでは)上位60ペアを線
(edge)で結んで、共起ネットワークを作成しております。

多くの場合は、この上位60ペアの中にtarget_wordsが入るのです。しかし共起
の構造によっては、この上位60ペアの中からtarget_wordsが漏れる場合があり
ます。この場合、target_wordsは共起関係を持たないということになり、共起
ネットワーク上にあらわれません。ここで、描画数を60よりも増やしたり、Ja
ccard係数の閾値(th)を下げると、target_wordsも共起関係を持つようにな
り、共起ネットワーク中に登場することとなります。

したがって、関連語検索の共起ネットワークを解釈していただくときには、注
意していただきたい点がいくつかあります。(1)登場する語はすべて、検索語
(target_words)と共起関係があったものです。たとえ、検索語と直接線でつ
ながっていなくても、です。(2)検索語(target_words)と他の語の共起関係
よりも、他の語と他の語の共起関係の方が強かった場合、検索語(target_wor
ds)はネットワーク上にあらわれない場合があります。

データ全体を使って共起関係を計算すれば(2)のようなことはまず起こりませ
ん。しかし、KH Coderでは「検索語が出現している文書群」に注目することに
しています。これによって検索語を変えると「語Aの周囲と、語Bの周囲とでは、
同じ語群でも共起の様子がちょっと変わっている」といったことを見つけられ
るようになります。ただ、「検索語が出現している文書群」の中で共起の強さ
を計算すると、(2)のようなことがときおり起こります。これが起こらないよ
うに、Jaccard係数に何らかの「味付け」を加えれば良いのかもしれませんが、
目下の所、これは行っていないのです。


> その場合、更に、「調整」で「すべての語を小さめの円で表示」にすると、
> エラーが表示されます。

これは単なるバグでしたので、修正を行いました。こちらのテスト版ですでに
修正しております。
http://khcoder.info/psnl/tmp/kh_coder.exe

現在お使いのkh_coder.exeのファイル名をkh_coder.exe.bakのように変更した
上で、修正版kh_coder.exeを同じ場所にコピーしてお試しください。

おかげさまで、また1つ、バグを直すことができました。
お礼申し上げます。

p.s.
「Rを用いた推定または描画に失敗しました」画面が(複数回)表示されて、
その後Stack Traceが出る場合、Stack Traceの内容にはあまり意味がありませ
ん。最初の「Rを用いた推定または描画に失敗しました」画面の内容がもっと
も重要で、デバッグに役立ちます。


  [No.1492] Re: 関連語検索の共起ネットワーク 投稿者:油山  投稿日:2013/10/26(Sat) 19:46:59

樋口先生、

お世話になります、油山と申します。

ご丁寧にご説明してくださいましたので、よく理解できました。
ありがとうございました。


> 「Rを用いた推定または描画に失敗しました」画面が(複数回)表示されて、
> その後Stack Traceが出る場合、Stack Traceの内容にはあまり意味がありません。
> 最初の「Rを用いた推定または描画に失敗しました」画面の内容がもっとも重要で、
> デバッグに役立ちます。

もし、今後、不具合と思われる事象に遭遇した場合には、
これに沿ってご報告をいたします。


ありがとうございました。


  [No.1493] Re: 関連語検索の共起ネットワーク 投稿者:油山  投稿日:2013/10/26(Sat) 20:16:28

樋口先生、

お世話になります、油山と申します。


先生、もう一点、ご確認させてください。

> 作成の流れとしては、関連語検索によってプロットに用いる語を選んだ上で、
> target_words(検索対象語)が出現している文書だけを使って、共起の強さ
> (Jaccard係数)を計算しています。
> そして(デフォルトでは)上位60ペアを線(edge)で結んで、共起ネットワークを
> 作成しております。

これは、以下の手順で作成した共起ネットワークと同じと理解してよろしいでしょうか?

・target_words(検索対象語)を指定するコーディングルールを記述し、
 「部分テキストの取り出し」を実行する

・取り出した部分テキストを読み込むプロジェクトを新規作成し、
 抽出語−共起ネットワークを実行する
 (デフォルトでは)上位60ペアを線(edge)で結んで、共起ネットワークを作成する


よろしくお願いいたします。


  [No.1494] Re: 関連語検索の共起ネットワーク 投稿者:HIGUCHI Koichi  投稿日:2013/10/26(Sat) 20:23:52

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

ほぼ同じというか、かなり近いと思います。ただ、共起の計算は同じですが、
ネットワーク作成に使う語の選択が少し異なります。

こちらのスレッドがご参考になるかもしれません。
http://khcoder.info/cgi-bin/bbs_khn/khcf.cgi?no=1160&mode=allread


  [No.1495] Re: 関連語検索の共起ネットワーク 投稿者:油山  投稿日:2013/10/26(Sat) 21:00:23

樋口先生、

お世話になります、油山と申します。

ご丁寧にご説明してくださいましたので、よく理解できました。

過去のスレッドも読んで勉強していますが、量が多いために、読み込みができておりません。

重複する投稿は避けるようにいたします。

ありがとうございました。


  [No.1498] Re: 関連語検索の共起ネットワーク 投稿者:油山  投稿日:2013/10/27(Sun) 13:39:42

樋口先生、

お世話になります、油山と申します。

ご丁寧にご説明してくださいましたので、よく理解できました。
ありがとうございました。


細かいことで大変に恐縮ですが、もう一点、教えてください。
よろしくお願いいたします。


> こちらのスレッドがご参考になるかもしれません。
> http://khcoder.info/cgi-bin/bbs_khn/khcf.cgi?no=1160&mode=allread


以下、抜粋して再掲します。

> (1)【抽出語】−【関連語検索】−【共起ネットワーク】
>
> (2)【部分テキストの取り出し】で、着目する抽出語ごとのファイルを個別作成し、
>   これを用いて、プロジェクトの新規作成、
>   【抽出語】−【共起ネットワーク】
>
> 共起の計算については、いずれの場合も、注目語が出現している文書だけが
> 使用されます。
>
> 異なるのはネットワーク描画に用いる語の選択です。
> (2)の場合、注目語が出現している文書群に、単に多く出現している語が選択されます。> それに対して(1)の場合、データ全体と比較して、注目語が出現している文書群に特に
> 多く出現している抽出語が選択されます。
> (1)の場合、デフォルトでは、語の選択にはJaccard係数が用いられます。


上記の引用箇所のうち、
> それに対して(1)の場合、データ全体と比較して、注目語が出現している文書群に特に
> 多く出現している抽出語が選択されます
は、以下の理解でよろしいでしょうか?


まず、
khcoder_tutorial.pdfの「3.2 それぞれの部に特徴的な言葉」
と同じやり方を適用して、
(1)(2)について各々、特徴語のリストアップ、Jaccard係数を算出する

次に、
(2)と比較して(1)の値が大きい語を、
(1)、つまり、関連語の特徴語として選択している


このような理解でよろしいでしょうか。

ご確認させてください。
よろしくお願いいたします。


  [No.1499] Re: 関連語検索の共起ネットワーク 投稿者:HIGUCHI Koichi  投稿日:2013/10/27(Sun) 14:19:56

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

> khcoder_tutorial.pdfの「3.2 それぞれの部に特徴的な言葉」
> と同じやり方を適用して、
> (1)(2)について各々、特徴語のリストアップ、Jaccard係数を算出する

いえ、そうした形での処理は行っていません。「関連語検索」機能を使って特
徴語のリストアップを行っている、すなわちkhcoder_tutorial.pdfの「3.2 そ
れぞれの部に特徴的な言葉」と同じ方法で特徴語を取り出しているのは、(1)
の手順のみです。(2)では単に頻出語を取り出しています。

「父」という語を中心にして、その周辺のネットワークを描く場合を考えてみ
ましょう。データとしては漱石「こころ」を想定します。

(1)の手順では、「関連語検索」機能で「父」に関連する語を検索します。そ
してそれらの語を共起ネットワーク作成に用います。この結果として、データ
全体に比して、「父」という語を含む文書に特に多く出現する語が選択されま
す。したがって、例えば「思う」のようにデータ全体に頻出している語は除外
される傾向があります。そして、例えば「母」のように、「父」と共に多く出
現している語が選択される傾向があります。

それに対して(2)の手順では、「父」という語を含む文書だけを取り出し、そ
こに単に頻出する語を用います。データ全体との比較を行っていません。した
がって、例えば「思う」のように、データ全体に頻出しているような語も選択
されます。

以上のような形で、語の選択の仕方が異なります。語を選択してしまえば、そ
の後の共起の強さの計算・ネットワーク作成は同じ処理内容です。


  [No.1500] Re: 関連語検索の共起ネットワーク 投稿者:油山  投稿日:2013/10/27(Sun) 19:19:04

樋口先生、

お世話になります、油山と申します。

ご丁寧に何度も何度もご説明してくださいましたので、よく理解できました。
ありがとうございました。

心より御礼を申し上げます。