我发现适用于我的情况的解决方案如下。希望这对某人有帮助。 如何将由sklearn创建的TF-IDF的输出连接起来,以传递到Keras模型或张量中,然后可以将其输入到密集神经网络中?我正在研究FakeNewsChallenge数据集。任何指导都会有所帮助。
FakeNewsChallenge数据集是这样的:
训练集-[标题,正文,标签]
测试集-[标题,正文]
分发使它变得极其困难:
立场-[不相关,讨论,同意,不同意]
我想做的是连接两个单独的TF-IDF向量以及其他特征,然后我可以将它们馈送到某个层,例如密集层。你会怎么做?我
答案 0 :(得分:0)
在我之前有一条评论回答了问题,但我不再看到该评论。我显然忘记了这种方法,但是在程序的其他区域中使用了它。
您使用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.