python - 如何连接两个 TF-IDF 向量以及可以输入模型的其他特征?
问题描述
我发现适用于我的情况的解决方案发布在下面。希望这可以帮助某人。 我如何将使用 sklearn 创建的 TF-IDF 的输出连接到 Keras 模型或张量中,然后再将其输入到密集的神经网络中?我正在研究 FakeNewsChallenge 数据集。任何指导都会有所帮助。
FakeNewsChallenge 数据集是这样的:
训练集 - [标题、正文、标签]
- 训练集分为两个不同的 CSV(train_bodies、train_stances)并由 BodyID 链接。
- train_bodies - [Body ID (num), articleBody (text)]
- train_stances - [标题(文本),身体 ID(数字),姿态(文本)]
测试集 - [标题,正文]
- 测试集分为两个不同的 CSV(test_stances_inlabled、test_bodies]
- Test_bodies - [身体 ID,aritcleBody]
- Test_stances_unlabled - [标题,正文 ID]
分布使它变得非常困难:
- 行 - 49972
- 不相关 - 0.73131
- 讨论 - 0.17828
- 同意 - 0.076012
- 不同意 - 0.0168094
立场 - [不相关,讨论,同意,不同意]
我想做的是连接两个单独的 TF-IDF 向量以及其他特征,然后我可以将它们输入某个层,例如密集层。你会怎么做呢?一世
解决方案
在我之前有一条评论回答了这个问题,但我不再看到评论了。我显然忘记了这种方法,但在我程序的其他领域使用它。
您使用 numpy.hstack(tup) 或 numpy.vstack(tup),其中
tup - ndarrays 序列
除了可以是任意长度的一维数组之外,除了第二个轴之外,数组必须具有相同的形状。
它返回一个堆叠的: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.
推荐阅读
- java - 如何将由字段确定的参数列表添加到单个“if”通用语句中?
- angular - 角度插值奇怪的行为
- python - 如何从输入和输出列表中找到函数 f?
- javascript - 将 setState 与来自父元素的道具一起使用
- javascript - Jquery - 附加在html中显示双引号
- angular - (Angular 2/4/5/6) 图像识别
- python - 在片段着色器中访问 3D 数组
- python - pyinstaller 找不到 pyinstaller.exe
- python-requests - `requests.request()` 的默认超时值?
- node.js - node.js 如何同时处理数千个请求?其他客户是否需要等待?