我正在进行临床文本分类项目。在我的语料库中,数据已经被代码标记(例如:768.2,V13.02,V13.09,599.0 ......)。我已经将文本和标签分开,然后使用word-embedded for text。我打算将它们送入卷积神经网络。但是,标签需要编码,我阅读情感文本分类和mnist的例子,但他们都使用整数来分类他们的数据,我的标签以文本形式表示为什么我不能像他们那样使用单热编码。有人可以建议任何方法吗? 谢谢
答案 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_a
,label_b
和label_c
的值,然后重建原始标签,例如" ab"。只需确保输出在集合[0,1]中(通过应用softmax-layer或类似的东西)。
答案 1 :(得分:1)
观看这4分钟视频(Corsera:ML分类(华盛顿大学) - >第1周 - >编码分类输入) https://www.coursera.org/learn/ml-classification/lecture/kCY0D/encoding-categorical-inputs
有两种编码方法:
One Hot Encoding
一些单词(我认为这种方法更合适)
下图描述了包字方法的工作原理。文本可以说有10,000个不同的单词来自它,或者更多,更多,数百万。因此Bag of Words所做的就是获取该文本,然后将其编码为计数。
编辑1
Python实施:访问http://www.python-course.eu/text_classification_python.php