Как мне ввести векторы doc2vec из нескольких текстовых столбцов? - PullRequest
0 голосов
/ 26 марта 2019

У меня есть набор данных, который имеет 3 разных столбца соответствующей текстовой информации, которую я хочу преобразовать в векторы doc2vec и затем классифицировать с помощью нейронной сети.Мой вопрос: как мне преобразовать эти три столбца в векторы и ввести их в нейронную сеть?

Как мне ввести объединенные векторы в нейронную сеть?

Ответы [ 2 ]

0 голосов
/ 26 марта 2019

Я бы предложил преобразовать каждое текстовое поле в вектор отдельно, используя doc2vec, конкатенировать векторы и передать полученный вектор в нейронную сеть.

0 голосов
/ 26 марта 2019

Один из способов - получить вектор doc2vec для всех трех документов в , определенный order, и добавить их вместе. Затем поместите полученный вектор в вашу нейронную сеть.

Другой способ - создать столбец, в котором каждая строка представляет собой список из 3 строк (представляющих три документа) и получить одно векторное представление всех трех документов. См. Пример кода ниже.

from gensim.test.utils import common_texts
from gensim.models.doc2vec import Doc2Vec, TaggedDocument
documents = [TaggedDocument(doc, [i]) for i, doc in enumerate(common_texts)]
model = Doc2Vec(documents, vector_size=5, window=2, min_count=1, workers=4)
model.infer_vector(['theis is a sentence1', 'here is another sentence', 'this represents the third sentence']).tolist()

Как только это будет сделано, вы можете инициализировать свою модель и обучить ее.

Чтобы соответствовать sklearn clasifier, например sgd, извлеките фрагменты кода ниже.

from sklearn import svm
clf = svm.SVC(gamma=0.001, C=100.0)
d = pd.DataFrame({'vectors':[[1,2,3], [3,6,5], [9,2,4], [1,2,7]], "targets": ['class1', 'class1', 'class2', 'class2']})
d
>>>
      vectors   targets
0   [1, 2, 3]   class1
1   [3, 6, 5]   class1
2   [9, 2, 4]   class2
3   [1, 2, 7]   class2

Вы можете установить классификатор sklearn на вектор следующим образом.

clf.fit(X = d.vectors.values.tolist(), y =d.targets)

>>>
SVC(C=100.0, cache_size=200, class_weight=None, coef0=0.0,
decision_function_shape='ovr', degree=3, gamma=0.001, kernel='rbf',
max_iter=-1, probability=False, random_state=None, shrinking=True,
tol=0.001, verbose=False)

Затем вы можете использовать этот классификатор для прогнозирования значений.

...