如何解决如何串联两个TF-IDF向量以及可以输入模型的其他特征?
我发现适用于我的情况的解决方案如下。希望这对某人有帮助。 如何将由sklearn创建的TF-IDF的输出连接起来,以传递到Keras模型或张量中,然后可以将其输入到密集神经网络中?我正在研究FakeNewsChallenge数据集。任何指导都会有所帮助。
FakeNewsChallenge数据集是这样的:
训练集-[标题,正文,标签]
- 训练集分为两个不同的CSV(train_bodies,train_stances),并通过BodyID链接。
- train_bodies-[正文ID(数字),articleBody(文本)]
- train_stances-[标题(文本),Body ID(数字),姿态(文本)]
测试集-[标题,正文]
- 测试集分为两个不同的CSV(test_stances_inlabled,test_bodies)
- Test_bodies-[Body ID,aritcleBody]
- Test_stances_unlabled-[标题,正文ID]
分发使它变得极其困难:
- 行-49972
- 不相关-0.73131
- 讨论-0.17828
- 同意-0.076012
- 不同意-0.0168094
立场-[不相关,讨论,同意,不同意]
我想做的是连接两个单独的TF-IDF向量以及其他特征,然后我可以将它们馈送到某个层,例如密集层。你会怎么做?我
解决方法
在我之前有一条评论回答了问题,但我不再看到该评论。我显然忘记了这种方法,但是在程序的其他区域中使用了它。
您使用numpy.hstack(tup)或numpy.vstack(tup),其中
-
tup-ndarray的序列
除了第二个轴外,所有阵列的形状都必须相同,但一维阵列可以是任意长度。
它返回一个堆叠的ndarray。
这是一些代码,以防万一。
注意:这里没有余弦相似度计算。随便你怎么做。我正在尝试快速执行此操作,但也要尽可能清晰。希望这对某人有帮助。
def computeTF_IDF(trainX1,trainX2,testX1,testX2):
vectorX1 = TfidfVectorizer(....)
tfidfX1 = vectorX1.fit_Trasnsform(trainX1)
vectorX2 = TfidfVectorizer(....)
tfidfX2 = vectorX2.fit_Trasnsform(trainX2)
tfidf_testX1= vec_body.transform(testX1)
tfidf_testX2 = vec_headline.transform(testX2)
# Optionally,you can insert code from * to ** here from below.
return vectorX1,tfidfX1,...,tfidf_testX1,tfidf_testX2
# Call TF-IDF function to compute.
trainX1_tfidf,trainX2_tfidf,testX1_tfidf,testX2_tfidf = computeTFIDF(trainX1,testX2)
#*
# Stack matrices horizontally (column wise) using hstack().
trainX_tfidf = scipy.sparse.hstack([trainX1_tfidf,trainX2_tfidf])
testX_tfidf = scipy.sparse.hstack([testX1_tfidf,testX2_tfidf])
# Convert Spare Matrix into an Array using toarray()
trainX_tfidf_arr = trainX_tfidf.toarray()
testX_tfidf_arr = testX_tfidf.toarray()
# Concatenate TF-IDF and Cosine Similarity using numpy.c_[],# which is just another column stack.
trainX_tfidf_cos = np.c_[trainX_tfidf_arr,cosine_similarity]
testX_tfidf_cos = np.c_[testX_tfidf_arr,cosine_similarity_test]
#**
# You can now pass this to your Keras model.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。