Back to "KH Coder"

FAQ Index


KH Coderの動作について

KH Coderが起動しません(主にWindows Vista・7の場合)

Windows Vista・7をお使いで、KH Coderが正常に起動しない場合には、以下の手順をお試し下さい。

  1. デスクトップに新しいフォルダを作成し、フォルダ名を「KH Coder」とします。
  2. そのフォルダに、ダウンロードしたKH CoderのWindows版パッケージ(khcoder-2b17-f.exe等)をコピーします。
  3. コピーしたファイルを実行(ダブルクリック)します。
  4. 開いた画面のUnzip to folder: の欄に「C:\khcoder」と入力されていますが、これを「.」(ピリオド一文字)に変更します。
  5. 「Unzip」をクリックします。

この手順によって、デスクトップの「KH Coder」というフォルダ内にすべてのファイルが解凍されます。解凍された「kh_coder」(「田」の字に似たアイコンです)をダブルクリックして、KH Coderが起動するかどうかを確認してみてください。

かならずしもデスクトップでなくとも、「ダウンロード」「ドキュメント」といったフォルダをお使いいただいても大丈夫なはずです。

※デフォルトでは「C:\khcoder」という場所にすべてのファイルが解凍されるのですが、Windows Vistaではこの場所に自由に書き込みができない場合があるかもしれません。その場合には上記の手順が有効でしょう。ただしWindows Vista・7以外でKH Coderが起動しないというケースでは、上記の手順のようにデスクトップへ解凍・インストールするよりも、「C:\khcoder」をお試しいただく方が良いでしょう。

またWindows Vista・7やWindows 98/Meでは、KH Coderを解凍・インストールしたフォルダ名に半角カナや特定の全角文字(だめ文字)が含まれていると、KH Coderが起動しません。XPや2000だと大丈夫のようなのですが…。

それでもKH Coderが起動しない場合には、KH Coderを解凍したフォルダにある「dep」というフォルダを開き、その中にある「R」というフォルダを削除してみてください。これで起動するようならば、統計計算とグラフィックスのための環境「R」を利用しているコマンドは動かなくなりますが、それ以外のKH Coderの機能はお使いいただけます。

MacでKH Coderを使うにはどうすれば良いですか?

必要なソフトウェア/ハードウェア」のページでも触れている通り、Macへのインストールはかなり手間がかかります。「それでも是非」という場合は、こちらのページをご参考にしていただけるかもしれません。

ファイアーウォールの警告が出ますが、どう対処すればよいですか?

KH Coder(Windows版パッケージ)の起動時や、プロジェクトの新規作成時、あるいはプロジェクトを開く際に、以下のような警告画面が表示される場合があります。

■大まかな指針

このような場合、基本的には「ブロックを解除する」を選択するようにして下さい。

KH Coderはデータの整理・検索・集計を行うために、既製のデータベース・ソフト「MySQL」を利用しています。そしてKH Coderが、MySQLに命令を出したり、MySQLから検索結果を受け取る際には、ネットワーク・プロトコル(TCP/IP)を利用しています。そのため、こういった警告が出る場合があります。
KH CoderとMySQLの通信がブロックされると、KH Coderは機能しなくなります。「MySQLデータベースの処理に失敗しました」というエラーが表示され、プロジェクトの新規作成すらできなくなるはずです。
※MySQLとの通信にネットワーク・プロトコルを利用しているだけですので、必ずしもPCがネットワークやインターネットに接続されている必要はありません。インターネットに接続していない状態でもKH Coderをご利用いただけます。

もっとも、Windowsファイアーウォールに関しては、「ブロックする」を選択した場合も、KH Coderの動作に特に問題はないようです。Windowsファイアーウォールによる「ブロック」は、やや手ぬるいためかと思います。手ぬるいというと語弊がありますが、おそらく、自分のPC上で動いているプログラム間の通信については、ブロックしないということのようです。

しかし、McAfeeのファイアーウォールやNortonの「Internet Security」「Personal Firewall」のような製品となると、話が変わってきます。これらの製品による「ブロック」は、Windowsファイアーウォールよりも徹底しているようで、KH Coderの動作に支障が出てしまいます。

以上のようなことから、基本的には「ブロックしない」や「通信を許可」を選択するという方針の方が、問題が起こりにくいかと思います。

■不安な場合

「とはいえ、KH CoderやMySQLに自由にネットワークを使わせるのは心配だ・不安だ」という場合は、以下のように設定することで、安心してお使いいただけるのではないかと思います。

まずKH Coder(kh_coder.exe)については、(1)KH Coderから自分のPCへの接続だけを許可し、(2)それ以外の通信を全て遮断します。下図は「Norton Internet Security 2004」でこのような設定を行った画面です。

なお「127.0.0.1」というのは、自分のPCを表す特別なIPアドレスです。127.0.0.1への接続だけを許可して、その他の接続・通信を遮断する設定を行えば良いわけです。具体的な設定方法については、お使いのファイアーウォール・ソフトのヘルプやマニュアルをご参照下さい。

次に、MySQL(mysqld-nt.exe)については、(1)自分のPCからMySQLへの接続を許可し、(2)それ以外の通信を全て遮断します。「Norton Internet Security 2004」の場合は、下図のようになります。

以上のように、自分のPC(127.0.0.1)との通信だけを許可し、外部との通信を遮断するという設定ならば、ご安心いただけるのではないかと思います。もちろん、このような設定ならば、KH Coderは支障なく動作するはずです。

※1 Windowsファイアーウォールでは、このような細かな設定は行えないようです。
※2 KH CoderやMySQLはDNSへアクセスしようとしますが、このような設定を行うと、DNSへのアクセスが遮断されます。遮断されてもとくに問題は起こらないようですが、万一、「MySQLデータベースの処理に失敗しました」というエラーが表示され、プロジェクトの新規作成すらできなくなったというような場合には、DNSへのアクセスも許可してみてください。

