gensim.models.word2vec.Doc2VecのパラメータをsklearnのGridSearchCVでサーチするプログラムを書いた
使用例
word2veckerasというパッケージの一部になっているので
pip install world2veckeras
で使えるようになる.
SentenceClassifierとDoc2VecClassifierの2つのclassはそれぞれ
- SentenceClassifier:既にパラメータ設定済みなdoc2vecインスタンスdv=Doc2VecをSentenceClassifier(doc2vec=dv)などと入力して文の分類器を作る
- Doc2VecClassifier:文の分類精度が高くなるようなDoc2Vecのパラメーターサーチを行う
この例ではbrownコーパスの文をnews, religion, hobbies, science_fiction, romance, humorのカテゴリに分類する精度を上げるようなパラメータをサーチしている.
より詳細な実装は
https://github.com/niitsuma/word2vec-keras-in-gensim/blob/master/word2veckeras/doc2veckeras.py
の中のSentenceClassifierとDoc2VecClassifierというclassを見るとよいが,100行以下の単純な実装となっている.やっていることは単純でDoc2VecClassifierの_init__が以下のようになっているだけだ
from sklearn.base import BaseEstimator,ClassifierMixin
class SentenceClassifier(BaseEstimator, ClassifierMixin):
...
doc2vec_init_param_dict={'dm': 1, 'dm_mean': 0, 'hs': 1,...}
class Doc2VecClassifier(SentenceClassifier):
def __init__(self,...):
...
vars(self).update(doc2vec_init_param_dict)
とすることでDoc2Vecのメンバー変数と同じ名前のメンバー変数を作って,Doc2VecにコピーすることでsklearnのGridSearchCVを使うようにしている.
gensimの他のclassも同様にパラメータサーチすることが可能と思われる