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

  [No.164] 別形式での抽出結果表示 投稿者:松川太一  投稿日:2006/05/26(Fri) 11:51:18

松川@総合地球環境学研究所です。
自由回答の分析に着手することになってしまいました。

KH Coderには用意されていない形式で語の抽出結果を表示
させたいのですが,以下のふたつの形式について難易度や実現
方法のヒント等を教えていただけないでしょうか。

【1:全ケースについて,抽出された基本語を品詞別に表示】
例えば,次のテキストについて,1行1ケースとして前処理を
おこなう。

=====ここから
大阪で生まれた女やさかい
東京へは,ようついて行かん
踊り疲れたディスコの帰り
電信柱にしみついた夜
=====ここまで

そのあと語の抽出結果を下記のような形式(品詞分類は適当)
で表示させるにはどうすればよいかという質問です。

=====ここから(タブ区切り)
ケース	名詞	地名	タグ	動詞	動詞B	副詞B	名詞C
1	  	大阪	さかい	生まれる	  	  	女
2	  	東京	  	ついて行く	  	よう		
3	踊り	  	  	疲れる				
3	ディスコ						
3	帰り							
4	電信柱	  	  	  	しみつく		
4 	夜							
=====ここまで(タブ区切り)					

この形式だとひとつのケース内で同一品詞が複数抽出
されるたびに行数が増えるのがややこしそうな……。

【2:全ケースについて,形態素に分割済みの文を表示】
上記(1)だと手間がかかるならば, KH Coderの「語の
抽出結果」で表示される「文(分割済み)」のような
ものを全ケース表示するには,どのようなSQL文を書け
ばよいでしょうか。

試しに,次のようなSQL文を書いてみました(この場合,
表層語ではなく基本語を表示)。

=====ここから
SELECT hyosobun.dan_id, genkei.name
FROM  hyosobun
LEFT JOIN hyoso ON hyosobun.hyoso_id=hyoso.id
LEFT JOIN genkei ON hyoso.genkei_id=genkei.id
ORDER BY hyosobun.id
=====ここまで

これだと抽出される形態素の数だけ行数がふえるので,
これを1ケース1行で形態素ごとにスラッシュをいれた形
で表示させるには,どう対処すればよいでしょうか……。

なんとなく KH Coder の設計思想からはずれている気も
しますが,以上の点についてコメント等いただければと
思います。

お手数かけますが,よろしくお願いいたいます。


  [No.165] Re: 別形式での抽出結果表示 投稿者:HIGUCHI Koichi  《URL》   投稿日:2006/05/27(Sat) 00:04:01

樋口です。ご無沙汰しております。
書き込みありがとうございます。

いずれの形式にしても、SQLだけでは苦しいと思います。(SQLを極めれば
どうか分かりませんが、おそらく、SQLで取得したデータをPerl等で整形
するのが近道であろうかと思われます)

対策なのですが、こちらから新しいバージョンのKH Coderをダウンロード
していただけますでしょうか。これは、近い将来に2.b.7として、公開す
る予定のものです。「plugin」というフォルダが、kh_coder.exeと同じ場
所にあるのが、このバージョンの特徴です。
http://khcoder.info/psnl/.khc/khcoder-2b7%5bpre%5d.zip
(kh_coder.exeを上書きし、pluginフォルダをコピーして下さい)

加えて、ちょっと急ごしらえのものなのですが、下記ファイルをダウンロ
ードして、当該の「plugin」フォルダにコピーして下さい。コピーしてか
らKH Coderを起動すると、メニューの「ツール」「プラグイン」という箇
所に新しいコマンドがあらわれると思います。
http://khcoder.info/psnl/.khc/matsukawa_san.pm

この新しいコマンドをお使いいただけば、【1】の形式での出力が行えます。
現状では、抽出語が存在しない品詞の列、すなわち空の列も作成されるので
すが、これを作成しないようにするためには、matsukawa_san.pmをテキスト
エディタで開き、58行目付近を以下のように修正して下さい。

修正前:
		SELECT khhinshi.name
		FROM   khhinshi, hselection
		WHERE
			khhinshi.id = hselection.khhinshi_id
			AND hselection.ifuse = 1
		ORDER BY khhinshi.id

修正後:
		SELECT khhinshi.name, sum(genkei.num) as freq
		FROM   khhinshi, hselection, genkei
		WHERE
			khhinshi.id = hselection.khhinshi_id
			AND khhinshi.id = genkei.khhinshi_id
			AND hselection.ifuse = 1
		GROUP BY khhinshi.id
		ORDER BY khhinshi.id

なお、データ中にH1〜H5までのタグがある場合、このコマンドの出力は不正
確なものになります。ご注意下さい。なにぶん急ごしらえのものですので、
その他にもご質問等ございましたら、ご遠慮なくお問い合わせ下さい。

それでは、どうぞよろしくお願いいたします。

p.s.
【1】のような形式は、「目で見て確認するために」ということでしょうか?
この形式のファイルを統計ソフト等でどのように使うのか、ちょっと想像でき
なかったですが、、、差し支えなければ、ご教示下さいませ。


  [No.166] 追伸: 【2】の形式について 投稿者:HIGUCHI Koichi  《URL》   投稿日:2006/05/27(Sat) 00:20:50

追伸です。

上記の新しいバージョンでは、
 ・「ツール」「文書」「『文書x抽出語』表の出力」「不定長CSV(WordMiner)」
 ・「ツール」「プラグイン」「『文書x抽出語(表層語)』表の出力...」
