我正在寻找一种对包含字符串和短语的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。
这里是the dataset。