python - 我如何在 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。
这是数据集。
解决方案
推荐阅读
- oracle-apex - How figure out methods and properties of jQuery object returned by apex.region(region_static_id).widget() method?
- r - 使用 R (rvest) 导航和抓取
- python - 用 bs4 抓取 CSS 背景图像 url?
- c# - 解压缩文件夹时如何让文件自动覆盖现有文件?
- perl - 读取固定宽度数据时保留空白列并添加分隔符
- c# - 单元测试没有按预期响应
- c# - 检查用户是否按下 Enter
- ftp - OneM2M:定期从 FTP 服务器获取设备数据的 IPE
- tensorflow - BigTable 到 TensorFlow 2.x - 任何连接器?
- html - 来自css的奇怪颜色污点