「茶筌の起動に失敗しました」というエラー・メッセージが出ます

ご自身で茶筌をインストール・設定された場合には以下の2点をご確認下さい。

  1. まずChasen(茶筌)ですが、Chasenそのものを起動することは可能でしょうか。kh_coder.exeと同じ場所に解凍されているWinCha.batを実行し、開いた画面で形態素解析(品詞分解もどき)が可能かどうかご確認下さい。
  2. 次に、KH Coderの「プロジェクト」-> 「設定」部分でchasen.exeのパスは入力されていますでしょうか?「C:\khcoder\dep\chasen\chasen.exe」のように入力されている場合が多いと思いますが、最後の部分が「WinCha.exe」ではなく、「chasen.exe」となっていることを確認してください。

それ以外の場合、または以上2点が大丈夫なのにうまくいかない場合は、下の手順を試してみてください。

[1]KH Coderを「c:\khcoder\」フォルダにインストールし直し、
[2]分析対象ファイルを「c:\khcoder\data1」フォルダに置く。
[3]「c:\khcoder\data1\」フォルダに置いたファイルを新たにプロジェクトとして登録して
[4]「前処理」->「前処理の実行」

次に分析対象ファイルの名前ですが、記号や全角文字を使わずに、半角アルファベットのみのファイル名にして試してみてください。

その他の注意点として、分析対象ファイルの文字コードが「Shift-JIS」「EUC」「JIS」のいずれかになっていることを確認してください。Unicode / UTF8には現在の所対応していません。また分析対象ファイルに文字化けが含まれている場合は、「前処理」を行う前にその部分を取り除くと良いでしょう。「分析対象ファイルのチェック」コマンドを使うと、自動的に文字化けしている部分を除去できます。

「ファイル処理に失敗しました」というエラー・メッセージが出ます

Excelをはじめとする他のソフトが起動している場合は、それを終了してから同じ処理をKH Coderで行ってみてください。Excelのようなソフトは、開いているファイルを他のソフトから「保護」するため、同じファイルをKH Coderが処理しようとすると失敗します。

またDropboxでKH Coder関連のデータを同期している場合も、同じことが起こります。Dropboxはデータの同期時中に、ファイルの内容が変更されないよう「保護」するため、同じファイルをKH Coderが処理しようとするとエラーになります。KH Coderを動かす際には、Dropboxの同期を一時停止するか、Dropboxを使わずにプロジェクトの「エクスポート」「インポート」機能でデータを他のPCに移すのが良いでしょう。

これらの点を確認しても同じエラー・メッセージが出てしまう場合は、上記[1]〜[4]の手順をおためし下さい。

前処理中に「MySQLデータベースの処理に失敗」というエラーが表示されます

エラー表示画面の最下部、「エラー出力:」の欄に「The table 'rowdata' is full」とある場合には、以下の手順でKH Coderの設定を変更してください。

メニューから「プロジェクト」→「設定」をクリックして、開いた画面で「前処理効率化のためにデータをRAMに読み出す」のチェックを外して、「OK」をクリックします。

↑ FAQ Index ↑

抽出語について

出現回数ではなく、いくつの文書に各抽出語が含まれているかを集計するには?

時として、抽出語が何回データ中に出現していたかという「出現回数(TF)」ではなく、いくつの文書中に出現していたかという文書数(DF)/出現件数を集計したいこともあるでしょう。こうした集計を行えば、例えば自由記述データの場合、何人の回答者がその語に言及していたのかを調べることができます。

メニューから「ツール」「抽出語」「抽出語リスト」をクリックして、上図のオプション画面で「文書数(DF)」を選択すれば、こうした集計を行えます。

※以前は以下のようなSQL文を実行する必要がありましたが、現在では上のようなマウス操作でOKです。

KH Coderのメニューから「ツール」「SQL文の実行」をクリックして、以下のSQLを実行すると、文書数/出現件数の多いものから順に150語をリストアップすることができます。結果として表示されるDFの列が文書数/出現件数を表し、TFが出現回数を表しています。またこのSQL文では、「抽出語リスト(品詞別・出現回数順)」をもとに作成する「頻出150語の表」の場合と同じ品詞を選択し、リストアップを行います。

SELECT
  genkei.name   as W,
  khhinshi.name as H,
  f             as DF,
  genkei.num    as TF
FROM khhinshi, genkei
  LEFT JOIN df_dan ON genkei_id = genkei.id
WHERE
      genkei.khhinshi_id = khhinshi.id
  and khhinshi.name != "否定助動詞"
  and khhinshi.name != "未知語"
  and khhinshi.name != "否定"
  and khhinshi.name != "名詞B"
  and khhinshi.name != "形容詞B"
  and khhinshi.name != "動詞B"
  and khhinshi.name != "副詞B"
  and khhinshi.name != "感動詞"
  and khhinshi.name != "その他"
ORDER BY DF DESC
LIMIT 150

なお上のSQLでは、それぞれの段落を「文書」と見なしています。すなわち、それぞれの文書ないしは回答が、改行で区切られているデータを想定しいます。これを段落ではなく文に変更するには、上のSLQで「df_danとなっているところを、「df_bun」に変更して下さい。また、H1見出しで括った部分を1つの「文書」と見なしたい場合は「df_h1」のようにします。

次に、「語A、語B、語Cの文書数/出現件数を知りたい」というような場合には、以下のようなコーディングルールをお使いいただけます。

*コードA
語A
*コードB
語B
*コードC
語C

「コーディング」→「単純集計」画面で「頻度」と表示される数値が、文書数/出現件数にあたります。

助詞や助動詞などの機能語を検索・集計するには?

デフォルトの品詞設定では、KH Coderは助詞や助動詞などの機能語には「その他」という品詞名を与えます。そして、「その他」という品詞名を与えられた語は基本的に無視され、「抽出語リスト」にも載りませんし、検索や集計の対象にもなりません。