という2つのコマンドで、データ出力を行った際、【2】の形式に近い列が出力される
ようになっています。あわせてお試しいただけましたら幸いです。

それでは、よろしくお願いいたします。


  [No.169] ありがとうございました(そして不具合の報告) 投稿者:松川太一  投稿日:2006/05/29(Mon) 23:40:05

迅速に対応していただき,ありがとうございます。

本日,いっしょに研究している方々と分析の進め方について
議論していました。その際に役立ったのは,結果的に【2】の
出力のほうでした。これは Word Miner 用の不定長 CSV 出力
ということは,すでに公開されていたヴァージョンにもあった
はずで,まったく気がつかなくてすみません……。

【2】の利用法ですが,CSVファイルを,半角空白をスラッシュ
に置換する。1段落1行になっているので,分割前のテキストを
形態素解析結果の横に貼り付けて見くらべる。こんな感じです。

以上からもわかるように,【1】と【2】どちらも「目で見て
確認するため」の出力ということになります。おそらく最初
から最後まで dictionary-based で分析を進めていくことに
なりそうで(だから KH Coder の設計思想からはずれている),
そのコーディング・ルールを作成するときに「目で見て確認
する」ことが要求されていました。

その理由はいくつかあるのですが,想定している分析方針に
由来する面がおおきいです。はっきりと書けないので抽象的
で仮想的な話になりますが,分析方針として自由回答を英語
の第2文型のようなものとしてとりあえず解釈したいと考えて
います。各回答内容について S は何か,V は何か,C は何か
をその省略も含めて考えていくということです。

文章の骨格だけを考えれば,形容詞は C にしかならないので
比較的簡単に処理できます。問題は名詞で,これは S にも C
にもなります。この判定は形態素解析による品詞分類ではお手
上げで,ひょっとしたら現在の日本語構文解析の技術でも困難
なのかもしれません。

そんなわけで,第2文型的に解釈するには形態素解析による
品詞別の出現回数を検討するよりは,元のテキストを「目で
見て確認する」ほうが確実であり,そのためには前出の形式
の出力があったほうが作業しやすいと判断しました。ただし,
コーディング・ルールは形態素をつかったほうが簡潔に記述
できるので,そこは形態素解析を援用しようということです。

……と,実際には英語の第2文型で日本語のテキストを解釈
するわけではありませんが,「目で見て確認」を重視してた
理由を比喩的に説明すればこんな感じです。「係り受け」の
解析を援用する案もありましたが,解析精度の問題と,幸か
不幸か「目で見て確認」できるだけのデータ量なので……。

最後に,ちょっと不具合をらしきものを指摘しておきます。
「ツール」→「文書」→「「抽出語×文脈ベクトル」表の出力」
→「SPSSファイル」で諸パラメータを設定すると,datファイル
spssシンタックスファイルが作成されます。そのシンタックス
ファイル中の「variable labels」の直下1行目〜3行目あたりで
文字化け?がおきます。「「文書×抽出語」表の出力」で作成
されるシンタックスファイルだと,「variable labels」の
直下1行目あたりで文字化け?がおきます。どちらも変数ラベル
の文字列から文字化けらしきものがはじまり,ラベルを括る
後ろのカッコが開いたままになったりします。
そちらの環境でも再現されるか確認してください。

当分,自由回答の分析は続きそうなので,また何かあったら
お世話になるかと思いますが,よろしくお願いいたします。


  [No.170] SPSSシンタックスの不具合 投稿者:HIGUCHI Koichi  《URL》   投稿日:2006/05/30(Tue) 23:13:10

お世話になります、樋口です。

リクエストやバグレポートはソフト改善に結びつくことが多いので、それ自
体でも大変ありがたいのですが、今回はそれに加えて、背景にある意図まで
丁寧にお教えいただき、大変ありがとうございました。

「目で見て確認」が楽な作業だとはまったく思いませんが、英語圏ではまさに
S-V-Oを(自動?)抽出しての分析も行われているようですし、何かおもしろそ
うなことをなさっているのだろうなぁと勝手に想像しております。
KH Coder(というか私)が想定していなかった方法ですので、どの程度お役立
ていただけるか分かりませんが、可能な範囲で、お使いいただけましたら幸い
です。


さて、SPSSシンタックスの文字化けなのですが、私の環境では、問題を再現で
きずにおります。
一度試しに、同梱のチュートリアルファイル(kokoro2.txt)で、出力を行って
みていただけますでしょうか? また、SPSSのみならず、テキストエディタで
開いてみても、文字化けしておりますでしょうか?

次に、特定のデータでのみ文字化けする場合、「品詞別・出現回数順リスト」
を眺めていただいて、どの語から文字化けが始まっているのかを推測していた
だくことは可能でしょうか??

お手すきの折で結構ですので、上記ご確認をいただけましたら幸いです。

それでは、どうぞよろしくお願いいたします。


  [No.171] Re: SPSSシンタックスの不具合 投稿者:松川太一  投稿日:2006/05/31(Wed) 16:17:14

標題の件

(1)チュートリアルファイル(kokoro2.txt)では文字化けは生じない

(2)エディタで開いても,文字化けは確認できる

