编码数据的文本分类标签

Encoding data's label for text classification

我正在做一个临床文本分类项目。在我的语料库中,数据已经用代码标记(例如:768.2、V13.02、V13.09、599.0 ...)。我已经将文本和标签分开,然后使用 word-embedded 作为文本。我将把它们输入卷积神经网络。然而,标签需要编码,我阅读了情感文本分类和 mnist 的示例,但他们都使用整数来分类他们的数据,我的标签是文本形式的,这就是为什么我不能像他们一样使用 one-hot 编码。谁能建议任何方法来做到这一点? 谢谢

通过创建枚举映射,离散文本标签可以轻松转换为离散数字数据。例如,假设标签 "Yes"、"No" 和 "Maybe":

No    -> 0
Yes   -> 1
Maybe -> 2

现在你有了数值数据,以后可以将其转换回来(只要算法将它们视为离散值,而不是 return 0.5 或类似的值)。

如果每个实例都可以有多个标签,正如您在评论中所说,您可以通过将每个标签放在一列中来创建编码 ("one-hot encoding")。即使有些软件没有实现那个现成的,手工做起来也不难。

这是一个使用 Panda 的 get_dummies 函数的非常简单(老实说写得并不好)的示例:

import numpy as np
import pandas as pd
labels = np.array(['a', 'b', 'a', 'c', 'ab', 'a', 'ac'])
df = pd.DataFrame(labels, columns=['label'])
ndf = pd.get_dummies(df)
ndf.label_a = ndf.label_a + ndf.label_ab + ndf.label_ac
ndf.label_b = ndf.label_b + ndf.label_ab
ndf.label_c = ndf.label_c + ndf.label_ac
ndf = ndf.drop(['label_ab', 'label_ac'], axis=1)
ndf

    label_a label_b label_c
0   1.0     0.0     0.0
1   0.0     1.0     0.0
2   1.0     0.0     0.0
3   0.0     0.0     1.0
4   1.0     1.0     0.0
5   1.0     0.0     0.0
6   1.0     0.0     1.0

您现在可以训练多变量模型来输出 label_alabel_blabel_c 的值,然后重建原始标签,例如 "ab"。只需确保输出在集合 [0, 1] 中(通过应用 softmax 层或类似的东西)。

观看这个 4 分钟的视频(Corsera:ML 分类(华盛顿大学)-> 第 1 周 -> 编码分类输入) https://www.coursera.org/learn/ml-classification/lecture/kCY0D/encoding-categorical-inputs

有两种编码方式:

  1. 一次热编码

  2. Bag of words(我认为在这种情况下这是更合适的方法)

下图描述了词袋方法的工作原理。文本可以说出 10,000 个不同的单词,或者更多,更多,数百万。所以 Bag of Words 所做的就是获取该文本,然后将其编码为计数。

编辑 1

Python实现:访问http://www.python-course.eu/text_classification_python.php