NaiveBayse、SVMによる文書分類を試す
NaiveBayesによる文書分類、SVMによる文書分類を試しました。
例えば、ニュース記事がスポーツか政治社会かということを分類します。
ここではフリーで入手可能なコーパスを用いて、文書分類の代表的な手法であるNaiveBayseとSVMを使います。
文書分類に用いる素性は、文書中の名詞のTF・IDF値としました。
TF・IDFは単純に説明すると、様々な文書で使われる語の重みは小さく、一部の文書でのみ使う語の重みを大きくするような、語に対する重みです。
もう少し踏み込むと、TF(語の頻度)とIDF(出現する文書数の逆数)の積となります。
以上の素性を用いて、NaiveBayseおよびSVMで分類を行います。
NaiveBayseの理解のためにgihyo.jpの記事を写経して作ったものがここにあります。(今回利用した訳ではありません。)
SVMはパターン識別器を与えられた正解データから作成する機械学習器です。
詳細は割愛します(というよりも詳しくはっきりは理解できていません。)
MeCabを用いる際は、名詞の表層形を取り出します。
xmlの読み込みは適当にパースします。
手軽に実験するために、Scikit-learnを使いこなさねばと思いました。
NaiveBayse, SVMによる文書分類
文書分類とは与えられた文書をあるカテゴリに分類することです。例えば、ニュース記事がスポーツか政治社会かということを分類します。
ここではフリーで入手可能なコーパスを用いて、文書分類の代表的な手法であるNaiveBayseとSVMを使います。
文書分類に用いる素性は、文書中の名詞のTF・IDF値としました。
TF・IDFは単純に説明すると、様々な文書で使われる語の重みは小さく、一部の文書でのみ使う語の重みを大きくするような、語に対する重みです。
もう少し踏み込むと、TF(語の頻度)とIDF(出現する文書数の逆数)の積となります。
以上の素性を用いて、NaiveBayseおよびSVMで分類を行います。
NaiveBayseの理解のためにgihyo.jpの記事を写経して作ったものがここにあります。(今回利用した訳ではありません。)
SVMはパターン識別器を与えられた正解データから作成する機械学習器です。
詳細は割愛します(というよりも詳しくはっきりは理解できていません。)
ソースコード
一部、独自の単語分割器が使用されています。MeCabを用いる際は、名詞の表層形を取り出します。
xmlの読み込みは適当にパースします。
結果
ナイーブベイズよりSVMのほうが4ポイントほど良い結果を示しました。感想
Scikit-learnを用いると意図も簡単に文書分類を試すことができました。手軽に実験するために、Scikit-learnを使いこなさねばと思いました。