(3)手元にテキストデータが二つあるので,それぞれのファイルを前処理
したものと,二つのデータを HTML の見出しタグでマーキングしてひとつ
のファイルして前処理したものの3つで「「抽出語×文脈ベクトル」表の出力」
をやってみました。csvでの出力結果との比較から,文字化けが生じている
語は次のように推測されます。

■ファイル1
抽出語'(直前の「 word '」までは問題なし)
空気'(直前の「 cw0 'cw: 」までは問題なし)

■ファイル2
抽出語'(直前の「 word '」までは問題なし,ファイル1と同じ文字化けに見える)
水遊び'(直前の「 cw0 'cw: 」までは問題なし)
魚釣り'(直前の「 cw1 'cw: 」までは問題なし)

■ファイル1とファイル2を統合したもの
抽出語'(直前の「 word '」までは問題なし,ファイル1と同じ文字化けに見える)
空気'(直前の「 cw0 'cw: 」までは問題なし,ファイル1と同じ文字化けに見える)

なお,ファイル1とファイル2と統合したものだと,ファイル2で文字化けが生じていた
「水遊び」「魚釣り」というラベルも正しく出力されています。

また「文書×抽出語」表の出力でも,上と同じラベルで同様の文字化けが起きます。

以上,取り急ぎご報告まで。


  [No.172] Re: SPSSシンタックスの不具合 投稿者:HIGUCHI Koichi  《URL》   投稿日:2006/06/01(Thu) 03:59:47

樋口です。大変お世話になります。

お忙しい中、チェック&ご報告いただきまして、本当にありがとうございます。

データに依存するようですが、「特定の語(文字)があると化ける」というよ
うな単純な問題でも無いようですね…。

大変恐縮なのですが、お手すきの折でまったく問題ございませんので、さらに
以下をお試しいただけますでしょうか。

http://khcoder.info/psnl/.khc/m_spss_test_0.pm
この(↑)ファイルをダウンロードし、「plugin」フォルダにコピーして下さ
い。コピー後にKH Coderを起動すると、「ツール」→「プラグイン」→「松川
さん」→「『文書x抽出語』表の出力(SPSS)文字化けチェック用」というコマ
ンドが現れると思います。このコマンドから出力を行い、文字化けが直るかど
うか、ご確認いただけますでしょうか。

p.s.
せっかく書き込んでいただいたメッセージが、またも誤って「スパム」と判定
され、先程まで表示されておりませんでした。申し訳ございません。


  [No.173] Re: SPSSシンタックスの不具合 投稿者:松川太一  投稿日:2006/06/01(Thu) 15:11:39

> 大変恐縮なのですが、お手すきの折でまったく問題ございませんので、さらに
> 以下をお試しいただけますでしょうか。

あたらしいモジュールを試してみました。
その結果,昨日処理した三つのファイルすべてにおいて,
同じ文字化けが再現されました。


  [No.175] 出力用プラグイン 投稿者:HIGUCHI Koichi  《URL》   投稿日:2006/06/03(Sat) 02:18:09

> > 大変恐縮なのですが、お手すきの折でまったく問題ございませんので、さらに
> > 以下をお試しいただけますでしょうか。
>
> あたらしいモジュールを試してみました。
> その結果,昨日処理した三つのファイルすべてにおいて,
> 同じ文字化けが再現されました。

ご連絡ありがとうございます。

このプラグインで出力を行うと、「出力シンタックスファイル名_chk1.txt」とい
うような名称のファイルが作成されると思います。こちらのファイルもご確認い
ただけますでしょうか。

# このファイルは文字コードがEUCになっています。このファイルの文字コードを
# Shift-JISに変換したものが、出力されるシンタックスファイルとなります。

## 秀丸やサクラエディタであれば、ファイルを開くダイアログボックス(?)で文
## 字コードを指定して開くことができます。

重ねてのお願いで大変恐縮なのですが、お手すきの折で結構ですので、今しばらく
お付き合いいただけましたら幸いです。


  [No.179] Re: 出力用プラグイン 投稿者:松川太一  投稿日:2006/06/03(Sat) 03:18:48

文字化けの原因が,ようやくわかってきました。

> このプラグインで出力を行うと、「出力シンタックスファイル名_chk1.txt」とい
> うような名称のファイルが作成されると思います。こちらのファイルもご確認い
> ただけますでしょうか。

このファイルの1行目に,DATファイルが格納されているパスが書いてあります。
ここに2バイト文字が入っていると文字コード変換で不具合が生じてしまい,
変数ラベルの一部で文字化けが起こることがあるようです(うまく変換される
場合もあるようで,その差が何に由来しているのかわかりませんが)。

ここ数日あつかってきた例の3つのテキストデータの場合,フォルダ名,
DATファイル名ともに2バイト文字が含まれていました。そこで同じデータ
でフォルダ名,ファイル名を半角英数に変更してやったところ,問題である
SPSS シンタックスでの文字化けは起こりませんでした。

なんでこんなことに気づいたかといえば,わたしは文字コードを自動判別
してくれるエディタをつかっているのですが,chk1.txt は Shift-JIS と
して認識されたからです。どうやら1行目のパスの2バイト文字が Shift-JIS で
書き込まれていたようです(変数ラベルはちゃんと EUC でしたが)。

そこで確認のため,チュートリアルファイルでもファイル名,フォルダ名を
2バイト文字に変えてSPSSシンタックスをプラグインで出力させてみました。
やはり chk1.txt 1行目のパスは Shift-JIS のようでした。しかし,最終的な
シンタックスファイルでの文字化けは回避されました。このあたりは,文字
コード変換の際の運次第なのかもしれません。

