如何输入多个文本列的 doc2vec 向量?
How do I input doc2vec vectors of multiple text columns?
我有一个数据集,其中包含 3 个不同列的相关文本信息,我想将其转换为 doc2vec 向量,然后使用神经网络进行分类。我的问题是如何将这三列转换为向量并输入到神经网络中?
如何将串联的向量输入神经网络?
一种方法是在 defined order
中为所有三个文档获取一个 doc2vec
向量并将它们附加在一起。然后将生成的向量拟合到您的神经网络中。
另一种方法是创建一个列,其中每一行都是 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)
然后您可以使用此分类器来预测值。
我建议使用 doc2vec 分别将每个文本字段转换为一个向量,连接这些向量并将生成的向量输入神经网络。
我有一个数据集,其中包含 3 个不同列的相关文本信息,我想将其转换为 doc2vec 向量,然后使用神经网络进行分类。我的问题是如何将这三列转换为向量并输入到神经网络中?
如何将串联的向量输入神经网络?
一种方法是在 defined order
中为所有三个文档获取一个 doc2vec
向量并将它们附加在一起。然后将生成的向量拟合到您的神经网络中。
另一种方法是创建一个列,其中每一行都是 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)
然后您可以使用此分类器来预测值。
我建议使用 doc2vec 分别将每个文本字段转换为一个向量,连接这些向量并将生成的向量输入神经网络。