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

  [No.1133] ベイズ学習による分類−外部学習から学習 投稿者:袋井  投稿日:2012/10/12(Fri) 20:18:05
ベイズ学習による分類−外部学習から学習 (画像サイズ: 490×678 106kB)

樋口先生さま

お世話になります、袋井と申します。
いつもありがとうございます。


初めて、「ベイズ学習による分類」を使用しました。

※ベイズ推測統計については知識もあり、ベイジアンネット、ナイーブベイズの専門ソフトの使用経験はございます


データは、kokoro2.txt を利用させていただきました。

マニュアル、チュートリアルには目を通しましたが、最初からエラーとの遭遇です。

添付の画像ファイルをご覧ください。

・「学習する外部変数」(bayes_training.csv)を指定しようとしましたが、非表示のために選択できません

・「現在の設定で学習に使用される語の数」の「チェック」をクリックすると、エラー画面が表示されます

・エラー画面の「OK」ボタンをクリックすると、ツール全体が落ちてしまいます


DBが壊れているかと思い、インストールからやり直しをしても、再現性があります。


私の理解不足、思い違いによる操作ミス、設定し忘れ等が原因だと思いますが、よく分かりません。

確認ポイントを教えていただけませんか。
よろしくお願いします。


  [No.1136] Re: ベイズ学習による分類−外部学習から学習 投稿者:HIGUCHI Koichi  投稿日:2012/10/12(Fri) 23:28:57

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

> 「学習する外部変数」(bayes_training.csv)を指定しようとしましたが、
> 非表示のために選択できません

外部変数として使用するためには、事前にCSVファイルを外部変数として読み
込んでおく必要があります。

メニューの「ツール」「外部変数と見出し」「読み込み」から、読み込みを行
って下さい。

> 「現在の設定で学習に使用される語の数」の「チェック」をクリックすると、
> エラー画面が表示されます

これはバグですね。何か外部変数を選択していないと「チェック」の処理はで
きません。しかし現状では、その点を確認せずに「チェック」処理が動くよう
になっていて、結果としてエラーになっております。

おかげさまで、またバグを見つけることができました。
重ねてお礼申し上げます。


  [No.1150] Re: ベイズ学習による分類−外部学習から学習 投稿者:袋井  投稿日:2012/10/16(Tue) 21:20:45

樋口先生さま

お世話になります、袋井と申します。
いつもありがとうございます。

ご教示いただき、ありがとうございました。

御礼が遅くなり、失礼をお詫びいたします。

マニュアル、チュートリアルを何度も見ながら追試していますが、よく理解できません。

どのような質問をしたらよいのか苦慮しており、返事が遅くなりました。


分かりにくい変な質問かもしれませんが、よろしくお願いします。


(1)
サンプルのbayes_training.csvには、「学習用」「正解」の2種類のデータが用意されています。

メニュー【ベイズ学習による分類】−【外部変数から学習】の画面において、
学習する外部変数で、「学習用」を明示的に指定しますが、
以降、「正解」を明示的に指定する場面はどこにもありません。

「正解」は、どの処理で参照しているのでしょうか?

「学習用」「正解」という変数名は予約語であり、他の変数名ではいけないのでしょうか?

この2種類のデータからなるファイルを用意しなくてはならないのでしょうか?

「学習用」の1種類のデータしかないとすれば、学習処理はできないのでしょうか?



(2)
メニュー【ベイズ学習による分類】−【学習結果を用いた自動分類】の画面において、
変数名に未だ使用されていない変数を設定して、
「分類ログをファイルに保存」にチェックを入れて、処理をすると、
「指定された名前の変数がすでに存在します」とメッセージが出力されます。

一方、「分類ログをファイルに保存」にチェックを入れなければ、上記メッセージは表示されません。

私の操作に間違いがあるのかもしれませんが、
チェックの有無の違いによる振る舞いの違いは、これでよいのでしょうか?



(3)
マニュアルのp75の図43「外部変数から学習」において、最小出現数が1、最小文書数が3と設定されています。

出現数は必ず文書数以上となりますので、この設定には違和感を感じます。

出現数を最小文書数よりも小さく設定する特段の意味は何でしょうか?