……と,ここまで書いてみたものの「ファイル名やフォルダ名での全角文字の
禁止」について,すでにマニュアルに書いてあったりしたらすみません。

以上,取り急ぎご報告まで。


  [No.180] おそらく解決 投稿者:HIGUCHI Koichi  《URL》   投稿日:2006/06/03(Sat) 05:10:27

ありがとうございます! こちらでも文字化けを再現できました!
問題を再現できずに頭を抱えていたので、感激しています。

実際、SPSSシンタックスの出力プログラムでは、ファイル名に日本語が含ま
れている可能性を考慮していませんでした。2バイト文字を含むファイル・
フォルダ名は(未だに無意識に)避けていたので、なかなかこのバグに気づ
きませんでした。

一応、出力プラグインを更新しましたので、よろしかったらお試し下さい。
http://khcoder.info/psnl/.khc/m_spss_test_0.pm
おそらく、解決しているのではないかと思います。

次の公開バージョンで修正しますが、当面、もし必要な場合は、2バイト文
字を含まないフォルダ・ファイル名で出力していただくという方法で、対処
して下さいませ。(文脈ベクトルのSPSSシンタックス出力を行う場合)

> ……と,ここまで書いてみたものの「ファイル名やフォルダ名での全角文字の
> 禁止」について,すでにマニュアルに書いてあったりしたらすみません。

何年か前まではマニュアルに書いていたのですが、最近の版では削除しています。
削除したからには、(いつまでも時代遅れなことをしていないで)自分でも2バイ
ト文字のファイル・フォルダ名を使うべきだったような気がします…。

なにはともあれ、お忙しい中、根気よくお付き合いをいただき、しかもバグを特
定していただきまして、まことにありがとうございました。重ね重ね、お礼申し
上げます。


  [No.181] Re: おそらく解決 投稿者:松川太一  投稿日:2006/06/03(Sat) 09:09:04

> 一応、出力プラグインを更新しましたので、よろしかったらお試し下さい。

例のテキストファイル(のうちのひとつ)で試してみました。
出力された SPSS シンタックスに文字化けはなかったです。

> 次の公開バージョンで修正しますが、当面、もし必要な場合は、2バイト文
> 字を含まないフォルダ・ファイル名で出力していただくという方法で、対処
> して下さいませ。(文脈ベクトルのSPSSシンタックス出力を行う場合)

当分のあいだ「目で見て確認」なので,テキストマイニングのための
出力とは御縁がなさそうです……。

> なにはともあれ、お忙しい中、根気よくお付き合いをいただき、しかもバグを特
> 定していただきまして、まことにありがとうございました。重ね重ね、お礼申し
> 上げます。

いえいえ,こちらこそ,いつも迅速にコードを書いて対処していただき
ありがとうございました。


  [No.176] 入力ファイルのチェック用プラグイン 投稿者:HIGUCHI Koichi  《URL》   投稿日:2006/06/03(Sat) 02:36:57

分析対象ファイルをチェックしていただくためのプラグインを作成しました。

http://khcoder.info/psnl/.khc/m_spss_test_1.pm
これを「plugin」フォルダにコピーしていただきますと、「テキストファイル
(SJIS)のチェック」というコマンドがあらわれます。

このコマンドを実行し、分析対象のテキストファイルを選択していただけます
でしょうか。

ただし、分析対象ファイルの文字コードをあらかじめSJISにしておいて下さい。
# 秀丸・サクラエディタ等の「名前を付けて保存」ダイアログで、文字コードを
# 選択・変換できます。※文字コードを変換される際には、バックアップをとっ
# ていただくか、別名での保存を行ってください。

このコマンドでは、もしもファイル中に文字化けや制御コードが見つかった場合、
それらを削除したファイルを作成できます。(「名前を付けて保存」のダイアロ
グが出ます)
この場合は、削除・修正されたファイルを新たなプロジェクトとしてKH Coderに
登録し、SPSSシンタックスの出力をお試し下さいませ。

なお、このチェックはファイル3でのみ行っていただけましたら、それで十分かと
思います。

お手すきの折にでも、お試しいただけましたら幸いです。


  [No.178] Re: 入力ファイルのチェック用プラグイン 投稿者:松川太一  投稿日:2006/06/03(Sat) 03:31:30

返信を書いているあいだに,あらたなプラグインの提供が。

さきほどの投稿させていただいた内容から判断して,もう必要ないだろう
……と思いつつも,とりあえず試してみました。

結果は以下のとおり。

「文字化け・機種依存文字を含む行数:0」
「制御文字を含む行数:0」


  [No.182] コード間の共起数など 投稿者:松川太一  投稿日:2006/06/26(Mon) 23:00:34

松川です。このままツリーにぶらさげます。

無いものねだりになるかもしれませんが,以下の2点について質問します。

1)コード間で共起する文章の数を確認する方法はあるでしょうか。コード間の連関についても「抽出語 連関規則」コマンドで「全体」「共起」「連関の指標」等が出力されるのが理想ですが,「コード間関連」コマンドでJaccard類似性係数だけでなく共起数が表示されるような様式でも確認することは可能でしょうか。

2)文章中の品詞の有無によってコードを与えるコーディングルールはあるのでしょうか。表現したいコーディングルールのイメージは,次のような感じです。

