编码数据的标签以进行文本分类

时间:2016-08-02 02:41:50

标签: python encoding tensorflow text-classification

我正在进行临床文本分类项目。在我的语料库中,数据已经被代码标记(例如:768.2,V13.02,V13.09,599.0 ......)。我已经将文本和标签分开,然后使用word-embedded for text。我打算将它们送入卷积神经网络。但是,标签需要编码,我阅读情感文本分类和mnist的例子,但他们都使用整数来分类他们的数据,我的标签以文本形式表示为什么我不能像他们那样使用单热编码。有人可以建议任何方法吗? 谢谢

2 个答案:

答案 0 :(得分:1)

通过创建枚举映射,可以轻松地将离散文本标签转换为离散数字数据。例如,假设标签"是","否"和"可能":

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

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

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

这是一个使用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-layer或类似的东西)。

答案 1 :(得分:1)

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

有两种编码方法:

  1. One Hot Encoding

  2. 一些单词(我认为这种方法更合适)

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

    enter image description here

    编辑1

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