如何连接两个 TF-IDF 向量以及可以输入模型的其他特征?

How to concatenate two TF-IDF Vectors as well as other features that can be fed into a model?

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

FakeNewsChallenge 数据集是这样的:

训练集 - [标题,Body 文本,标签]

测试集 - [标题,Body文本]

分发非常困难:

立场 - [不相关,讨论,同意,不同意]


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

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

您使用 numpy.hstack(tup) 或 numpy.vstack(tup),其中

  • tup - ndarrays 序列

    除了可以是任意长度的一维数组外,除了第二个轴外,数组必须具有相同的形状。

它returns一个堆叠: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.