*副詞あり
[ワイルドカード]-->副詞

*副詞なし
! [ワイルドカード]-->副詞

これらのうち,特定の品詞がある文書にコードをふる場合は,「品詞別 出現回数リスト」で特定の品詞のカラムにあらわれたすべての語を1つずつコーディングルールとして指定すれば,手間はかかりますがコードを与えることができそうです。しかし同様の手法で特定の品詞がない文章にコードを与えることはことはできません。

後者の場合,先頭にnotをつけて,あとはすべてand notでつないだコーディングルールをひとつ書けば不可能ではないのか……。しかし,いずれにしても簡単に記述できるルールはないだろうかと考えてしまいます(が,思いつきません)。

以上2点について,お知恵を拝借できればと思います。
お手数かけますが,よろしくお願いします。


  [No.183] Re: コード間の共起数など 投稿者:HIGUCHI Koichi  《URL》   投稿日:2006/06/27(Tue) 01:28:37

いつもお世話になります、樋口です。
書き込みありがとうございます。

あくまでとりあえずの対処ですが、以下のような方法が考えられます。

1)コード間で共起する文章の数

文書検索画面で、Ctrlを押しながらコードをクリックすることでコードを複数
選択し、(コードの)AND検索を行えます。これによって、一応、任意の2つの
コードが共に与えられた文書の数を知ることができます。

2)文章中の品詞の有無によってコードを与える

「ツール」→「SQL文入力」→「その他」で以下のようなSQLを実行します。
これは、各文書(段落)の中に副詞が含まれているかどうかを、0-1で出力
するSQLです。一行目の「副詞」という部分を変更することで、他の品詞に
も対応できます。

---------------------------------------------------------------------
SELECT  IF(SUM( IF( khhinshi.name = '副詞', 1, 0 ) ) > 0, 1, 0)
FROM dan, hyosobun, hyoso, genkei, khhinshi
WHERE
      dan.dan_id = hyosobun.dan_id
  AND dan.h5_id  = hyosobun.h5_id
  AND dan.h4_id  = hyosobun.h4_id
  AND dan.h3_id  = hyosobun.h3_id
  AND dan.h2_id  = hyosobun.h2_id
  AND dan.h1_id  = hyosobun.h1_id
  AND hyosobun.hyoso_id = hyoso.id
  AND hyoso.genkei_id = genkei.id
  AND genkei.khhinshi_id = khhinshi.id
GROUP BY dan.id
INTO OUTFILE 'c:\\temp.txt' FIELDS TERMINATED BY '\t'
---------------------------------------------------------------------

出力されたファイル(c:\temp.txt)の一行目に「副詞有無」といった変数名
を追加して保存します。そして、このファイルを外部変数ファイルとして(
段落単位に)読み込みます。

これによって、以下のようなルールを書けるようになります。

---------------------------------------------------------------------
*副詞無し
<>副詞有無-->0

*副詞有り
<>副詞有無-->1
---------------------------------------------------------------------

※もしコーディングの単位が段落単位でない場合は、その旨お知らせ下さいませ。
 少しSQL文も変わりますので・・・。


2)は一度この操作を行えば、それ以降は当該の外部変数を使えるのですが、、、
1)の方は結構面倒ですよね…。頻繁に1)についての確認が必要になったりします
でしょうか?


  [No.184] Re: コード間の共起数など 投稿者:松川太一  投稿日:2006/06/28(Wed) 01:14:56

迅速に対処していただきありがとうございました。
1),2)ともにうまくいきましたが,もうすこし質問させてください。

1)コード間で共起する文章の数
頻繁に確認が必要というよりは,膨大なコード数になった場合でも一度に共起数が出力できればよいなあと考えていました。その出力形式は,「コーディング・コード間関連」のようなマトリックスではなく(コード数が増えると確認しずらいので),「抽出語 連関規則」のように,ある特定のコードに対してどのようなコードが関連しているのかソーティングされて表示されるとよいなあと。

この出力は,コーディングルールの検討・修正材料として使うつもりでした。これまで「抽出語 連関規則」をつかって特定のコードに密接に関連する抽出語の一覧表を作成し,コーディングルールを検討していました。これは関連の強さによってソートしてくれるので非常に便利です。そこで,コードとコードの関連についても同様の出力は得られないだろうかと。

その際「共起の数」にこだわったのは,連関規則をあらわす指標よりも共起数のほうが分析目的に適っているという判断があったからです。

──と,昨日の質問の背景のようなものを説明した上でさらに質問なのですが,

1-1)「抽出語 連関規則」あるいはその拡張機能として,コード間の関連についても同様の出力が得られるようなコマンドが用意されていないのには,なにか設計思想や分析手法上の理由があるのでしょうか。このような質問をするのは,コーディングルールを検討・修正するためにコード間の共起数を確認するのは,手法上ひょっとしたら問題のある作業なのかもしれないという心配があるからです。

1-2)「抽出語 連関規則」で各種の連関指標や類似性係数ではなく共起の数に着目することには,どのような問題があるのでしょうか。連関規則が紹介されるとき,「相関」ではなく「連関」なので相関係数ではなく……という話はよく目にするのですが,なぜ共起数の大小ではなく連関規則なのかという点がよくわからずにいます(おそらく確率の話がからんでくるのでしょうが)。共起数の大小だけにもとづいて語やコードの関連を語ることがもつ危険性について,何かご存知であれば教えてください。


