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

  [No.1283] TF・IDFとJaccard 投稿者:   投稿日:2013/01/23(Wed) 15:24:49

樋口先生
 こんにちは、留学生の趙と申します。KH Coderを使わせていただきます。本当にいいソフトウェアだと思います。文書処理について、二つ質問があって、ちょっと聞きたいです。質問レベルが低いですが、ご返事がいただければ、助かります。宜しくお願いいたします。
 質問の一つ目としては、今A、B、C、三つクラス学生の自由記述文を分析したいですが、Aクラスの学生たち、すべての自由記述文の中に共通の単語を探す方法としてTF・IDF値を利用したいですが、KH CodeはAクラス各学生の自由記述文の中、TF・IDF値の単語順で並べたいが、どういう手順で操作すればいいですか。
質問の二つ目として、A、B、Cクラスで各学生特徴がある単語探したい場合、Jaccardの方法がいいと思いますが、もし他の方法があれば、教えて頂けますか。
 以上、すごく基礎の問題ですが、教えていただければ、本当にありがたいです。ぜひお願い致します。


  [No.1284] Re: TF・IDFとJaccard 投稿者:HIGUCHI Koichi  投稿日:2013/01/23(Wed) 23:56:46

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

> (1) すべての自由記述文の中に共通の単語

残念ながら、TF-IDF値で単語をソートするような機能は、現在のKH Coderには
ありません。「ツール」「文書」「『文書x抽出語』表の出力」コマンドを使
ってデータを取り出し、Excel・R・その他の統計ソフト上でご自身でTF-IDFを
算出していただく必要があります。

ただ、後述する対応分析を行うのも1つの手だと思います。

> (2) A、B、Cクラスで各学生特徴がある単語探したい場合

漱石「こころ」チュートリアルの、表2(Jaccard係数の表)か、図8(対応分
析)と同じ分析が良いでしょう。

ここで対応分析の際に、「差異が顕著な語を分析に使用」のチェックを外して
下さい。そうすると(1)と(2)の目的を同時に果たすことができます。原点(0,
0)付近に布置されるのは、特徴が無い≒どのクラスにも偏り無く共通にあら
われる語です。また原点から離れるのは、それぞれのクラスに特徴的な語とな
ります。

なお「こころ」チュートリアルではH1タグで上・中・下を区切っていますが、
こうしたタグを方法以外にも、外部変数を使う方法があります。
http://www.slideshare.net/khcoder/data-preparation-for-kh-coder


  [No.1285] Re: TF・IDFとJaccard 投稿者:   投稿日:2013/01/25(Fri) 16:24:09

樋口先生
 こんにちは、お世話になります。お忙し中、丁寧に教えて頂き、本当にありがとうございます。
 「文書x抽出語」のデータを使って、EXCELでTF・IDFを計算しています。TFの計算について聞きたいです。まず、文書の長さは、length_wの数値のことって間違いないでしょうか、またAクラス「遊ぶ」についての全体のTF・IDF値の計算についてですが、
例えば、以下の場合(学生さんは3名のみ)
     length_w   遊ぶ
      50      2
      60      0
      70      3
Aクラス、遊ぶに関するTFIDF値の計算は、
1. (2/50 × LOG(3/2))+ (0/60 × LOG(3/2))+ (3/70 × LOG(3/2))
2. 5/180 × LOG(3/2))
どちらが正しいでしょうか。
 また、TF・IDF計算について別の方法もありまが、例えば、特定の文書diにおける単語wjの出現頻度TFを(1)式で定義されます。単語wjを含む文書数をdf(wj)として、全文書数をDとするとIDFは(2)式で定義されます、TF・IDF値は(3)式のように定義されます。
TF = tf (di,wi)                  (1)
IDF = idf(t) = 1+ln(D/(df(wj)))        (2)
TF・IDF = tf(di)×idf(wi)             (3)
この計算方法は正しいでしょうか。
 また、jaccardについて、Aクラスのみ抽出語→共起ネットワーク分析する場合、jaccard0.2以上を選択して、図の中に表示された単語はAクラス各学生の中に、特徴がある単語の意味として理解できますか。

 すごく細かいな質問ですが、ぜひ宜しくお願いいたします。


  [No.1286] Re: TF・IDFとJaccard 投稿者:HIGUCHI Koichi  投稿日:2013/01/25(Fri) 18:24:41

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