こうしたKH Coderの品詞設定を変更するには、「kh_coder.exe」と同じ場所の「config」フォルダを開き、その中にある「hinshi_chasen」というファイルをテキストエディタで開きます。Windowsのメモ帳ではなく、サクラエディタ(フリー)や秀丸エディタ(シェア)のような、文字コードがEUCのファイルを扱えるテキストエディタをお使い下さい。

例えば、助詞と助動詞を分析対象としたい場合は、以下の2行をこのファイルの末尾に加えます。

30,助詞,助詞
31,助動詞,助動詞

以上の操作によってKH Coderの品詞設定が変更されるので、助詞や助動詞に「その他」ではなく「助詞」「助動詞」といった品詞名が与えられるとともに、検索・集計の対象となります。※ただし、既存のプロジェクトについては、前処理を再度実行するまでは変更が反映されません以上の操作に加えて、前処理を再度実行して下さい。

次に、より詳細な品詞設定の例を考えてみましょう。茶筌は助詞を「助詞-格助詞」「助詞-係助詞」などに分類していますが、もしこのうち「助詞-格助詞」だけを取り出したいという場合は、以下の1行を「hinshi_chasen」ファイルに追加します。

30,格助詞,助詞-格助詞

さらに、茶筌は格助詞についても「助詞-格助詞-一般」「助詞-格助詞-連語」などの区別を行っています。このうち「助詞-格助詞-一般」だけを取り出して、「格助詞」としてKH Coder上で扱うには、以下の1行を「hinshi_chasen」ファイルに追加します。

30,格助詞,助詞-格助詞-一般

これらの記述の紫色の部分は、KH Coder上での品詞名を表します。ここには自由な品詞名を指定することが出来ます。赤色の部分はKH Coder上での品詞番号です。他の品詞の番号と重複しないように注意して下さい。そして緑色の部分が、茶筌の出力する品詞名です。こうした記述によって、「茶筌の出力した品詞名がAであれば、KH Coder上ではBという品詞名を与える」という指定を行えます。なお緑色の部分については前方一致で処理が行われているので、「助詞」とだけ指定すると、「助詞-格助詞」など、「助詞」で始まるものがすべてヒットします。

なお、KH Coderの品詞体系の詳細についてはマニュアルの2.2節を、茶筌の出力する品詞名については茶筌のマニュアルの末尾をご覧下さい。茶筌のマニュアルは、「kh_coder.exe」がある場所から見て、「dep\chasen\doc\manual-j.pdf」に同梱されています(Windows版パッケージの場合のみ)。

上図はこうした設定を行って、漱石「こころ」から、格助詞「に」の直後に動詞があるケースを検索した結果です。ヒット数から、こうしたケースは1,133件あったことが分かります。

UniDicを使って語の抽出を行うことはできますか?

準備に少し手間がかかりますが、可能です。掲示板のこちらのやりとりをご覧下さい。ダウンロードするファイル名については、適宜、最新版のファイル名に読み替えながらご覧下さい。

入力データとその準備について

KH Coderを使って分析するためにはデータをHTML化しなければならないのですか?

いいえ、必要ありません。

単なるテキスト・ファイルでも、KH Coderは「。」で文を区切り、改行で段落を区切ります。よって、特定の条件と合致する文や段落を検索したり、数え上げたりといったことができます。

仮にデータがアンケート調査の自由回答項目だとすると、次のようなデータを用意すればOKです。

回答者Aの回答・・・・_________
回答者Bの回答・・・・
回答者Cの回答・・・・
回答者Dの回答・・・・
回答者Eの回答・・・・
回答者Fの回答・・・・

このようなデータをKH Coderに投入すると、それぞれの回答が「段落」としてKH Coderに認識されます。よって、「段落」ごとの分析を行えば、それぞれの回答ごとの分析を行うことができます。
このようなデータなら、表計算/統計ソフトウェアから、メモ帳などのテキストエディタにコピー&ペーストするだけで作成できるので簡単です。

仮にデータをHTML化したとすると、どんなメリットがあるのですか?

KH Coderは<H1>から<H5>までのタグを使ったHTMLファイルに対応しています。これらのタグをデータ中に打ち込むことで、単に「文」や「段落」ごとの分析だけではなく、より複雑なことが行えます。

例えば、インタビューやChatなどの会話記録をデータとして扱う場合を考えてみましょう。さらに、次のような形のデータをKH Coderに投入したとしましょう。

<h1>インタビュー1</h1>
   <h2>発言者A</h2>
      ・・・発言内容・・・
   <h2>発言者B</h2>
      ・・・発言内容・・・

<h1>インタビュー2</h1>
   <h2>発言者A</h2>
      ・・・発言内容・・・
   <h2>発言者C</h2>
      ・・・発言内容・・・


(実際のデータにインデントは不要です)

こういったデータを用いれば、それぞれの発言が「H2」としてKH Coderに認識されます。よって検索単位として「H2」を指定すれば、特定の単語を含む発言を検索したり、コーディングしたりすることがきるようになります。それだけでなく、「特定の発言者の言葉の中に単語Aが出現していれば」といった条件付けによる検索やコーディングを行うこともできます。また、特定の発言者が好んで使っている語(その発言者の言葉の中に高い確率で出現している語)のリストといったものをKH Coderに表示させることができます。

同様に「H1」を指定してやれば、それぞれのインタビューごとの特徴を調べることもできるでしょう。

こういったタグ付けは、新聞記事をはじめ様々なデータの分析に応用することができるでしょう。

データのHTML化を手作業で行うのは面倒です。何か楽な方法は?

あります。ただし、元のデータが何らかの決まった形になっていることが条件です。

例えば次のように、発言者名と発言内容が全角セミコロン「:」で区切られているデータがあったとしましょう。

発言者A:発言内容・・・________
発言者B:発言内容・・・