2)文章中の品詞の有無によってコードを与える
たとえば副詞の有無によってコードを与える場合,KH Coderには「副詞」と「副詞B」というふたつの品詞名があるので,

両方が存在しない場合:0
どちらか一方でも存在する場合:1

という処理を実行しなければなりません。このように2つ以上の品詞名が関連する場合,SQL文をどのように書きかえればよいのでしょうか。

以上,毎度毎度お手数かけますがよろしくお願いします。


  [No.185] Re: コード間の共起数など 投稿者:松川太一  投稿日:2006/06/28(Wed) 01:56:03

上の2)のほうは,べつにSQL文を書きかえなくても,

*副詞無し
<>副詞有無-->0 and <>副詞B有無-->0

*副詞有り
<>副詞有無-->1 or <>副詞B有無-->1

という感じでコーディングルールを書けば(実際に確認していませんが)よさそうですね……。このほうが応用範囲もひろがりそうですし。


  [No.186] Re: コード間の共起数など 投稿者:HIGUCHI Koichi  《URL》   投稿日:2006/06/29(Thu) 06:02:20

樋口です、いつもお世話になります。
書き込みありがとうございます。

■1-1

これは、設計思想どうこうというよりも、単に「コーディング」→「コード間関連」
コマンドの作り込みがもうひとつなだけです…。現状だと、Excelかなにかに出力を
コピーしないと、コード数が多い場合、確認が困難ですね…。

■1-2

ご指摘の通り、確率を(強く?)意識しております。

1) 単語αと単語A
2) 単語αと単語B
3) 単語αと単語C

このような組み合わせについて、関連を測りたいとします。仮に単語A〜Cがまったく
ランダムに各文書に散らばっているとすると、A〜Cのうちでもっとも出現数の多いも
のが、単語αとの共起も多くなるはずです。「それではちょっと…」ということで、
共起の数だけでなく、共起していない数を考慮に入れた指標を使うようにしておりま
す。すなわち、共起していない数(片方だけが出現しているケース数)が多いと、ペ
ナルティが与えられるような指標を使うようにしております。

# コマンドの名前は「連関規則」ですが、私自身は、最近はJaccard係数を使うこと
# が多いです。

■それはそれとして

実際にいくつ共起しているのか確認したくなることは私自身あります。また、「コー
ド間関連」コマンドの出力は、コード数が増えると確認が難しくなる問題がありまし
た。よって、改善版を作ってみました。

例によって、「plugin」フォルダにコピーしてお使い下さい。
http://khcoder.info/psnl/.khc/beta_cod_jaccard.pm

スクロール方式を変えて、Excelの「Window枠の固定」のように、コード名が隠れない
ようにしました。また、一行めのコード名をクリックすると、その行の数値でソート
(降順)が行われます。さらに、共起文書数を計算するオプションを加えました。

次のKH Coder本体のバージョンアップでは「コーディング」→「コード間関連」コマ
ンドにこれらの変更を反映させる予定です。ただ、共起文書数のオプションも追加す
るかどうかは、勘案中です。


  [No.187] Re: コード間の共起数など 投稿者:松川太一  投稿日:2006/06/29(Thu) 22:46:00

松川です。
迅速に対処していただきありがとうございます。いつも無理ばかり言ってすみません。

ふたつ上の記事,コーディングルールを修正していただきありがとうございました
(暗証キーを設定していなかったので,修正できず放置していました……)。

> ■1-1
>
> これは、設計思想どうこうというよりも、単に「コーディング」→「コード間関連」
> コマンドの作り込みがもうひとつなだけです…。現状だと、Excelかなにかに出力を
> コピーしないと、コード数が多い場合、確認が困難ですね…。

コード数が多いと,MS-Excelだとカラム数の制限に抵触してしまう問題があります。
この問題は,新しく作っていただいたプラグインでも,ソート結果をコピーする
ときに直面する問題です。

それくらいコード数が多いと,貧弱な計算機では出力されるまでの処理に時間も
かかります。そういう現実もあり,現在のマトリックス形式での出力ではなく
「抽出語 連関規則」のように特定のコードを指定してやると他のコードとの共起
や連関が出力される形式のほうがよいのかなあ……と考えていました。

> ■1-2
>
> ご指摘の通り、確率を(強く?)意識しております。

語がランダムに出現するという前提であればよくわかります。しかし実際には
ランダムに語が出現する(連関している)わけではない場合に,いろいろな
考え方がでてきてしまうのかもしれません。

あるテキストに特徴的にみられる語の結びつきを10組あげよと言われた場合,
たくさん出現している組み合わせの上位(共起数の上位)10組をあげるのか,
出現数はすくなくともイディオム的,慣用句的な表現という意味で結びつき
の強い語を10組あげるのか。「特徴的」をどう解釈するかという問題ですが,
Jaccard係数は後者の意味で「特徴的」な語の組み合わせを教えてくれるよう
に感じています。

そして,上の問題とは別の新たな質問なのですが……。

KH Coderの品詞体系「その他」のなかに茶筌の品詞名「名詞-接尾-一般」
が含まれています。茶筌でこの品詞として識別された語を「その他」と
いうことで分析から除外するのは望ましくないけれど,助詞や助動詞は
分析に不要だとします。