(4)
メニュー【外部変数と見出し】【読み込み】【csv】で、
既に読み込んだファイルがある場合には、変数の上書きを確認するメッセージが表示されます。

これを避けるために、既に読み込んだ外部変数ファイルを削除したい場合には、どのような操作をすればよろしいのでしょうか?


以上、変な質問でご迷惑をお掛けしますが、よろしくお願いします。


  [No.1152] Re: ベイズ学習による分類−外部学習から学習 投稿者:HIGUCHI Koichi  投稿日:2012/10/16(Tue) 23:07:45

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

この機能は私自身を含めて、やや利用実績が少ないので、機能もマニュアルも
未成熟な部分も多いかと思います。

> 「正解」は、どの処理で参照しているのでしょうか?
> 「学習用」「正解」という変数名は予約語であり、他の変数名ではいけない
> のでしょうか?
> 「学習用」の1種類のデータしかないとすれば、学習処理はできないのでし
> ょうか?

チュートリアルでは、「学習用」変数をもとに学習して、その結果を*.knbフ
ァイルに保存しています。そして、その学習結果(*.knb)を使った自動分類
の結果を、「自動分類」変数に保存しています。

そして、「自動分類」がどの程度成功したかという答え合わせのために、「正
解」を使っています。この答え合わせにはコーディングルール「bayes_check.
txt」を使っています。この中身を見ていただけば、「<>自動分類-->上 and
<>正解-->上」のような場合、すなわち「自動分類」変数の値が「上」でなお
かつ「正解」変数の値も「上」のような場合には、「*分類成功」として数え
るようになっています。

この答え合わせ用のコーディングルール「bayes_check.txt」をそのまま使用
する場合には、「正解」「自動分類」という変数名を使わねばなりません。そ
れ以外の場合は、別にどんな名前の変数でも問題ありません。

※このチュートリアルでは、2-foldでの交差妥当化(cross-validation)を手
動で行っているようなものです。実利用の場面では、「外部変数から学習」コ
マンドで「交差妥当化を行う」にチェックを入れれば、k-foldの交差妥当化を
自動で行えます。ここにチェックが入ると、学習結果をファイルに保存した上
で、別途に交差妥当化が行われます。(別コマンドに独立させた方が分かりや
すかったかもしれないですね…)


> メニュー【ベイズ学習による分類】−【学習結果を用いた自動分類】の画面
> において、変数名に未だ使用されていない変数を設定して、「分類ログを
> ファイルに保存」にチェックを入れて、処理をすると、「指定された名前の
> 変数がすでに存在します」とメッセージが出力されます。
>
> 一方、「分類ログをファイルに保存」にチェックを入れなければ、上記メッ
> セージは表示されません。

だいぶ試したのですが、手元ではこの現象を再現できませんでした。もし、再
現の助けになりそうな詳しい手順などありましたら、お教えください。外部変
数と見出しのリスト画面を一度閉じて、再度開くと、変数が見えるとかあるで
しょうか。

> 最小出現数が1、最小文書数が3

確かにおっしゃる通りなのですが、まぁ、ここは、「出現数による選択はせず、
文書数のみで語を選択した」ものとお考えいただければ幸いです。

> メニュー【外部変数と見出し】【読み込み】【csv】で、既に読み込んだ
> ファイルがある場合には、変数の上書きを確認するメッセージが表示されま
> す。
>
> これを避けるために、既に読み込んだ外部変数ファイルを削除したい場合に
> は、どのような操作をすればよろしいのでしょうか?

【外部変数と見出し】【リスト】画面で、変数を選択し、「削除」ボタンをク
リックして下さい。

ただし、もしも同じ内容の変数であれば、再度読み込みをしていただく必要は
無いかと存じます。


機能もマニュアルも未成熟なので、なかなか伝わりにくいと思うのですが、以
上の記述から多少ともコマンドの意図が伝わりますでしょうか。


  [No.1153] Re: ベイズ学習による分類−外部学習から学習 投稿者:袋井  投稿日:2012/10/18(Thu) 20:38:53

樋口先生さま