まず、秀丸のような「正規表現」を使った検索・置換が可能なテキストエディタを用意します。以下、秀丸を使うものとして説明を続けます。
秀丸からこのデータを開き、メニューから「検索」 => 「置換」をクリックして置換Windowを開きます。
置換Windowの「正規表現」というチェックボックスにチェックを入れ、「検索」部分には「^(.+):」、置換部分には「<h2>\1</h2>\n」と入力して「全置換」ボタンをクリックします。

これでデータ全体のタグ付けが完了します。ちなみに入力した文字列(正規表現)の意味は次の通りです。

□検索部分
「^」 => 行の先頭に、
「.」 => 任意の文字が
「+」 => 1文字以上あって、
「:」 => その後に全角セミコロンがある
この条件に合致する場合、カッコで括ってある部分すなわち「任意の文字が1文字以上」の部分が、いったん記憶されて、その後置換が始まります。

□置換部分
「<h2>」 => <h2>と書く
「\1」 => 上のカッコで記憶した文字列(発言者)を書く
「</h2>」 => </h2>と書く
「\n」 => 改行する
という置換が行われることになります。(最後の改行のあとには、元データの発言内容の部分がそのまま続くことになります)

この正規表現というものを応用して、ご自分のデータ形状にあった検索・置換を行えば、一瞬にしてデータ全体のタグ付けを実行することができます。
「こういった形のデータに対しては、正規表現をどう書けば良いのだろう?」といった場合、KH Coder掲示板でご質問いただければ、わかる範囲でですが、お答えします。

なお、こういった操作を行う際は必ずデータのバックアップを取るようにして下さい。「変換に失敗して、おまけに、間違えて上書き保存をしてしまった」といった場合に備えて・・・。(試行錯誤をしている時で、おまけに疲れてきた時などには、あながち、あり得ないことではありません)

1つのプロジェクトにつき、分析対象ファイルを1つしか登録できないようですが、KH Coderは複数の文書を扱えないのですか?

いえいえ、複数の文書を扱うことができます。ただし、すべての文書を1つのファイルにまとめて入力し、そのファイルをKH Coderに登録していただく必要があります。

例えば3つの文書を比較して、それぞれの文書の特徴を知りたいといった場合には、漱石「こころ」のチュートリアルで「上」「中」「下」の特徴を調べたのとまったく同じ手順で、分析を行っていただけます。すなわち、「<h1>ここから文書1<h2>」といった見出しを3つ入力することで、1つのファイル内で、文書を3つに区切って分析することができます。

このような見出しを加えつつ、複数のファイルの内容を1つのファイルに結合する処理を、KH Coderのプラグインによって自動的に行うことができます。具体的な手順についてはこちらのページの「始める前の準備」と「第5章の練習問題」をご覧ください。

KH Coderではどの程度の大きさのファイルまで分析できますか?

分析対象ファイルのサイズについては、200MB程度までは実際に試したことがありますし、理論上は特に制限はありません。 強いて書くならば、設計上、データサイズの上限はMySQLの性能に依存します。しかし、これまでに見聞きした範囲では、MySQLの上限に行き当たるよりも先に、ディスクスペースが埋まってしまう場合の方が多いようです。

ただし、こうした大きなファイルを分析する際には、処理に非常に長い時間がかかることと、分析対象ファイルの100倍程度の空き容量がHDDに必要なことにご注意下さい。さらに前処理を実行する前に、メニューから「プロジェクト」「設定」をクリックし、「前処理効率化のためにデータをRAMに読み出す」のチェックを外しておくと安全です。

また、Rは大規模データに必ずしも対応していない面があるため、大規模データを扱う場合はRを使った多変量解析が上手く行かない場合があります。具体的には、エラーが出て結果が表示されない場合や、実行に何時間もかかる場合があります。

データサイズが大きすぎるためにRを用いた多変量解析が上手く行かない場合には、以下のような方策が考えられます。

  1. データサイズを縮小したくない場合には、Rではなく、大規模データに対応した統計ソフトをご利用いただくとと良いでしょう。「文書x抽出語」表の出力コマンドを使ってKH Coderからデータを取り出し、大規模データを扱える統計ソフトで解析していただく形になります。
  2. KH CoderのRを用いた多変量解析機能を利用されたい場合には、ランダム・サンプリングを行うことでデータサイズを縮小されるのが一手でしょう。日本人は1億2千万人以上いますが、きちんとランダム・サンプリングを行いますと、2500人も集めれば±2%程度の誤差で日本人の様子を調べることができます。KH CoderからRに分析用データとして送られるのは「文書x抽出語」表ですが、ここでの文書数を10,000以下、抽出語数を100以下に抑えれば比較的短時間で解析結果を得られるでしょう。なお、文書数を減らすためには、分析対象ファイルを加工して内容を削る(サンプリングする)しかありません。ですが抽出語数については、分析のオプション画面で使用する語を減らすことができます。
  3. 上記2つの中間的な方法として、Rに送る「文書x抽出語」表のサイズが小さくなるように工夫することが考えられます。目安は上に挙げたとおり、文書数10,000以下、抽出語数100以下です。
    • 抽出語数については、品詞や出現数などを使って100以下におさえると良いでしょう。
    • 文書数については、文単位ではなく、段落単位/文章単位での分析を考えると良いでしょう。「同じ段落/文章に登場する語は?」といった文脈情報を解析に利用できる上に、文の数よりも段落/文章の数の方が圧倒的に少ないので、「文書x抽出語」表のサイズも小さくなります。
      仮にデータが新聞記事であれば、文単位で解析せずに記事単位で解析すると良いでしょう。あるいはTwitterのようなデータであれば、1つ1つのtweetを「文書」と見なすのではなく、一連の対話をまとめて1つの「文書」と見なすような前処理を行うとよいかもしれません。
  4. 抽出語の共起ネットワーク作成やクラスター分析・多次元尺度法などを行う場合には、さらに別の方策もあります。「抽出語x文脈ベクトル」表の出力コマンドを使ってデータを取り出せば、文書数が何十万あっても、任意のサイズの行列にデータを圧縮することができます。行数は分析に使う単語数と等しくなりますが、列数は任意に設定できるので、5,000〜10,000程度にすれば良いでしょう。
    このコマンドで(圧縮して)取り出したデータをRに読み込めば、共起ネットワーク作成やクラスター分析・多次元尺度法などを行うことが出来ます。ご自身でRを操作していただく必要があるのですが、別途KH Coderでこれらの分析を実行し、その結果をRコマンド形式で保存したファイルを参考にしていただけば、比較的やりやすいかと思います。

