使用词嵌入进行文本分类

我有一个包含正面和负面内容的数据集。假设这是一个垃圾邮件项目。

我需要构建一个模型,能够将内容分类为正面/负面。因此,我在进行监督学习任务,因为我有标记的数据集。所以,最佳选择必须是使用SVC模型。

到目前为止,一切顺利。

现在,复杂的部分来了。

我想使用Keras的LSTM模型来解决同样的任务。所以我的问题是:

这仍然是监督学习还是无监督学习,因为我使用词嵌入来完成这个任务,并且参考了这个帖子,这里说词嵌入用于无监督任务:https://www.quora.com/Is-deep-learning-supervised-unsupervised-or-something-else

帖子中提到:

深度学习可以是无监督的:词嵌入、图像编码成更低或更高维度等。

那么,现在这是无监督还是监督学习(因为我的数据集是标记的)?

深度学习是像无监督和监督学习一样的另一种技术吗?这些主题之间的关系如何?深度学习使用监督和无监督技术吗?还是必须在深度学习、无监督和监督学习之间做出选择?

这太令人困惑了!请帮帮我!特别是关于LSTM任务。我需要知道这是监督学习(因为有标记的数据集)还是无监督学习(因为使用了词嵌入)。

提前感谢大家!


回答:

给您一个鼓励的话,我记得自己刚开始学习这个领域时,感觉完全一样;极度沮丧。这确实会变得更容易!

词嵌入是通过无监督学习创建的。然而,您可以在监督项目中使用训练好的嵌入层,就像您正在做的那样。换句话说,您的项目是监督学习项目,其中一个层使用了通过无监督训练技术获得的权重。

进一步了解嵌入层、它们是如何制作的,以及它们对监督学习的作用可能会有所帮助。我将尝试用非技术的方式解释,这样您在学习具体细节和繁琐之处之前可以对概念有所了解。
假设您从一个庞大的语料库开始。您统计每个词的出现频率,并用它来对每个词进行排名(或者使用其他公式,随便)。这是一种文本“标记化”的方法。重点是将词转换成数字。显然,这很重要,因为我们打算用它们进行数学运算,但这也带来了一些问题:数值关系不一定携带关于词的意义关系的信息。为了改善这一点,您可以训练一个小型网络,如下所示:从您的语料库中取出片段并创建skipgrams,并教网络在应用权重和余弦相似度度量后,如果词在附近出现,输出应为1(或其他标准),如果没有,则为0(或者,如果您喜欢,可以是-1)。在整个语料库过程中,倾向于一起使用的词会一起移动,反之亦然。目标是创建一种地图(或者说是一种模拟,如果您愿意的话)来表示标记(即词)的相对意义;换句话说,目标是创建一个表示词的相对意义的n维表示。然后,训练后,嵌入可以保存下来用于像您这样的项目。您的嵌入层将查找保存的嵌入中的标记并获取其输出,即该词在嵌入空间中的向量表示;它们在我们理论地图中的坐标。这被认为是“无监督”的,因为您不需要明确提供用于比较的真实标签;在这种情况下,它是从训练样本中程序化生成的(即从输入生成的skipgrams)。另一个例子是如果预期输出与输入相同(如在自编码器中),这也是无监督的(如前所述),因为您不需要提供预期输出;如果您提供一个输入,它自动具有预期输出。
如果所有这些都让您感到困惑,那么请暂停并考虑您自己的想法:如果我问您一个与“a big pizza”中的“big”意思相同的词,您会参考您对“big”在所指短语中的理解,并尽可能找出最接近的词:也许是“large”。嵌入是一种制作地图的方式,其中“big”和“large”在大多数轴上(即在大多数维度上)被定位得很近。
因此,当您加载一些预训练的嵌入时,您只是将一些权重加载到您的层中。有时人们用零初始化层,有时人们使用随机正态或高斯分布,有时人们使用特定值(例如加载保存的网络,或加载嵌入);都是一样的。如果您继续进行监督训练,那么您就是在做这件事:进行监督训练。在嵌入层之后,您处理的信息不是任意词,而是这些:相对意义。如果这不是很酷,我不知道什么是酷!我发现考虑数据在网络中传递时代表什么是有帮助的。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注