お世話になります、袋井と申します。
いつも、分かりやすくご教示いただき、ありがとうございます。


(1)
前回までにご報告しましたエラーが、私の理解不足によるものであることが分かりました。
大変に失礼いたしました。

新しいエラーに遭遇しましたので、ご確認させてください。


「交差妥当化」にチェックを入れない場合、「学習結果を新規ファイルに保存」を2回、聞いてきますが、
振る舞いは、これでよろしいのでしょうか?


学習終了後に、以下のエラーメッセージが表示されます。

 Usage $widget->wm(...) at /<C:\khcoder20120925\kh_coder.exe>Tk/Submethods.pm line 37.
 
 Tk callback for .toplevel6.button1
 <ButtonRelease-1>
 (command bound to event)

再現性はあります。

なお、学習結果ファイルは、正常に作成されていることを確認しています。



(2)
「外部変数から学習」において、「交差妥当化を行う」のチェックの有無による振る舞いの違いが、理解できません。
なぜ、振る舞いが違うのでしょうか?

 ⇒チェックあり
  「分類ログをファイルに保存」「分類結果を外部変数に保存」のチェックが表示

 ⇒チェックなし
  「分類ログをファイルに保存」「分類結果を外部変数に保存」のチェックが非表示



(3)
樋口先生が書かれた
> ※このチュートリアルでは、2-foldでの交差妥当化(cross-validation)を手動で行っているようなものです。
について、ご確認させてください。

チュートリアルのbayes_training.csvの27ケース(学習用)を学習用データとして、110ケースを検証用データとする
という意味でしょうか?



(4)
マニュアルのp74の、コマンドの概要で、以下のように記載されています。

 このコマンドでは、分類の「見本」もしくは教師信号から学習を行い、その結果を*.knbファイルに保存・・・

「もしくは」という接続詞から、2つのうち一方を選択するものと理解しました。

前者の、分類の「見本」からの学習は理解できます。

後者の、教師信号から学習は、分かりません。 どのようなものでしょうか? どのように操作するのでしょうか?

もしかしたら、以下のような理解でよろしいのでしょうか?

kokoro2を題材とした場合に、
・前者は、bayes_training.csvの27ケース(学習用)を学習用データとして学習し、110ケースを検証用データとして自動分類
・後者は、110ケースを学習用データとして、n分割交差妥当化で学習を行う



(5)
マニュアルのp72の、脚注について、ご確認させてください。

手元には実行できるデータがないので確認できませんが、
複数の事柄分だけ学習を行い、その学習結果を、同一の学習結果ファイルにAppendすればよいのですね。



(6)
KH coderでは、Naive Bayesを採用されています。

ナイーブベイズには、補集合を用いたComplement Naive Bayesがあるそうです。

樋口先生のPerl環境で、Complement Naive Bayesはあるのでしょうか?

もしあるようならば、将来的には、これら2種類のナイーブベイスを比較利用できればと思います。

※ちなみに、私が業務で利用しているTrueTeller@NRIでは、Complement Naive Bayesを使っています
 
 kokoro2のチュートリアルを共通題材にして、TrueTellerでもやってみて、KH coderと比較してみたいと思います。



長々とすいませんでした。
よろしくお願いいたします。


  [No.1154] Re: ベイズ学習による分類−外部学習から学習 投稿者:HIGUCHI Koichi  投稿日:2012/10/18(Thu) 21:20:51

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

> 「交差妥当化」にチェックを入れない場合、「学習結果を新規ファイルに保
> 存」を2回、聞いてきますが、振る舞いは、これでよろしいのでしょうか?

いや、良くないと思います。これも、こちらの環境では今のところ発生してい
ないので、もう少し調べてみます。

何かの操作をしたら、それ以降、この現象が発生したというような心あたりが
もしおありでしたらご教示ください。

> 「交差妥当化を行う」のチェックの有無による振る舞いの違い

デフォルトのfold 10による交差妥当化では、まずデータを10分割します。こ
の分割には乱数を使っています。そして、1つのグループを除いて、残り9グル
ープによる学習を行います。この学習結果を使って、除いてあった1つのグル
ープの自動分類を行います。これを10回繰り返すことで、結局、全グループの
自動分類を行います。そして、自動分類が正しかったかどうかを確認するのが
KH Coderにおける交差妥当化です。

