Я только начал изучать кодирование в Python и пытался использовать его в целях классификации текста. Чтобы иметь возможность создать sklearn
конвейер (но также научиться определять и использовать классы), я бы хотел создать собственный word2vec
преобразователь. Пример кода для иллюстрации моей проблемы (doc
- это список списка токенов):
from gensim.models.word2vec import Word2Vec
from sklearn.base import BaseEstimator, TransformerMixin
class GensimVectorizer(BaseEstimator, TransformerMixin):
def __init__(self, n_dim = 64, n_context = 2):
self.n_dim = n_dim
self.n_context = n_context
def fit(self, X):
self.model = Word2Vec(X, size = self.n_dim,
window = self.n_context,
min_count = 1, sample = 1e-3, workers = 4)
return self
def transform(self, X):
return self.model.wv[X]
vect = GensimVectorizer()
vect.fit(doc)
vect.transform('word')
Это дает мне другие результаты по сравнению с кодом ниже. Что я делаю не так?
w2v_model = Word2Vec(doc, size = 64, window = 2, min_count = 1, sample = 1e-3, workers = 4)
w2v_model.wv['word']