このような場合,「その他」の品詞のなかから「名詞-接尾-一般」だけを
(コーディングルールの記述時だけではなく)すべての分析で利用できる
ような(たとえば「抽出語 連関規則」のフィルタ設定などで「その他」の
うち「名詞-接尾-一般」だけを分析に取り込めるような)恣意的な品詞の
取捨選択は簡単にできるのでしょうか。

hinshi_chasenファイルでの新しい品詞の指定は,コーディングルールに
おける品詞指定のためのものであり,上記のような目的のためではないと
理解していますが,この理解は正しいでしょうか。

以上,お手数かけますが,よろしくお願いします。

テキスト分析は,細かいことが気になりだすと泥沼にはまっていくようで
どこかで見切りをつけないといけない気がしていますが,もう少しお付き
合い願えればと思います。


  [No.188] Re: コード間の共起数など 投稿者:HIGUCHI Koichi  《URL》   投稿日:2006/06/30(Fri) 11:22:40

お世話になります樋口です。
書き込みありがとうございます。

■1-1

すみません。そこまで多くの(Excelのカラム数制限をこえる数の)コードを
作成されているという可能性にまでは、気が回りませんでした。

http://khcoder.info/psnl/.khc/beta_cod_jaccard.pm
このプラグインですが、少しだけ修正して、「コピー」ボタンの挙動を変更し
ました。ソートが行われている場合は、その列と一番左の見出し列(?)だけを
クリップボードにコピーするようにしました。

※かかっている時間の大半はコーディングを行っている時間で、類似度の計算
そのものはおそらく、すぐに終わっているはずです。将来的には「連関規則」
のような形式も考慮したいと思いますが、ちょっと、すぐには難しいです。申
し訳ありません。

■1-2

繰り返しになりますが、私自身確かに、実際にいくつ共起しているのかは気に
なります。
# それに、人それぞれ「特徴的」をいろいろに解釈してきたからこそ、類似度
# の指標としてもJaccardを含む様々なものが提案されてきたわけですよね。

ただ釈迦に説法のような気がしますが、生の共起の数だけでなく、何らかの形
で「ランダムでない度合い」を計算してくれる指標があった方が(指標を付記
した方が)安心だと思います。(特にアウトプット・分析結果として示す場合)
# この用途であれば、必ずしもJaccard係数でなくても、例えばカイ2乗検定の
# 結果も良いかと思われます。KH Coderでは計算できないので、統計ソフトお
# 使いいただかねばならず、面倒になってしまいますが…。

# ちなみに、Jaccard係数は周辺度数に依存している部分があるため、特に2つ
# のコードの出現数に大きな差がある場合は、(比較的共起が多くても)値が
# 小さくなりがちですね。同じくらいの出現数で、なおかつ共起が多い場合に
# Jaccard係数は大きな値を取りますので、いきおい慣用句的なものが多くなる
# のかもしれません。

■hinshi_chasen

このファイルを修正後、分析対象ファイルを別名でコピーし、新たなプロジェ
クトとして登録してみていただけますでしょうか。おそらく、新たな品詞がす
べての分析で利用できるようになると思います(バグがなければ…)。例えば
「抽出語」→「品詞別 出現回数順リスト」でも、新たな品詞の列ができるは
ずです。

このような行をhinshi_chasenファイルに加えていただきますと、「接尾」が
たいていの場合は先頭にリストアップされて、分かりやすいかと思います。
----------------------------------------------------------------------
-1,接尾,名詞-接尾-一般
----------------------------------------------------------------------
# マニュアルには書いていませんが、先頭の数字(HINSHI_ID)の順に品詞が
# 並べられることが多いです。

それでは、よろしくお願いいたします。


  [No.189] Re: コード間の共起数など 投稿者:松川太一  投稿日:2006/06/30(Fri) 14:28:16

松川です。
いつも丁寧に対応していただきありがとうございます。

> ■1-1
>
> すみません。そこまで多くの(Excelのカラム数制限をこえる数の)コードを
> 作成されているという可能性にまでは、気が回りませんでした。
>
> http://khcoder.info/psnl/.khc/beta_cod_jaccard.pm
> このプラグインですが、少しだけ修正して、「コピー」ボタンの挙動を変更し
> ました。ソートが行われている場合は、その列と一番左の見出し列(?)だけを
> クリップボードにコピーするようにしました。

この機能,わたしにとっては非常にありがたいです。
しかし,わたし以外の方々は「コピー」ボタンを押すときにこのような挙動を
求めていないような気がしないでもない……。

> 将来的には「連関規則」
> のような形式も考慮したいと思いますが、ちょっと、すぐには難しいです。申
> し訳ありません。

あたりまのことですが,こちらの要求を満たす機能の実装を求めている
わけではない点を確認しておきます(期待している面がないと言い切れ
ませんが,無理な機能だとすれば代替手法を考えればよいだけですし)。

それよりも,ここでいろいろ質問している理由は,現状でKH Coderに
実装されていない機能が必要となるような分析の進め方は,テキスト
分析の方法論上おおきな過失を犯しているのではないだろうかという
疑念があるので,そのあたりを洗い出すことに重きをおいてます。

そういう観点からみると1-1での問題は,樋口さんが想定していなかった
ほど大量のコードを作成した上でコード間の連関を確認することの方法論
上の是非。また,樋口さんはコード間の連関をマトリックス形式で出力
するのがよいと判断されたのに対して,わたし(ならびに共同研究者)は
「連関規則」形式での出力にこだわっているわけですが,それらは単なる
出力形式の相違だけでなく背景には分析方法論の相違があるのだろうか。
……といった点が気になるわけです。簡単な問題ではないと思いますので,
早急な解を求めているわけではありませんが,そのあたりが気になっている
ということだけをお伝えしておきます。

