このライブラリでは、日本語のraw textから文書分類などに使えるように素性の取り出しを行います。
自然言語処理において、与えられた文書を素性としてベクトル空間に配置することは非常に重要な技術の一つです。 文書ベクトル同士の類似度は、文書そのもの同士の類似度と関係があると考えられ、文書分類などのタスクにおいて多く利用されています。 このような技術は学問の場のみならず、企業においても実際に使われています。 例えば、ニュース記事がどのジャンルに所属するかのクラスタリングや、とある投稿のポジネガ判定などです。
一番メジャーな素性にする方法としては、BoW(Bag-of-words)があります。これは、語彙数次元のベクトルを用意し、文書中に出現した語彙に対応する 部分の値を1、出現しない語彙の値を0にするものです。 これに追加して、tf値、idf値を計算したものもあります。 簡単な方法としては、このように文書をベクトル化した後、cos類似度を計算することで、文書間の類似度を計算できます。
日本語はわかち書きされていない言語です。そのため、多くの自然言語処理では、文書を単語に分割する形態素解析という処理を行います。 多くの形態素解析機がありますが、本ライブラリではKyTeaを利用しています。
また、単語分割のみならず構文解析された素性を利用することでより、文の意味を捉えた解析がでできると考えられます。 このライブラリでは、構文解析機EDAをもちいて、かかり受け情報を含む素性を出力できます。
-
unigram: 語彙数次元のBoWベクトルを作成
-
bigram: 連結する2単語を繋げたBoWベクトルを作成 (例) 彼は元気です -> 彼は, は元気, 元気です
-
trigram: 連結する3単語を繋げたBoWベクトルを作成
-
depbigram: かかり元とかかり先を繋げたBoWベクトルを作成
-
deptrigram: かかり元、かかり先、かかり先のかかり先を繋げたBoWベクトルを作成
-
count/tfidf: ベクトルをBoWかtfidfかで作る。tfidfはscikit-learnを利用しています。
必要なcorpusは二つです。 ベクトルにしたいターゲットの文書corpusと、tfidfなどのcorpusです。
必要なモデルは、KyTea, EDAのモデルです。対象のテキストにAdaptationしたmodelの利用が望まれます。
Python3.4.3で動作確認をしています。Python2系統では残念ながら利用できません。 必要ライブラリなど
- KyTea: http://www.phontron.com/kytea/index-ja.html
- EDA: http://www.ar.media.kyoto-u.ac.jp/tool/EDA/
- scikit-learn
- numpy
- scipy