KH Coderではこの交差妥当化の際に、試験的に行った分類の結果やログを保存
して、後から詳細を確認することができます。

それに対して交差妥当化を行わない場合は、学習処理のみで、自動分類は行わ
れません。そのため、分類結果やログを保存することはできません。

> チュートリアルのbayes_training.csvの27ケース(学習用)を学習用データ
> として、110ケースを検証用データとするという意味でしょうか?

はい、そのような形です。より正確には、bayes_training.csvの27ケース(学
習用)を学習用データとして、残りの110 - 27 = 83ケースを検証用データと
しています。

> 分類の「見本」もしくは教師信号

あいまいでしたね。「分類の『見本』、言葉を換えると教師信号」とご理解く
ださい。

> マニュアルのp72の、脚注について、ご確認させてください。
>
> 手元には実行できるデータがないので確認できませんが、
> 複数の事柄分だけ学習を行い、その学習結果を、同一の学習結果
> ファイルにAppendすればよいのですね。

はい、複数の事柄分だけ学習を行っていただくことになります。ただ、学習結
果ファイルも別々にしてください。そして、事柄分だけ(学習結果ファイルの
数だけ)分類を行っていただくという形になります。

> Complement Naive Bayes

これはなかなか良さそうですが、以前探した時にはPerl用ライブラリはありま
せんでした。せっかくTrueTellerと比べていただけるようでしたら、「Naive
Bayes」なら同じくらいの性能が出ているのかどうかから確認していただくと
良いかもしれません。(出ていなかったら少し困るのですが、まぁ、きっとそ
の場合は何かバグがあるのでしょうから…)


  [No.1156] Re: ベイズ学習による分類−外部学習から学習 投稿者:袋井  投稿日:2012/10/19(Fri) 22:04:10

樋口先生さま

お世話になります、袋井と申します。
いつも、ご丁寧にご教示いただき、ありがとうございます。
心より御礼を申し上げます。


最初は不慣れなこともあり、先生のお手を何度も煩わせてしまいましたが、
お陰さまで、ベイズ学習ツールを理解でき、無事に使いこなしております。



−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

1.先にご報告したエラー


結果的には、私の操作ミスが原因でした。


【ベイズ学習による分類】では、私が想定していたメッセージ表示の流れとは違っており、操作ミスをしていました。


私が想定しているメッセージ表示の流れとは、以下のようなものです。

(例)
【前処理】−【前処理の実行】

「この処理には時間がかかる場合があります。続行してよろしいですか?」メッセージ
 ⇒「OK」ボタン

「砂時計表示」

「処理が完了しました。 経過時間: 00:00:55」メッセージ


しかし、【ベイズ学習による分類】では、このようなメッセージ表示の流れにはなっていませんでした。

【ベイズ学習による分類】−【外部変数から学習】ウィンドウ
 ⇒「OK」ボタン

「この処理には時間がかかる場合があります。続行してよろしいですか?」メッセージ
 ⇒「OK」ボタン

【学習結果を新規ファイルに保存】ウィンドウ
 ⇒ファイル名入力

を行うと、【外部変数から学習】ウィンドウに戻ります。


つまり、「砂時計表示」がなかったために、処理が行われなかったと思ってしまいました。


そこで、やりなおすために、【外部変数から学習】ウィンドウで、もう一度、OKボタンを押してしまっていたことが原因でした。



【ベイズ学習による分類】でも、上述した【前処理の実行】と同じようなメッセージの表示の流れになっていればよいなと思いました。
具体的には、以下のような流れです。

【ベイズ学習による分類】−【外部変数から学習】ウィンドウ
 ⇒「OK」ボタン

【学習結果を新規ファイルに保存】ウィンドウ
 ⇒ファイル名入力

「この処理には時間がかかる場合があります。続行してよろしいですか?」メッセージ
 ⇒「OK」ボタン

「砂時計表示」

「ナイーブベイズモデルの学習が終了しました。今回学習した文書:27」





2.TrueTellerとの比較


