SyntaxHighlighter

2012年8月20日月曜日

Bixoを使ってみる。(2)


今回はBixoを使ってWebマイニングをやってみる。
前回と同様に疑似分散環境で実行する。

まず、GettingStartに従って最新のディストリビューションファイルを
ダウンロードすると同封されているexampleパッケージ(モジュール)が
あるのでMavenでビルドする。

【WebMiningTool】

今回はWebMiningToolを起動する。
大まかな処理の流れを説明すると前回紹介したWebクロール処理の後に
クロール処理で取得したコンテンツをパースし、
外部リンクの一覧を抽出する処理と、コンテンツから抽出した
ページのテキストを構文解析して、リソースファイルとして
取り込まれるnagative-phrases.txtとpositive-phrases.txtに記載されている
それぞれの文言よりそのページのスコアを算出する処理が行われる。
最終的な出力は、ページのコンテンツ一覧(content)とクロール結果(crawldb)と
外部リンク一覧(results)とステータス(status)となっている。

【実行】

exampleには既にbixoの実行用シェルがbinフォルダに存在するので、
ターミナルから下記コマンドを実行する。

【実行結果】

今回も[ループ数-タイムスタンプ]という名前でディレクトリが作成されている。
各ディレクトリにはcontent, crawldb, results, statusが格納されている。

各ディレクトリの中には出力結果されたファイルが格納されている。
contentに格納されている内容は下記の通り。
こんな感じでクロールしたHTMLが入ってる。

続いてcrawldb
続いてresults
最後にstatus
見てみると分かる通り、スコアが0になってしまっている。
どうもフレーズの抽出に失敗しているようで、原因は調査中。

実はこのExampleでページランクのアルゴリズムを実装しているのかと
思っていたのだが(ただの先入観)
実際はコンテンツのフレーズをポジティブフレーズ、ネガティブフレーズの
出力確率によってページのスコア付けをするというとても単純なアルゴリズムで
スコアを算出していた。

まあ、いずれにしろWebクローリングが手軽にできて、
なおかつCascadingで実装されているので、機能を付加して
データマイニングもできるという素晴らしいツールにはほかならない。
確率スコアのSubassemblyだけでなく、クラス分類のSubassemblyなど
応用してみても面白そう。
実装できたらいいなー。と希望的観測ですが。。
また次回はGAEに戻るかなー。

0 件のコメント:

コメントを投稿