※文書数10,000・抽出語数100を一応の目安として示していますが、このうち抽出語数100については、画面上にプロットすることを考慮した値です。すなわち、100を超える数の語をプロットしても、確認が難しいだろうという判断です。プロットを行わないような場合には、もう少し増やしても良いでしょう。例えば文書のクラスター分析では、文書数5,000・抽出語数3,000程度で分析を行うことも考えられます。

上記2と3を組み合わせることで「文書x抽出語」表のサイズを抑えるか、あるいは4の方法をとるかというのが個人的にはお勧めでしょうか。なお、ここでサイズを抑える必要があるのは、あくまで「文書x抽出語」表のようなRに送るデータ行列のサイズであり、分析対象ファイルの容量(MB)はさほど問題になりません。

↑ FAQ Index ↑

大きなファイルの処理にはどの程度時間がかかりますか?

199MBの新聞記事データ(約110,000件)と、ランダムサンプリングによって15MB(約8,000件)まで縮小したデータの処理を行ってみました。処理に要した時間を下表にまとめています。参考までに、文書数は同等に多いものの、容量(MB)が小さいデータの処理時間も示しています。

データ種別
文書数
容量
前処理
共起ネットワーク
新聞記事(大)
110,000
199MB
06:24:16
00:15:46
新聞記事(小)
8000
15MB
00:07:04
00:01:03
論文タイトル
106,000
5MB
00:02:41
00:01:38

計測PC: Core2Quad Q9650@4Ghz、4GB RAM、SSD(Intel X-25M)

所要時間の表示は「時間:分:秒」です。サンプリングによって縮小したファイルと、もとの大きなファイルでは処理時間に大きな違いがあります。データ分析の際には、様々な分析を行って結果を比較したいことがよくありますから、この処理時間の差は非常に大きいと言えるでしょう。

全データ(199MB)
サンプリング後(15MB)

ここで、もとの199Mのデータと、ランダム・サンプリングによって15Mまで減らしたデータとを比べると、分析結果である共起ネットワークが非常に似通っていることがわかります。配置こそ変化していますが、語と語とのつながりはおおむね同じです。例えば「日本」「東京」「学生」「大学」のあたりを比べてみてください。

1つ上の項目でも書きましたが、日本人は1億2千万人以上います。ですが、きちんとランダム・サンプリングを行いますと、2500人も集めれば±2%程度の誤差で日本人の様子を調べることができます。いかに大規模データが手元にあるとしても、サンプリングを活用されることがお勧めです。サンプリングによって縮小したデータでまずは分析を行い、もしも「このトピックに関するデータがもっと欲しい」ということになれば、元データからの検索・サンプリングをやり直すとよいでしょう。KH Coderを使用する限り、100MB単位までならなんとかなりますが、ときおり噂を聞くような100GB単位の巨大コーパスについては、そのまま分析するのは現実的ではありません。

英語データを分析できますか?

Ver. 2.b.27からは英語とその他いくつかの西ヨーロッパ言語に対応しました。

英語データから語を取り出すには、Stanford POS Taggerによるlemmatizationか、Snowballによるstemmingを選ぶことができます。「その他のいくつかの西ヨーロッパ言語」についてはstemmingのみの対応です。

英語データ分析のための手順については「KH Coderによる英語データの分析」スライドをご覧下さい。

分析対象ファイルを修正・変更した場合は、新たなプロジェクトとして登録しなければならないのですか?

いいえ、必要ありません。前処理を再度行うことで、変更内容がKH Coderに取り込まれます。再度前処理を行うには、KH Coderのメニューから「前処理」「実行」を順にクリックして下さい。

ただし、外部変数を読み込んでいて、なおかつケース数が変わるという場合には、この方法は使えません。例えば、もともと新聞記事が500件あって、外部変数として掲載面・日付などを読み込んでいる状態を考えます。ここに記事を何件か付け足したいというような場合は、新たなプロジェクトとして登録しなければなりません。再度前処理を行っただけでは、外部変数(掲載面・日付)と記事の対応がとれなくなってしまうためです。

外部変数について

外部変数とは何ですか?

KH Coderでは、テキスト型データに含まれていない情報を「外部変数」として読み込み、検索やコーディングのための条件として利用することができます。

例えば新聞記事を分析する場合であれば、新聞記事が掲載された日付や、掲載された面などを、外部変数として読み込むことが考えられます。また、アンケート調査の自由回答項目を分析する場合は、性別・年齢・職業・学歴など(の通常の質問項目)を外部変数として読み込むと良いでしょう。

いったん外部変数を読み込めば、例えば、男性の回答中に特に多くあらわれる言葉のリストを表示したり、「男性の回答中に単語Aが出現していれば」といった条件での検索・コーディングを行うことができます。また、コーディング(数え上げ)の結果を、男女別に集計することもできます。

外部変数を読み込むにはどんなファイルを用意すればよいのですか?

テキストファイル(分析対象ファイル)と対応する外部変数ファイルを準備する必要があります。ここで「対応する」というのは、ケース数やケースの順番が同じということです。例えば、アンケート調査の自由回答項目を分析する時に外部変数を用いたい場合、次のような外部変数ファイルを準備する必要があります。なお、外部変数ファイルは、CSV形式かタブ区切り形式で保存する必要があります。