結論から言えば、KH coderに軍配を挙げてよいと思います。

kokoro2を題材にして、ナイーブベイズ学習で文書自動分類のベンチマークの報告はなされていないと思いますので、
樋口先生には良いご報告ができました。ご恩返しができました。


ソフトが異なりますので、全く同じ計算条件にはできませんが、採用する語の数を3以上で揃えました。

27ケースを教師データとして学習し、110-27=83ケースを分類データとして自動分類を行い、正解と突き合わせました。


TrueTellerでは、優位度と呼ばれる独自な分類の指標があります。
これが閾値を下回っていると分類先を決めることができずに、「未分類」として残ります。

平たくいえば、分類として自信がもてるものは分類するが、自信がないものは分類を保留する、
というイメージです。

この数値は、推奨値(デフォルト値)を採用しました。


計算結果は、以下のようになりました。

()内数値は、ケース数です。


全体(110)


⇒上( 21)

  ⇒教師データ(10)

  ⇒分類データ(11)
    ⇒○(10)
    ⇒×( 1) ・・・ 「下」が誤分類された


⇒中( 21)

  ⇒教師データ( 4)

  ⇒分類データ(17)
    ⇒○(13)
    ⇒×( 4) ・・・ 「上」が誤分類された


⇒下( 57)

  ⇒教師データ(13)

  ⇒分類データ(44)
    ⇒○(39)
    ⇒×( 5) ・・・ 「上」が誤分類された


⇒未分類(11)


自信をもって分類できたのは、110-11=99ケースです。
残り11ケースについては、分類の自信がなく、保留されたということです。

自信をもって分類した99ケースについては、全部が○かといえばそうではなく、計10ケース(1+4+5)が×です。

その先の作業としては、未分類(11)を分類できるように、優位度の閾値を下げていくことになりますが、
時間がなくてやっておりません。

また時間を確保してやってみたいと思いますが、恐らく、誤分類ケースが増えてくるのではないでしょうか?


一方、KH coderは、私の計算結果では、110ケースのうち、○が103、×が7でした。


ということで、KH coderに軍配を挙げてよいと思います。

さすが、樋口先生です。


  [No.1158] Re: ベイズ学習による分類−外部学習から学習 投稿者:HIGUCHI Koichi  投稿日:2012/10/19(Fri) 22:32:34

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

メッセージ表示の流れ、再検討してみます。丁寧に状況をお教えいただき、大
変ありがとうございます。

また、同じデータ(こころ)同じ手法(ナイーブベイズ)であれば、同等程度
の性能が出ているようですね。TrueTellerでの検証結果を詳細にお教えいただ
き、感謝申し上げます。商用ソフトウェアもいくつかは買って様子を見ている
のですが、TrueTellerは手元にありませんでしたので、とても参考になりまし
た。重ねてお礼申し上げます。

なお、釈迦に説法かと思いますが、「こころ」の上・中・下を分けるのは、
ナイーブベイズ向けの課題といいますか、ナイーブベイズで上手くいきやすい
データ特性があると思います。上・中・下に特徴的な語が割とはっきりしてい
るからです。こういう各グループの特徴語がはっきりしているデータだとナイ
ーブベイズで上手くいきますが、そうでもない場合はComplementの方や、SVM、
Random Forestの方が精度が上がる可能性がありますのでご留意下さい。
(現状のKH Coderでは、学習結果を人間が目で見て理解できることを重視して
ナイーブベイズのみの採用となっていますが…)

なにはともあれ、例によって丁寧で示唆に富む書き込みに感謝申し上げます。


  [No.1159] Re: ベイズ学習による分類−外部学習から学習 投稿者:袋井  投稿日:2012/10/20(Sat) 11:53:55

樋口先生さま

お世話になります、袋井と申します。
いつもありがとうございます。

樋口先生が書いてくださいましたことは、よく理解できております。


−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

分類では、「精度」だけでなく、「汎化」も含めた総合的な性能が重要であると理解しています。
そのためにブースティングは有効な手法であり、私も多用しています。