> 文書の長さは、length_wの数値のことって間違いない

はい、これは間違いありません。


TF-IDFについては、ご自身では、1.と2.のどちらが正しいと考えますか? そ
して、それはなぜでしょう?

また、その正しい方と、「別の方法」とはどこが違っているでしょう?

あと、データが3行なのは、A〜Cクラスまでの3クラスが、それぞれの行に対応
して、3行になっていると言うことでしょうか?

> Aクラスのみ抽出語→共起ネットワーク分析

この「Aクラスのみ抽出語」というのは、どういうものでしょうか?

関連語検索で、Aクラスの学生に特徴的な語を検索した結果ということでしょ
うか。そして、関連語検索画面で「共起ネット」ボタンをクリックして、共起
ネットワークを作成したということでしょうか??

だとすれば、関連語検索でリストアップされる語=共起ネットワーク描画に使
用される語=Aクラスに特徴的な語、という理解で間違いありません。


  [No.1288] Re: TF・IDFとJaccard 投稿者:   投稿日:2013/01/27(Sun) 00:04:23

 樋口先生、こんにちは、早速ご返事していただき、ありがとうござい
ます。
 (1)まず文書の構成について、説明します。各学生記述文が短いので
、Aクラス全員の記述文を一つのファイルとして分析したいです。つまり
一段落は一人の記述文です。

そして、Aクラス「文書x抽出語」の抽出結果
     ength_w   遊ぶ
      50      2    Aクラス学生Aさん(dan1)
      60      0    Aクラス学生Bさん(dan2)
      70      3    Aクラス学生Cさん(dan3)

Aクラス「遊ぶ」のTF・IDF値計算方法:
「1」  (2/50 × LOG(3/2))
   +(0/60 × LOG(3/2))
   +(3/70 × LOG(3/2))

「2」 (5/180 × LOG(3/2))

 TF・IDFの計算は上記の2種類があるが、「2」のほうか正しいと思いま
す。色々な文献を参考した上、Aクラス全体を対象として考えるなら、TF
は「遊ぶ」という語がAクラス全体の文書に現れる回数です。したがって
、「2」の式が正しいと思います。また、本当に勉強不足ですので、別の
方法と比べて、違う点がまた分かりませんが、もし上例Bさんも「遊ぶ」
に関する記述があったら、LOG(3/3)になり、つまり、TF・IDFは「0」
になります。しかし、TF・IDFは、ある単語が文書中でどの程度重要かを
数値化したものです。したがって、別の計算方法のIDF = 1+ln(D/(df(
wj)))は、TF・IDFは「0」にならないので、この点に関しては、違って
くると思います。

 (2)「Aクラスのみ抽出語」について、日本語をうまく表現しなかっ
たですので、すいません。私は言いたいのが「関連語検索」ではなく、A
クラスを一つのファイルとして、分析する際に、「ツール」→「抽出語
」→「共起ネットワーク」の順番で分析する場合、共起ネットワークオ
プションの画面では、描画する共起関係の絞り込みのところで、jaccard
0.2以上を選択した後、作成した図の中に表示された単語は、Aクラス学
生の中、共通の単語であり、Aクラスの特徴を代表できる単語であると思
います。そういうふうに理解できますか。
 初心者として、細かい質問ばかりですので、本当にすみません。ぜひ
、宜しくお願いいたします。


  [No.1289] Re: TF・IDFとJaccard 投稿者:HIGUCHI Koichi  投稿日:2013/01/28(Mon) 10:40:36

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

まぁ、どちらにしても、あまり計算結果が大きく変らないような気もしますが、
ともあれ、私の考えを以下に書いていきます。

