# はじめに
前回の記事の続きです。
https://qiita.com/teri/items/bc4e04316a1b14ae8365
前回の概要と考察
前回は、tfidf、svmを用いて、分類器を作りましたが、学習データにある単語を含めた文章については、期待通りの分類をしてくれました。しかし、学習データにない単語を含めた文章の分類は、期待通りには分類してくれませんでした。
この事象について、考えたのですが、tfidfの言語モデルは、分類器に用いる学習データと同じのデータを使う必要があるので、学習データの量が少ないと、ベクトル化に影響する単語が少なくなるんだと思うんですよ。(結局、データ量って大事なんですよね。。。)
tfidfとword2vecを比較をしてみたい
前回は、tfidfを使いましたが、今回はword2vecを使った分類器を作って、結果を比較したいと思います。
word2vecはtfidfと違って、分類器の学習データと同じのデータを使う必要がないので、事前に大量のデータを学習させたword2vecの言語モデルを用いれば、色んな単語に対応させることができると考えられます。(word2vecの学習済みモデルは、インターネット上にけっこうあります。公開してくださっている方々には感謝しかありませんな。。。)
難しく書いていますが、まとめると。。。
word2vecを使うことで、tfidfより、汎用的な分類器が出来ると思うんです!!!
#比較結果
比較すると、下の2文の結果が違いますね。
word2vecのほうが、期待通りに分類されています。
word2vecってすげえ!
#最後に
今回の比較でword2vecってすごいんだなって改めて実感しました。
ただ勘違いしてほしくないのは、tfidfよりword2vecが全面的に良いというわけではないことです。
tfidfはword2vecよりもメモリ量が少ないですし、単語の重要度という観点でベクトル化ができます。
それぞれのメリットがあるので、何をやりたいかで、どの手法を選定するかが重要なんだと、思います。
僕も、これから、どんどん自然言語処理の知識を身に付けていって、
「ここは、○○な手法を使うと精度あがるよ」なんてことを簡単に言えるような、かっちょいいエンジニアになっていきたいですね~('◇')