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を用いた多変量解析が上手く行かない場合には、以下のような方策が考えられます。
- データサイズを縮小したくない場合には、Rではなく、大規模データに対応した統計ソフトをご利用いただくとと良いでしょう。「文書x抽出語」表の出力コマンドを使ってKH Coderからデータを取り出し、大規模データを扱える統計ソフトで解析していただく形になります。
- KH CoderのRを用いた多変量解析機能を利用されたい場合には、ランダム・サンプリングを行うことでデータサイズを縮小されるのが一手でしょう。日本人は1億2千万人以上いますが、きちんとランダム・サンプリングを行いますと、2500人も集めれば±2%程度の誤差で日本人の様子を調べることができます。KH CoderからRに分析用データとして送られるのは「文書x抽出語」表ですが、ここでの文書数を10,000以下、抽出語数を100以下に抑えれば比較的短時間で解析結果を得られるでしょう。なお、文書数を減らすためには、分析対象ファイルを加工して内容を削る(サンプリングする)しかありません。ですが抽出語数については、分析のオプション画面で使用する語を減らすことができます。
- 上記2つの中間的な方法として、Rに送る「文書x抽出語」表のサイズが小さくなるように工夫することが考えられます。目安は上に挙げたとおり、文書数10,000以下、抽出語数100以下です。
- 抽出語数については、品詞や出現数などを使って100以下におさえると良いでしょう。
- 文書数については、文単位ではなく、段落単位/文章単位での分析を考えると良いでしょう。「同じ段落/文章に登場する語は?」といった文脈情報を解析に利用できる上に、文の数よりも段落/文章の数の方が圧倒的に少ないので、「文書x抽出語」表のサイズも小さくなります。
仮にデータが新聞記事であれば、文単位で解析せずに記事単位で解析すると良いでしょう。あるいはTwitterのようなデータであれば、1つ1つのtweetを「文書」と見なすのではなく、一連の対話をまとめて1つの「文書」と見なすような前処理を行うとよいかもしれません。
- 抽出語の共起ネットワーク作成やクラスター分析・多次元尺度法などを行う場合には、さらに別の方策もあります。「抽出語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単位の巨大コーパスについては、そのまま分析するのは現実的ではありません。
分析対象ファイルを修正・変更した場合は、新たなプロジェクトとして登録しなければならないのですか?
いいえ、必要ありません。前処理を再度行うことで、変更内容がKH Coderに取り込まれます。再度前処理を行うには、KH Coderのメニューから「前処理」「実行」を順にクリックして下さい。
ただし、外部変数を読み込んでいて、なおかつケース数が変わるという場合には、この方法は使えません。例えば、もともと新聞記事が500件あって、外部変数として掲載面・日付などを読み込んでいる状態を考えます。ここに記事を何件か付け足したいというような場合は、新たなプロジェクトとして登録しなければなりません。再度前処理を行っただけでは、外部変数(掲載面・日付)と記事の対応がとれなくなってしまうためです。
|