テキストファイル
外部変数ファイル
回答者Aの回答・・・・_________
回答者Bの回答・・・・
回答者Cの回答・・・・
回答者Dの回答・・・・
回答者Eの回答・・・・
回答者Fの回答・・・・
ID 性別 年齢
回答者A 男性
23
回答者B 男性
47
回答者C 女性
35
回答者D 男性
52
回答者E 女性
19
回答者F 女性
31

この場合、テキストファイルではそれぞれの回答が改行で区切られているので、KH Coderは「段落」として各回答を認識しています。したがってこの場合、外部変数を読み込む際には、「読み込み単位」として「段落」を選択します。もしも回答者数が、テキストファイルと外部変数ファイルとで食い違っていると、エラーメッセージが表示されて読み込みが中断されます。

なお、100や200といった数の外部変数を読み込むと、操作に支障が出る場合があるかもしれません。内部処理には一切問題ないのですが、GUI(操作画面)の都合で、「コーディング」「外部変数とのクロス集計」コマンドの操作が厳しくなるかもしれません。現状では、10〜20程度までがお勧めです。

読み込んだ外部変数はどうやって使うのですか?

主な機能と分析手順」のページで解説している「段階1」では、例えば男性・女性の回答にそれぞれ特徴的な語をリストアップしたり(関連語探索コマンド)、年代ごとに特徴的な語をプロットすることができます(対応分析コマンド)。対応分析コマンドでは、読み込んだ外部変数のリストからマウス操作で1つ変数を選んで分析を行えます。関連語探索コマンドでは、「<>変数名-->値」のように入力することで、特徴的な語のリストアップを行えます。例えば「<>性別-->男性」のように入力すれば、「性別」変数の値が「男性」のケースに特徴的な語がリストアップされます。

次に分析の「段階2」では、コーディングの結果を集計する際に、男女別に集計して男女の違いを見るといったことが可能です(外部変数とのクロス集計コマンド)。また、コーディング結果を使った対応分析によって、コードと変数の値をプロットして、互いの関係を見ることができます(対応分析コマンド)。

その他にも、コーディングルール中で「<>変数名-->値」のように記述することで、外部変数をコーディングに利用することもできます。また、「コンコーダンス」や「文書検索」で開く「文書表示」画面の下部に、読み込んだ外部変数の値が表示されます。よって、回答者ID(のようなもの)を外部変数として読み込んでおくと、確認が楽になる場合があるでしょう。

なお、「女性が1、男性が2」といった数字のコードが、外部変数ファイルに入力されている場合もあるかと思いますが、このままではコーディングルールやKH Coderの画面表示が少し分かりにくくなってしまいます。そんな場合には、「値ラベル」として「男性」「女性」のような文字列を入力することで、「<>性別-->男性」のように指定できるようになります。

※余談ですが、既にチュートリアルを一通りフォローされた方ならお気づきの通り、外部変数の利用法というのは、チュートリアルにあった「見出し」の利用法と非常に似通っています。実際、「見出し」というのは特殊な形の外部変数として、KH Coderの内部で扱われています。

値ラベルの入力が面倒なのですが、なんとかなりませんか?

マウスとキーボードを交互に使いながら、値ラベルを入力していく作業は、確かにいくぶん面倒です。同じ値ラベルを複数のプロジェクトに入力するような場合には、SQL文を利用すると多少は楽になるかもしれません。「ツール」「SQL文の実行」コマンドを使って、以下のようなSQL文を実行すると、複数の変数・値に一気にラベルを貼ることができます。(SPSSで言うところの「value labels」シンタックスのようなものです)

## 一時テーブルを作製(この部分は変更しない)
CREATE TABLE temp_labels(
	var   VARCHAR(255),
	val   VARCHAR(255),
	label VARCHAR(255)
);

## 一時テーブルにラベルを入力(この部分の2行目以下を編集)
INSERT INTO temp_labels (var, val, label) VALUES
	( '性別', '1', '女性'     ),
	( '性別', '2', '男性'     ),
	( '学歴', '1', '中学校'   ),
	( '学歴', '2', '高等学校' ),
	( '学歴', '3', '大学'     );

## ラベルデータをKH Coder向けに整形(ここから下も変更しない)
CREATE TABLE outvar_lab_new(
	id     INT PRIMARY KEY AUTO_INCREMENT,
	var_id INT NOT NULL,
	val    INT NOT NULL,
	lab    VARCHAR(255)
);

INSERT INTO outvar_lab_new (var_id, val, lab)
SELECT outvar.id, temp_labels.val, temp_labels.label
FROM   outvar, temp_labels
WHERE  outvar.name = temp_labels.var;

INSERT INTO outvar_lab_new (var_id, val, lab)
SELECT outvar_lab.var_id, outvar_lab.val, outvar_lab.lab
FROM outvar, outvar_lab
	LEFT JOIN temp_labels ON
		outvar.name = temp_labels.var
		AND outvar_lab.val = temp_labels.val
WHERE
	outvar_lab.var_id = outvar.id AND temp_labels.label IS NULL;

DROP TABLE temp_labels;

DROP TABLE outvar_lab;

RENAME TABLE outvar_lab_new TO outvar_lab

( '性別', '1', '女性' )」という1行が、「性別」という変数の値「1」に「女性」というラベルを貼る、という意味を表します。この部分には必要なだけ行を追加することができますが、最後の行末だけが「;」で、それ以外の行末は「,」であることにご注意下さい。この部分を編集した上でテキストファイルに保存しておけば、何度でも再利用できます。

WordMinerとKH Coderとの連携・併用について

併用することにどんな利点があるのですか?

■KH Coder側から見ると:

KH Coderを既にお使いの方には、対応分析(数量化III類)をはじめとする記述的多変量解析を行うための優れたソフトウェアとして、WordMinerをご利用いただけます。極端な書き方をすると、WordMinerをテキストマイニングのソフトとしてではなく、統計解析ソフトとして使わせていただく形になります。

■WordMiner側から見ると:

WordMinerを既にお使いの方には、分かち書きのための選択肢の1つとしてKH Coder(茶筌)をお使いいただけます。WordMinerで言うところの「構成要素変数」として、KH Coder(茶筌)による語の抽出結果をお使いいただけます。これによって、WordMiner上で品詞情報を利用することができるようになります。例えば、「名詞だけを使って分析をしてみよう」「形容詞だけを使って分析をしてみよう」といったことがWordMiner上で容易に行えます。
それに加えて、KH Coderの柔軟なコーディング機能もお使いいただけます。KH Coderによるコーディングの結果も、「構成要素変数」としてWordMiner上でお使いいただけます。

■「連携・併用」とは:

ここで言う「併用」とは、WordMiner上で、KH Coderによる語の抽出(分かち書き)結果やコーディング結果を利用することを指しています。WordMiner上で「構成要素変数」として利用・分析するということです。

その具体的な手順は?

仮に、データが質問紙調査の自由回答項目だとすると、以下のような2つのファイルを作成します。

テキストファイル
外部変数ファイル
回答者Aの回答・・・・_________
回答者Bの回答・・・・
回答者Cの回答・・・・
回答者Dの回答・・・・
回答者Eの回答・・・・
回答者Fの回答・・・・
ID 性別 年齢
回答者A 男性
23
回答者B 男性
47
回答者C 女性
35
回答者D 男性
52
回答者E 女性
19
回答者F 女性
31

もちろん、ID・性別・年齢以外にもたくさん変数があってかまいません。また、外部変数ファイル」はCSV形式のような、WordMinerで読み込める形式のファイルにします。テキストファイルについては、各ケースを改行で区切っておきます。もし自由回答方式の設問が複数ある場合は、テキストファイルを複数作成します。

以下は文章だけでの説明ですが、こちらのスライドの8枚目〜15枚目あたりに、スクリーンショット付きの解説があります(逆に解説の文章がちょっと少ないのですが…)。こちらもあわせてご参照下さい。
※このスライドは、WordMiner活用セミナー「テキスト型データのマイニングとその応用」にて、筆者がお話させていただいた時に使用したものです。

処理手順は以下のようになります:

  1. KH Coderでテキストファイルを処理(語の抽出ないし分かち書き)する
    1. 「ツール」→「プラグイン」→「入出力」→「新規プロジェクト − 無記入・空白の行に対応」をクリック
      ※「プロジェクト」→「新規作成」コマンドを利用すると、KH Coderは無記入・空白の行を「存在しないもの」と見なして無視します。よって、空白の行があるとケース数が減ってしまい、他の変数との結合(concatinate)に支障をきたす場合があります。
    2. テキストファイルを選択して「OK」をクリック
    3. 「前処理」→「実行」から前処理(語の抽出)を行う
  2. KH Coderによる語の抽出結果をファイルに書き出す
    1. 「ツール」→「『文書x抽出語』表の出力」→「不定長CSV(WordMiner)」をクリック
    2. 開いた画面で「集計単位の選択」部分を「段落」に設定
      ※KH Coderは改行で「段落」を区切ります。よって、上記のテキストファイルの場合は、それぞれのケースが「段落」としてKH Coderに認識されています。
    3. 「OK」をクリックして、名前を付けてファイルを保存する
      (ここでは仮に「抽出結果.csv」と名前をつけたことにする)
  3. WordMinerでプロジェクトの新規作成を行う
  4. WordMinerで外部変数ファイルを読み込む
  5. WordMinerで、KH Coderによる語の抽出結果を読み込む
    1. 「データの読み込み」から、先程保存した「抽出結果.csv」を選択して読み込む
      (これによって「名詞」「サ変名詞」「形容動詞」...といった原始変数が読み込まれる)
    2. 「変数の生成」→「●構成要素変数を生成」→「変数の種類を変更し、新しい変数を生成」を選択して、「次へ」をクリックする。そして、「名詞」「サ変名詞」「形容動詞」などにチェックを入れて構成要素変数を生成
      ※KH Coderによって既に分かち書きが行われているので、再度WordMiner上で分かち書きを行う必要はありません。よって、「変数の種類を変更」するだけで、構成要素変数を作成できます。
以上で「名詞」「サ変名詞」「形容動詞」などの構成要素変数が分析に使えるようになりました。品詞ごとに複数の構成要素変数に分かれているので、容易に品詞別に分析を行えます。複数の品詞を分析に用いたい場合には、「変数の生成」→「●構成要素変数を生成」→「構成要素変数同士を併合し、新しい変数を生成」を行うと良いでしょう。

その他

64bit版のWindows環境で2GBを超えるメモリを使用するには?

現在のWindows版パッケージは32bit構成ですので、64bit版のWindows上でも、2GBまでしかメモリを利用できません。しかし、手順はやや煩雑なのですが、ご自身で64bit版のMySQLやRをインストールしていただけば、2GB以上のメモリを使うことができます。

MySQLがより多くのメモリを使用できれば、「前処理効率化のためにデータをRAMに読み出す」設定が有効に働き、前処理が比較的短い時間で終わる場合があるでしょう。また、Rがより多くのメモリを利用できれば、文書のクラスター分析のような多変量解析が、メモリ不足のエラーで止まってしまうケースが減るかもしれません。

Rを64bit化する手順は以下のようになります:

  1. 64bit版のRをインストールする。
  2. KH Coderの解析に必要なRのパッケージをインストールする。ade4, amap, Cairo, flashClust, ggdendro, ggplot2, igraph, maptools, RColorBrewer, scatterplot3d, som, wordcloudなど。
  3. KH Coderの設定ファイル「config\coder.ini」をテキストエディタで開き、「r_path」という箇所(行)を、64bit版の「rterm.exe」のパスに修正する。

MySQLを64bit化する手順は以下のようになります:

  1. 64bit版のMySQLをインストール・設定する。この際、「max_heap_table_size」の値を搭載メモリにあわせて大きくしておくと良いでしょう。
  2. KH Coderの設定ファイル「config\coder.ini」をテキストエディタで開き、「all_in_one_pack」の行を「1」から「0」に変更する。また「sql_username」「sql_password」「sql_port」を、インストールした64bit版MySQLにあわせて修正する。