教師あり分類では、私はSVMをよく使います。
線形分離困難なものを非線形でスパッと分離できるのは気持ちがよいのですが、
その根拠を人間に分かりやすい形で提示できるソフトは、あまりないように思います。
(昔、富士通がニューラルネットで努力したことがありますが)

KH coderのナイーブベイズ学習の結果の解釈のしやすさは、樋口先生のマインドだと思って敬意を表しております。


ナイーブベイズは知っておりましたが、あまり使ったことがありませんでした。

適した題材に恵まれなかったということとも関係あるかもしれませんが、
Bayes inference の醍醐味である、変数間の依存性を無視しているモデルという点が、そもそも気に入りませんでした。


ベイジアンネットはよく利用しています。
SEM(共分散構造分析)、グラフィカルモデリングの経験がありましたので、相補的利用しています。

一時期は、デンマーク、フランス、日本の3種類の製品を使うほどに、のめりこんでいました。



−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

樋口先生、一点、教えてください。


kokoro2を題材とします。

各カテゴリ(上、中、下)に対する特徴語として、以下の2種類が考えられと思います。

(1)
【外部変数と見出し】−【特徴語(一覧形式)】
各カテゴリ(上、中、下)に対する、偏りに着目した特徴語

(2)
【ベイズ学習】−【自動分類結果ファイル】
各カテゴリ(上、中、下)に対する、分類への寄与度の大きさに着目した特徴語


これら2つを見比べていて、思ったことがあります。

(2)で分散が大きい順にSORTした上位6語は以下のようになります。

先生-名詞
お嬢さん-名詞
兄-名詞C
叔父-名詞
妹-名詞C
妻-名詞C

分散が大きい上位3語(先生、お嬢さん、兄)は、(1)関連語検索の特徴語(一覧形式)にありますが、以下の3語は入っておりません。
叔父-名詞
妹-名詞C
妻-名詞C

なぜでしょうか?


  [No.1167] Re: ベイズ学習による分類−外部学習から学習 投稿者:HIGUCHI Koichi  投稿日:2012/10/26(Fri) 21:51:21

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

> (1)
> 【外部変数と見出し】−【特徴語(一覧形式)】
> 各カテゴリ(上、中、下)に対する、偏りに着目した特徴語

これはJaccard係数でピックアップしたものですね。「関連語探索」機能を
使って計算・ピックアップしています。

> (2)
> 【ベイズ学習】−【自動分類結果ファイル】
> 各カテゴリ(上、中、下)に対する、分類への寄与度の大きさに着目した特徴語

これはおそらく学習結果ファイルのことですね。ベイズ学習の副産物というこ
とになりますでしょうか。

計算方法が異なるので結果が異なるのも当然ですが、(1)のJaccard係数では、
共起の数がかなり重視されます。

> 叔父-名詞
> 妹-名詞C
> 妻-名詞C

「こころ」チュートリアルの表2を見ると、「妻」はあるようですから、「叔
父」「妹」を見てみましょう。【外部変数と見出し】【リスト】【特徴語】
【選択した値】をクリックすることで、「関連語探索」画面を開き、詳細を
見ることができます。ここではチュートリアルと同様に「単位」を「文」と
しておきます。

「妹」は共起が13と小さいために、上述のJaccard係数の特徴から、かなり下
の方に行っています。

「叔父」はTop 10入りにかなり近いところにあって、おしい感じなのですが、
やはり、共起がより多い語がより上位に入っています。

結局の所、偏りに加えて、共起の数が相当重視されるというJaccard係数の特
徴が原因でしょう。ちなみに「関連語探索」画面でJaccardではなくOchiaiを
選択すると、「叔父」「妹」ともにTop 10入りする(Excelの表に入る)よう
です。


  [No.1172] Re: ベイズ学習による分類−外部学習から学習 投稿者:袋井  投稿日:2012/10/27(Sat) 10:12:57

樋口先生さま

お世話になります、袋井と申します。
いつもありがとうございます。

計算方法が異なるので結果が異なるのも当然であると理解していましたが、
勝手な思い込みで間違った使い方をしたくありませんでしたので、
また、使い分け、相補的利用という観点からも、何かHint&Tipsが得られたらと思いました。

分かりやすくご説明をいただきましたので、とてもよく分かりました。