そうですね、Aクラス全体でのTF-IDF値と考えるならば、TF部分(5/180)につ
いては「2」式が適当でしょう。ただし、IDFの部分LOG(3/2)には少し疑問が
残ります。IDFは全データ(A〜Cまでの全クラス)で計算するのが一般的だと
思います。

     ength_w   遊ぶ
      50      2    Aクラス学生Aさん
      60      0    Aクラス学生Bさん
      70      3    Aクラス学生Cさん
      50      2    Bクラス学生Dさん
      60      0    Cクラス学生Eさん

こうしたデータであれば、「遊ぶ」のIDF値はLOG(5/3)とするのがより一般
的でしょう。

さらに、「別の方法」のように、IDF値には1を加えて、IDFが0にならないよう
にする場合が多いです。

結果として、上記のデータでAクラス「遊ぶ」のTF-IDF値は以下のようにする
のが一般的ということになります。

> (5 / 180) * { LOG(5/3) + 1 }


私の記憶が正しければ、TFというのは、その語がAクラスでどれだけ多く出現
したのかをあらわす数値ですね。そして、IDFはその語がどれだけ珍しいのか
(=文書識別に役立つのか)をあらわす数値です。よってIDFの方は、全デー
タで計算した方が正確に「珍しさ」を計算できるだろうということです。そ
のため、A〜Cまでどのクラスであっても、IDFの値は一緒として計算する場合
が多いでしょう。

以上が現在の私の考えですが、もちろん、こうした値の意味について考えてい
ただいて、ご自身で「いや自分はこの考え方で計算するから、こっちの式で良
い」というふうに決めていただくこともあり得ると思います。


  [No.2619] Re: TF・IDFとJaccard 投稿者:   投稿日:2016/09/20(Tue) 21:59:18

樋口様、

この1284のやり取りに関して質問させてください。
KHcoderのや論文の中ででてくる「特徴語」について正確に理解したい次第です。
Jaccard係数は、共起の強さを表し、IDFは、重みづけという観点から、
文章数や単語数に対して、希少性を表していると理解していましたが、
1284のやり取りから、KHcderにはIDFを計算する機能はないが、
チュートリアルにある外部変数を使う方法でやると、
特徴語が解るというのは、チュートリアルの外部変数を使う方法で、
原点からの距離は、自動的にIDFの計算をしているという意味でしょうか?
あるいは、IDFではないが、相対的にIDFと似たような数字を計算していると
言う意味でしょうか? あるいは、それ以外の意味でしょうか?
教えて頂けますと幸いです。




> こんにちは、樋口です。書き込みありがとうございます。
>
> > (1) すべての自由記述文の中に共通の単語
>
> 残念ながら、TF-IDF値で単語をソートするような機能は、現在のKH Coderには
> ありません。「ツール」「文書」「『文書x抽出語』表の出力」コマンドを使
> ってデータを取り出し、Excel・R・その他の統計ソフト上でご自身でTF-IDFを
> 算出していただく必要があります。
>
> ただ、後述する対応分析を行うのも1つの手だと思います。
>
> > (2) A、B、Cクラスで各学生特徴がある単語探したい場合
>
> 漱石「こころ」チュートリアルの、表2(Jaccard係数の表)か、図8(対応分
> 析)と同じ分析が良いでしょう。
>
> ここで対応分析の際に、「差異が顕著な語を分析に使用」のチェックを外して
> 下さい。そうすると(1)と(2)の目的を同時に果たすことができます。原点(0,
> 0)付近に布置されるのは、特徴が無い≒どのクラスにも偏り無く共通にあら
> われる語です。また原点から離れるのは、それぞれのクラスに特徴的な語とな
> ります。
>
> なお「こころ」チュートリアルではH1タグで上・中・下を区切っていますが、
> こうしたタグを方法以外にも、外部変数を使う方法があります。
> http://www.slideshare.net/khcoder/data-preparation-for-kh-coder


  [No.2622] Re: TF・IDFとJaccard 投稿者:HIGUCHI Koichi  投稿日:2016/09/21(Wed) 19:08:09

こんにちは、樋口です。

IDFの値がとても小さい語は、どこにでもでてくるわけですから、対応分析で
は原点付近に布置される可能性が高いと考えました。

しかし、具体的な計算式としては別物だと思います。計算式は別物だけれど、
結果としてそうなるのではないかなということです。