データの規模によっては焼け石に水かもしれませんが、64bit環境でめいっぱいメモリを積んでいるような場合には、試してみる価値があるかもしれません。

プロットをIllustratorで編集するには?(Windows環境)

たとえば対応分析のプロットで、重なってしまった語のラベル位置をなおしたり、ラベルのフォントサイズを変更したりといった編集を行いたい場合があるでしょう。Windows環境では、Adobe Illustratorを使って編集するのが1つの方法です。

KH CoderのプロットをIllustratorで編集する場合には以下の手順がスムーズなようです。WindowsのCS4環境でテストしました。

  1. KH Coderのプロット保存画面で、EPSまたはPDF形式を選択して保存します。※2.b.28でPDF形式での保存に対応します。
  2. 保存したファイルをAcrobatで開き、Acrobatから「名前を付けて保存」で、EPS形式で保存します。
  3. Illustratorで、Acrobatから保存したEPSファイルを開きます。

Illustratorでの編集

1度Acrobatで開いてEPSで保存するというのがカギのようです。この際に、オプションで「ソースと同じ(カラーマネジメントなし)」を選択しておくと、色味が維持されます。

なお、どうもKH Coderから保存したPDFファイルをそのままIllustratorで開くと、文字化けはしないものの、フォントがアウトライン化されて編集が少しやりにくくなってしまう様子です。KH Coderはプロットの作成・保存にRを使っていますので、おそらく上記はRそのものにも当てはまるのではないかと思います。

『言語研究のための統計入門』(くろしお出版)の「練習問題」や「実例研究」では、KH Coderで同じ操作を何十回も繰り返さねばならないのですか?

KH Coder操作方法の「別解」として、同じ作業を繰り返さなくてよい方法を別ページでご紹介しています。

『言語研究のための統計入門』 & KH Coder

どうしてもうまくいかない場合

どうしてもうまくいかなかったり、疑問が解決しない場合には、お気軽に にてご相談下さい。

なお、エラー・メッセージが出ている場合には、省略や意訳をせずに、エラー・メッセージをまる写ししてお知らせいただけると、問題を解決できる可能性が高くなります。

KH Coderを使った計量テキスト分析の見本になるような論文は?

どちらもKH Coderではなく、Autocode(リンク1リンク2)というソフトを使っているのですが、以下の2つがお勧めできます。

  • 太郎丸博 1999 「身の上相談記事から見た戦後日本の個人主義化」 川端亮編著 『非定型データのコーディング・システムとその利用』平成8年度〜10年度科学研究費補助金(基盤研究(A)(1))(課題番号08551003)研究成果報告書 39-154 PDF File
  • 川端亮 1999 「真如苑における霊位向上」 川端亮編著 『非定型データのコーディング・システムとその利用』平成8年度〜10年度科学研究費補助金(基盤研究(A)(1))(課題番号08551003)研究成果報告書 PDF File

前者の論文(太郎丸 1999)は内容も興味深いですし、問題の提示→その問題へのアプローチに適したデータと方法→分析結果→考察という、オーソドックスな論文としての構成がしっかりしていて勉強になります。後者の川端(1999)は、個別のインタビューからは解明できなかった「霊脳」について、自由記述の計量テキスト分析を行うことで手がかりを掴んでいます。計量テキスト分析が実際の研究にどのように寄与するのかということについて、その一端を示していると言えるでしょう。

次にKH Coderを使ったものでは、自分の携わったもので僭越ですが、以下の2つが分析事例として見本になるかもしれません。どちらの論文でも「主な機能と分析手順」ページで触れた「2段階での分析」を行っています。なお、前者の方が専門用語が少なく読みやすいかもしれません。

  • 川端亮・樋口耕一 2003 「インターネットに対する人々の意識 ―自由回答の分析から―」 『大阪大学大学院人間科学研究科紀要』 29: 163-181 PDF File
  • 樋口耕一 2011 「現代における全国紙の内容分析の有効性 ―社会意識の探索はどこまで可能か―」 『行動計量学』 38(1): 1-12 PDF File

KH Coderの設計思想を書いた論文は?

以下の論文に、「こういう方法での分析を行うためにKH Coderを作製した」ということを書いています。テキスト型データの分析方法を提案し、その方法での分析を実際に行うために、KH Coderを作製したという形です。

  • 樋口耕一 2005 「計量テキスト分析の方法と実践」 大阪大学大学院人間科学研究科 平成16年度 博士論文 PDF File
  • 樋口耕一 2004 「テキスト型データの計量的分析 ―2つのアプローチの峻別と統合―」 『理論と方法』(ISSN:0913-1442) 19(1): 101-115 PDF File

技術的な設計思想は文書になっていません。強いて書くならば、以下のようなことを考えながら作製しています。

  • 処理速度向上よりも、柔軟に機能を追加できる構造の維持を優先する
  • 検索やソートなどは極力MySQLに任せる
  • 多変量解析や統計処理は極力Rに任せる
  • インターフェイスとロジックは極力分離する

KH Coderの正式な表記は何ですか?

KH Coderの正式な表記は「KH Coder」です。「KH-Coder」「KH_coder」「KHCoder」「KH CODER」などではなく、「KH Coder」です。ただし縦書きの文書中では「KH CODER」と大文字で表記していただくと良いでしょう。
※強いこだわりがあるわけでもないのですが、もしかすると迷われる方もいらっしゃるかと思いまして…。

KH Coderの「KH」とは何の略ですか?

KHは「Kawabata Higuchi」の略だという説の他に、「Keystone Hammer」「Knowledge Harvest」「Knight Hawk」などの略だという説もありますが、最初の説がもっとも有力です。なお「Koichi Higuchi」の略だという説は誤りです。

Hosted by SourceForge

  *   Copyright © 2001-2013 樋口耕一
E-Mail: