如何连接两个 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 文本,标签]
- 训练集分为两个不同的 CSV(train_bodies、train_stances)并通过 BodyID 链接。
- train_bodies - [Body ID (num), articleBody (text)]
- train_stances - [标题(文字), Body ID (num), Stance (文字)]
测试集 - [标题,Body文本]
- 测试集被分成两个不同的 CSV (test_stances_inlabled, test_bodies]
- Test_bodies - [Body ID,文章Body]
- Test_stances_unlabled - [标题, Body ID]
分发非常困难:
- 行 - 49972
- 无关 - 0.73131
- 讨论 - 0.17828
- 同意 - 0.076012
- 不同意 - 0.0168094
立场 - [不相关,讨论,同意,不同意]
我想做的是连接两个单独的 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.
我发现适用于我的案例的解决方案发布在下面。希望这对某人有所帮助。 我如何将使用 sklearn 创建的 TF-IDF 的输出连接起来传递到 Keras 模型或张量中,然后将其输入密集神经网络?我正在处理 FakeNewsChallenge 数据集。任何指导都会有所帮助。
FakeNewsChallenge 数据集是这样的:
训练集 - [标题,Body 文本,标签]
- 训练集分为两个不同的 CSV(train_bodies、train_stances)并通过 BodyID 链接。
- train_bodies - [Body ID (num), articleBody (text)]
- train_stances - [标题(文字), Body ID (num), Stance (文字)]
测试集 - [标题,Body文本]
- 测试集被分成两个不同的 CSV (test_stances_inlabled, test_bodies]
- Test_bodies - [Body ID,文章Body]
- Test_stances_unlabled - [标题, Body ID]
分发非常困难:
- 行 - 49972
- 无关 - 0.73131
- 讨论 - 0.17828
- 同意 - 0.076012
- 不同意 - 0.0168094
立场 - [不相关,讨论,同意,不同意]
我想做的是连接两个单独的 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.