如何连接两个TFIDF向量以及可以输入到模型中的其他特征?

2024-06-16 08:25:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我发现在我的案例中有效的解决方案发布在下面。希望这对某人有所帮助。 我如何将使用sklearn创建的TF-IDF的输出连接到Keras模型或张量中,然后将其输入到密集的神经网络中?我正在研究Fakenews挑战数据集。任何指导都会有帮助

FakeNewsChallenge数据集如下所示:

训练集-[标题、正文、标签]

  • 训练集分为两个不同的CSV(训练体、训练姿态),并由BodyID链接
  • 列车车身-[车身ID(数量),车身(文本)]
  • 列车姿态-[标题(文本)、车身ID(数字)、姿态(文本)]

测试集-[标题,正文]

  • 测试集分为两个不同的CSV(嵌入测试位置、测试主体)
  • 测试主体-[主体ID,主体]
  • 测试状态未启用-[标题,正文ID]

分发使其变得极其困难:

  • 行-49972
  • 不相关-0.73131
  • 讨论-0.17828
  • 同意-0.076012
  • 不同意-0.0168094

立场-[无关、讨论、同意、不同意]


我想做的是连接两个独立的TF-IDF向量以及其他特征,然后我可以将它们输入到某个层,例如一个密集层。你会怎么做


Tags: csv数据文本id标题tfsklearn解决方案
1条回答
网友
1楼 · 发布于 2024-06-16 08:25:02

在我之前有一条评论回答了这个问题,但我再也看不到这条评论了。我显然忘记了这个方法,但是在我的程序的其他区域使用了它

使用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. 

相关问题 更多 >