首页 > 解决方案 > 我如何在 DataFrame 中对句子和短语进行热编码?

问题描述

我正在寻找一种方法来对一个充满字符串和短语的 DataFrame 进行一次热编码。DataFrame 有两列,“answer_text”和“context”。

我想对两列中的每个字符串进行一次热编码。因为“answer_text”派生自“context”列中的任何内容,所以我希望两列都使用相同的词汇表进行编码,这样我就可以为我的神经网络提供它没有看到的问题并从部分生成答案它已阅读的文本。对于这个任务,我最初求助于 scikit-learn 的 MultiLabelBinarizer:

from sklearn.preprocessing import MultiLabelBinarizer
contextTotal = pd.concat((trainingData["context"],devData["context"]))
print("Gathered content")
contextBinarizer = MultiLabelBinarizer()
contextBinarizer.fit(contextTotal.str.split(" "))
print(contextBinarizer.classes_) # Why is this giving me an array of arrays?
test = contextBinarizer.inverse_transform(contextBinarizer.transform(pd.Series([["Saint","Bernadette"]])))
print("Test",test)
print("Content binarizer fit.")

但是,对于 answer_text 列,我希望能够重建原始字符串。例如,我使用字符串“Saint Bernadette Soubirous”测试的任何方法都应该在反转时给我字符串“Saint Bernadette Soubirous”——这在我使用 MultiLabelBinarizer 时不会发生。

编辑:我也愿意使用 TensorFlow、Keras 和 Pandas。

这是数据集

标签: pythonpandas

解决方案


推荐阅读