Python 编码数据';文本分类的s标签

Python 编码数据';文本分类的s标签,python,encoding,tensorflow,text-classification,Python,Encoding,Tensorflow,Text Classification,我正在做一个临床文本分类的项目。在我的语料库中,数据已经用代码标记(例如:768.2、V13.02、V13.09、599.0…)。我已经将文本和标签分开,然后使用word embedded作为文本。我将把它们输入卷积神经网络。然而,标签需要编码,我阅读了情感文本分类和mnist的示例,但它们都使用整数对数据进行分类,我的标签采用文本形式,这就是为什么我不能使用像它们这样的热编码。有人能提出什么办法吗? 感谢您通过创建枚举映射,离散文本标签可以轻松转换为离散数字数据。例如,假设标签“是”、“否”和

我正在做一个临床文本分类的项目。在我的语料库中,数据已经用代码标记(例如:768.2、V13.02、V13.09、599.0…)。我已经将文本和标签分开,然后使用word embedded作为文本。我将把它们输入卷积神经网络。然而,标签需要编码,我阅读了情感文本分类和mnist的示例,但它们都使用整数对数据进行分类,我的标签采用文本形式,这就是为什么我不能使用像它们这样的热编码。有人能提出什么办法吗?
感谢您

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

现在有了数字数据,以后可以转换回来(只要算法将这些数据视为离散值,不返回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

现在,您可以训练多变量模型以输出
标签a
标签b
标签c
的值,然后重建原始标签,如“ab”。只要确保输出在集合[0,1]中(通过应用softmax layer或类似的方法)。

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

现在有了数字数据,以后可以转换回来(只要算法将这些数据视为离散值,不返回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
现在,您可以训练多变量模型以输出
标签a
标签b
标签c
的值,然后重建原始标签,如“ab”。只需确保输出在集合[0,1]中(通过应用softmax层或类似的东西)。

观看这段4分钟的视频(Corsera:ML分类(华盛顿大学)->Week1->编码分类输入)

有两种编码方法:

  • 一个热编码

  • 文字袋(我认为在这种情况下,这种方法更合适)

  • 下图描述了bag of words方法的工作原理。文本可以说出10000个不同的单词,或者更多,更多,数百万个。所以这一袋单词的作用就是把文本编码为计数

    编辑1

    Python实现:访问观看这段4分钟的视频(Corsera:ML分类(华盛顿大学)->Week1->编码分类输入)

    有两种编码方法:

  • 一个热编码

  • 文字袋(我认为在这种情况下,这种方法更合适)

  • 下图描述了bag of words方法的工作原理。文本可以说出10000个不同的单词,或者更多,更多,数百万个。所以这一袋单词的作用就是把文本编码为计数

    编辑1


    Python实现:访问

    您可以对离散标签使用一种热编码。例如,对于标签“是”、“否”和“可能”,您可以指定“否=0”、“是=1”、“可能=2”,然后将其编码为多个二进制/连续标签。感谢Mephy,我的文本数据由45个标签分类。某些文本可能同时有两个标签。您可以对离散标签使用一个热编码。例如,对于标签“是”、“否”和“可能”,您可以指定“否=0”、“是=1”、“可能=2”,然后将其编码为多个二进制/连续标签。感谢Mephy,我的文本数据由45个标签分类。一些文本可能同时有两个标签。谢谢Sayali,我得到了你的理想,所以我有46个标签,我创建了一个46个标签的数组,当文本包含标签时,我将其设置为1,例如(00100000..0)。我真的不知道如何为此编写代码,你知道python中有什么函数可以做到这一点吗?@ngoduyvu访问python实现的这个页面partHi Sayali,你的网站对我帮助很大。然而,我已经理解了训练前的单词步骤。现在我有麻烦将编码标签。在你的kaggle例子中,他们可以用“01”或“10”来编码积极或消极的情绪评价。但在我的数据中,我有对应于不同种类疾病的不同代码(以字符串形式),为了输入机器学习算法,我必须将它们编码为数字。感谢Sayali,我得到了你的理想值,所以我有46个标签,我创建了一个46的数组,当文本添加到标签时,我将其设置为1,例如(00100000..0)。我真的不知道如何为此编写代码,你知道python中有什么函数可以做到这一点吗?@ngoduyvu访问python实现的这个页面partHi Sayali,你的网站对我帮助很大。然而,我已经理解了训练前的单词步骤。现在我有麻烦将编码标签。在你的kaggle例子中,他们可以用“01”或“10”来编码积极或消极的情绪评价。但在我的数据中,我有不同的代码对应不同种类的疾病(以字符串形式),为了输入机器学习算法,我必须将它们编码成数字。谢谢Merphy,我给了你理想的结果。我可以用get_假人将分类标签转换成整数,然后用它来输入一个热编码吗?嘿,Merphy,我得到了你的I