> ■1-2

> ただ釈迦に説法のような気がしますが、生の共起の数だけでなく、何らかの形
> で「ランダムでない度合い」を計算してくれる指標があった方が(指標を付記
> した方が)安心だと思います。(特にアウトプット・分析結果として示す場合)

これは同意します。説明を省略していましたが,わたしにとっての
問題は,このような指標の必要性を他人に説得的に説明できないと
いう個人的な能力の限界だったりします。

連関規則の結果を共同研究者などに提示するとき,KH Coderの出力を
そのままつかえば指標の降順にソートされています。そのとき相手が
提示されたアウトプットの何に着目しているかというと「共起」の欄
だったりするわけです。どうやら,いくらJaccard係数の値が大きく
とも,共起の数において小さいものを「特徴的」や「代表」とみなす
ことに抵抗があるというのが理由のようです。そして,わたし自身も
この理由に納得できる部分もあります。

共起の数が多くとも,それが文脈上では実際の係り受けになっていない
ケースが比較的多く含まれているようなデータであれば,それを提示
すれば納得してもらえるのかもしれません。

ところで,

> # この用途であれば、必ずしもJaccard係数でなくても、例えばカイ2乗検定の
> # 結果も良いかと思われます。KH Coderでは計算できないので、統計ソフトお
> # 使いいただかねばならず、面倒になってしまいますが…。

ここでいう「カイ2乗検定」とは,「語Aの生起:0,1」×「語Bの生起:0,1」
で2×2のクロス集計表を作成したときの独立性の検定という意味ですか?

> ■hinshi_chasen
>
> このファイルを修正後、分析対象ファイルを別名でコピーし、新たなプロジェ
> クトとして登録してみていただけますでしょうか。おそらく、新たな品詞がす
> べての分析で利用できるようになると思います(バグがなければ…)。例えば
> 「抽出語」→「品詞別 出現回数順リスト」でも、新たな品詞の列ができるは
> ずです。

新規プロジェクトとして登録しないと反映されなかったのですね……。
これは盲点でした。ありがとうございます。

プロジェクトに関して言えば,元テキストデータ,強制抽出語・抽出品詞,
品詞の設定などがひとつのファイルなりフォルダに格納されていて,それ
だけを管理すれば,バックアップや複数マシン間での同一設定での分析が
おこなえる……という仕組みになれば分析者が楽に作業できる部分もある
かなあと夢想します(ひょっとしたら現状でもそういうシステムになって
いるのに気づいておらず,活用できていないだけかもしれませんが)。
これも実装要求ではなくユーザーのひとりごとです。


  [No.192] Re: コード間の共起数など(訂正:7/1) 投稿者:HIGUCHI Koichi  《URL》   投稿日:2006/06/30(Fri) 19:42:59

お世話になります樋口です。
書き込みありがとうございます。

ご質問のご主旨については、把握しているつもりでいましたが、開発者の悪い
癖(?)で、つい機能追加の方向へ頭が動いてしまったものとご理解下さいませ。

分析方法論という点についてですが、通常、私が分析を行う際には、
 ・進められるところまでは多変量解析(テキストマイニング)で進めて、
 ・どうしても人間の判断が必要な部分でコーディングルールを作る
という方法を試みます。したがって、コードを大量に作るということは、あま
り考えていませんでした。

私がKH Coder製作時に想定していた分析方法とは異なる進め方で、松川さんが
分析を行われているのは確かです。ですが「異なる方法での分析(それ自体)
が悪いことだ」などとは言えるはずがございませんし、言うつもりもございま
せん。むしろ、いろいろな方法が試みられてこそ、分析方法&ツールが発展す
るものだと思います。

その上で、先に書きましたように、共起"のみ"で関連を見ることは望ましくな
いように考えられました。ですが、コードを大量に作って関連を見るというこ
とそのものについては、あからさまな問題があるとは考えられません。

松川さんが行われている分析の方法について、今私が申し上げられることは、
この程度までかと考えられます。加えるならば、現在までに書き込んでいただ
いた内容を拝見する限り、分析結果(を含む論文)を拝見させていただける日
が大変楽しみに思われます。


> > # この用途であれば、必ずしもJaccard係数でなくても、例えばカイ2乗検定の
> > # 結果も良いかと思われます。KH Coderでは計算できないので、統計ソフトお
> > # 使いいただかねばならず、面倒になってしまいますが…。
> 
> ここでいう「カイ2乗検定」とは,「語Aの生起:0,1」×「語Bの生起:0,1」
> で2×2のクロス集計表を作成したときの独立性の検定という意味ですか?

はい、あくまで"例えば"ですが、互いに独立・無関連かどうかを見ることは
できるだろう、と考えました。


品詞の設定については、プロジェクト作成時に設定が(プロジェクトに)に
渡され、以降、そのプロジェクトの品詞設定が変わることは無いという仕様
になっております。プロジェクトを「名前を付けて保存」して、保存したフ
ァイルを他のPCのKH Coderで開けると便利かもしれませんね。

実装できるかどうかはまた別として、ご要望または独り言(?)は貴重です。
どんどんお寄せ下さい。

どうぞよろしくお願いいたします。