おかげさまでベイズ学習については使いこなしができております。

色々とありがとうございました。


  [No.1185] ベイズ学習による分類機能の、外部からの利用可能性 投稿者:袋井  投稿日:2012/11/17(Sat) 12:22:51

樋口先生さま

お世話になります、袋井と申します。
いつもありがとうございます。


ベイズ学習による自動分類は、無事に使いこなしができております。
とても重宝しております。
改めて御礼を申し上げます。


今回もちょっとマニアックな質問かもしれませんが、お聞きしたいことが出てきました。
よろしくお願いします。

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

KH coderのベイズ学習による自動分類結果の出力が見やすい、解釈しやすいことに、大変に感心しています。

この機能を、KH coderの外部から何とか利用したいと思っています。


ベイズ学習による自動分類プログラムは、Rを利用しないでPerlのみで記述されていると推測します。

※私は色々なプログラミング言語の実務経験はありますが、残念ながらPerlは全く分かりません


以下のことは可能でしょうか?

Perlのコンソールのコマンドプロンプトから、

まず、以下の2つのファイルを読み込んで、
・文書−抽出語の表
・外部変数(カテゴリカル変数)

次に、KH coderのベイズ学習による自動分類プログラムを呼び出して実行する、

最後に、ベイズ学習による自動分類結果をファイル出力する


このようなことを実現したいと思ったときに、できるのでしょうか?



変な質問ですが、よろしくお願いします。


  [No.1186] Re: ベイズ学習による分類機能の、外部からの利用可能性 投稿者:HIGUCHI Koichi  投稿日:2012/11/18(Sun) 17:24:08

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

ベイズ学習機能、何かしらお役に立てているようでしたらなによりです。

外部からの利用につきましては、もちろん可能ではあります。ただ、何かしら
Perlスクリプトを書くことが必須となってしまいます。


手順としては、まずPerl本体と各種Perlモジュールをインストールして、ソー
スコード版のKH Coderが動く環境を準備するのかなと思います。すなわち、Wi
ndowsのコマンドプロンプトで「perl kh_coder.pl」を実行することで、KH Co
derを起動できるようにします。このステップについては、こちらのスレッド
に多少情報があります。
http://khcoder.info/cgi-bin/bbs_khn/khcf.cgi?no=761&mode=allread

その上で、Perlスクリプトを書くことで、先にお書きいただいたような処理が
実現できます。カスタム・メイドのPerlスクリプトを外部プログラムから実行
する形にすれば、外部プログラムによる自動処理も可能です。

ただ、「文書−抽出語の表」を入力とするよりも、テキストファイルを入力と
する方が、スクリプトを書く難易度は格段に下がります。後者であれば、KH C
oderの既存のコマンドをそのまま動かすだけでこと足ります。しかし前者であ
れば、既存コマンドの一部の機能をうまく切り出して使う必要があるからです。

後者の方法については、以下が多少参考になるかもしれません。
http://khcoder.info/cgi-bin/bbs_khn/khcf.cgi?no=776&mode=allread


選択肢としては、上記のようなPerlスクリプト作成をディベロッパーに外注さ
れるか、覚悟を決めてPerlに挑戦していただくか、普通にKH Coderをお使いい
ただくか、といったところでしょうか。

上に書きました「後者」の形であれば、ほとんど0から挑戦していただいても、
そう何ヶ月もかからないかなとは思います。ただPerlはどちらかというとシェ
アを減らしつつある言語かもしれず、今から挑戦するのはどうかという気がし
ないでもありません。

以上、ご参考までに。


  [No.1187] Re: ベイズ学習による分類機能の、外部からの利用可能性 投稿者:袋井  投稿日:2012/11/18(Sun) 18:56:06

樋口先生さま

お世話になります、袋井と申します。
いつもありがとうございます。

ご丁寧にご説明をいただき、誠にありがとうございました。
今回も、大変に勉強になりました。

PerlはCaboChaのpost処理のために既に環境はありますが、
KH Coderは普通に利用させていただくとして、
今回の目的のためには、使い慣れたwekaを利用する方向で検討します。

ご教示、ありがとうございました。