一括表示 |
---|
松川@総合地球環境学研究所です。 自由回答の分析に着手することになってしまいました。 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 の設計思想からはずれている気も しますが,以上の点についてコメント等いただければと 思います。 お手数かけますが,よろしくお願いいたいます。 |
樋口です。ご無沙汰しております。 書き込みありがとうございます。 いずれの形式にしても、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】のような形式は、「目で見て確認するために」ということでしょうか? この形式のファイルを統計ソフト等でどのように使うのか、ちょっと想像でき なかったですが、、、差し支えなければ、ご教示下さいませ。 |
追伸です。 上記の新しいバージョンでは、 ・「ツール」「文書」「『文書x抽出語』表の出力」「不定長CSV(WordMiner)」 ・「ツール」「プラグイン」「『文書x抽出語(表層語)』表の出力...」 という2つのコマンドで、データ出力を行った際、【2】の形式に近い列が出力される ようになっています。あわせてお試しいただけましたら幸いです。 それでは、よろしくお願いいたします。 |
迅速に対応していただき,ありがとうございます。 |
お世話になります、樋口です。 |
標題の件 |
樋口です。大変お世話になります。 お忙しい中、チェック&ご報告いただきまして、本当にありがとうございます。 データに依存するようですが、「特定の語(文字)があると化ける」というよ うな単純な問題でも無いようですね…。 大変恐縮なのですが、お手すきの折でまったく問題ございませんので、さらに 以下をお試しいただけますでしょうか。 http://khcoder.info/psnl/.khc/m_spss_test_0.pm この(↑)ファイルをダウンロードし、「plugin」フォルダにコピーして下さ い。コピー後にKH Coderを起動すると、「ツール」→「プラグイン」→「松川 さん」→「『文書x抽出語』表の出力(SPSS)文字化けチェック用」というコマ ンドが現れると思います。このコマンドから出力を行い、文字化けが直るかど うか、ご確認いただけますでしょうか。 p.s. せっかく書き込んでいただいたメッセージが、またも誤って「スパム」と判定 され、先程まで表示されておりませんでした。申し訳ございません。 |
> 大変恐縮なのですが、お手すきの折でまったく問題ございませんので、さらに |
> > 大変恐縮なのですが、お手すきの折でまったく問題ございませんので、さらに |
文字化けの原因が,ようやくわかってきました。 |
ありがとうございます! こちらでも文字化けを再現できました! 問題を再現できずに頭を抱えていたので、感激しています。 実際、SPSSシンタックスの出力プログラムでは、ファイル名に日本語が含ま れている可能性を考慮していませんでした。2バイト文字を含むファイル・ フォルダ名は(未だに無意識に)避けていたので、なかなかこのバグに気づ きませんでした。 一応、出力プラグインを更新しましたので、よろしかったらお試し下さい。 http://khcoder.info/psnl/.khc/m_spss_test_0.pm おそらく、解決しているのではないかと思います。 次の公開バージョンで修正しますが、当面、もし必要な場合は、2バイト文 字を含まないフォルダ・ファイル名で出力していただくという方法で、対処 して下さいませ。(文脈ベクトルのSPSSシンタックス出力を行う場合) > ……と,ここまで書いてみたものの「ファイル名やフォルダ名での全角文字の > 禁止」について,すでにマニュアルに書いてあったりしたらすみません。 何年か前まではマニュアルに書いていたのですが、最近の版では削除しています。 削除したからには、(いつまでも時代遅れなことをしていないで)自分でも2バイ ト文字のファイル・フォルダ名を使うべきだったような気がします…。 なにはともあれ、お忙しい中、根気よくお付き合いをいただき、しかもバグを特 定していただきまして、まことにありがとうございました。重ね重ね、お礼申し 上げます。 |
> 一応、出力プラグインを更新しましたので、よろしかったらお試し下さい。 |
分析対象ファイルをチェックしていただくためのプラグインを作成しました。 |
返信を書いているあいだに,あらたなプラグインの提供が。 |
松川です。このままツリーにぶらさげます。 |
いつもお世話になります、樋口です。 書き込みありがとうございます。 あくまでとりあえずの対処ですが、以下のような方法が考えられます。 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)についての確認が必要になったりします でしょうか? |
迅速に対処していただきありがとうございました。 |
上の2)のほうは,べつにSQL文を書きかえなくても, |
樋口です、いつもお世話になります。 書き込みありがとうございます。 ■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本体のバージョンアップでは「コーディング」→「コード間関連」コマ ンドにこれらの変更を反映させる予定です。ただ、共起文書数のオプションも追加す るかどうかは、勘案中です。 |
松川です。 |
お世話になります樋口です。 |
松川です。 |
お世話になります樋口です。 書き込みありがとうございます。 ご質問のご主旨については、把握しているつもりでいましたが、開発者の悪い 癖(?)で、つい機能追加の方向へ頭が動いてしまったものとご理解下さいませ。 分析方法論という点についてですが、通常、私が分析を行う際には、 ・進められるところまでは多変量解析(テキストマイニング)で進めて、 ・どうしても人間の判断が必要な部分でコーディングルールを作る という方法を試みます。したがって、コードを大量に作るということは、あま り考えていませんでした。 私がKH Coder製作時に想定していた分析方法とは異なる進め方で、松川さんが 分析を行われているのは確かです。ですが「異なる方法での分析(それ自体) が悪いことだ」などとは言えるはずがございませんし、言うつもりもございま せん。むしろ、いろいろな方法が試みられてこそ、分析方法&ツールが発展す るものだと思います。 その上で、先に書きましたように、共起"のみ"で関連を見ることは望ましくな いように考えられました。ですが、コードを大量に作って関連を見るというこ とそのものについては、あからさまな問題があるとは考えられません。 松川さんが行われている分析の方法について、今私が申し上げられることは、 この程度までかと考えられます。加えるならば、現在までに書き込んでいただ いた内容を拝見する限り、分析結果(を含む論文)を拝見させていただける日 が大変楽しみに思われます。 > > # この用途であれば、必ずしもJaccard係数でなくても、例えばカイ2乗検定の > > # 結果も良いかと思われます。KH Coderでは計算できないので、統計ソフトお > > # 使いいただかねばならず、面倒になってしまいますが…。 > > ここでいう「カイ2乗検定」とは,「語Aの生起:0,1」×「語Bの生起:0,1」 > で2×2のクロス集計表を作成したときの独立性の検定という意味ですか? はい、あくまで"例えば"ですが、互いに独立・無関連かどうかを見ることは できるだろう、と考えました。 品詞の設定については、プロジェクト作成時に設定が(プロジェクトに)に 渡され、以降、そのプロジェクトの品詞設定が変わることは無いという仕様 になっております。プロジェクトを「名前を付けて保存」して、保存したフ ァイルを他のPCのKH Coderで開けると便利かもしれませんね。 実装できるかどうかはまた別として、ご要望または独り言(?)は貴重です。 どんどんお寄せ下さい。 どうぞよろしくお願いいたします。 |