如何在Azure机器学习中使用单词矢量进行文本分类

1,006 阅读6分钟

本文讨论了如何在Azure机器中使用文本挖掘中流行的词向量技术进行文本分类。本文是Azure机器学习系列的一部分,在此期间我们讨论了许多方面,如数据清理和机器学习的特征选择技术。我们进一步讨论了如何在Azure机器学习中进行分类,我们将在这里利用其中的一些经验。此外,我们还讨论了Azure机器学习中的几个机器学习任务,如聚类回归推荐系统时间序列异常检测。关于文本挖掘,我们已经讨论了诸如语言检测、命名实体识别、LDA、文本推荐等技术。

在这篇文章中,我们将研究如何利用词向量在Azure机器中进行文本分类,我们也将利用流行的WEKA工具。

什么是词向量

我们知道,文档有单词和句子,对它们进行建模分析通常是一项复杂的任务。 因此,需要将这些文档转换为单词向量,以便对它们进行建模。

怀卡托知识分析环境(WEKA)有丰富的功能来建立文本数据的词向量。本文将使用从WEKA中创建的词向量,并在Azure机器学习中使用它们,以便建立分类模型。

我们选择了流行的IMDB 2,000条评论数据集,其评分如WEKA的屏幕上所示。

IMDB Dataset for Text Analytics

有2,000条评论,其中1,000条被标记为正面,而其余的1,000条评论被标记为负面,如下面的截图所示。

Distribution of documents for positive and negative labels.

我们的任务是找出使正面或负面评论的关键词。通过这种建模,我们将能够把未知的评论归入正面或负面的类别。

文件加载到WEKA后,你需要使用一个过滤器,Weka->过滤器->无监督->属性->StringToWordVector,如下图所示。

Using the filter option in WEKA.

一旦选择了所需的过滤器,你需要对所选的过滤器进行配置。

Selected filter in WEKA

下面是对所选的StringToWordVector过滤器的配置,这样就可以得出不同类型的词向量。

Different options for StringtoWordVector in WEKA.

虽然WordVector过滤有很多配置,但我们将只使用其中的几个配置。首先,我们将研究干系人、停止词处理程序、标记化器和保留词的数量,如下图所示。

Configuring stemmer, stopword, tokenizer and words.

标记化技术将决定如何选择关键词。由于选择了AlphabeticTokenizer,所有的数字和特殊字符将被删除。停止词配置将放弃没有任何语义的词,如I、We、You、a、an、the等。通过使用lovinsStemmer词干,单词将被转换为基本形式。请注意,这些是在文本挖掘分析中处理的经典技术。这些都是应该在文本文件上执行的强制性技术。

除了上述技术外,还有一些其他技术将取决于数据集的情况。这四个配置应该用WEKA的不同配置进行验证。

字数统计:输出字数而不是0或1(表示有或没有一个字)。

术语频率(TF):术语频率被转换为对数(频率+1 )

逆向文档频率(IDF):如果同一个词在许多文档中重复出现,IDF将降低词频计数的权重。

文档归一化:这个参数将考虑文档的大小。

通过四个参数,有十六种组合,如下表所示。

组合

IDF

TF

世界计数

文档规范化

1

假的

2

准确

3

4

5

假的

6

准确

7

准确

8

准确

9

10

准确

11

准确

12

13

真 实

假的

14

准确

15

假的

16

通过上述组合,创建了16个文件,这些文件被上传到不同配置IMDB | Kaggle的单词向量

现在文件已经准备好在Azure机器学习中用于文本分类。所有这十六个文件都上传到Azure机器学习中供你使用。

Sixteen files that is used to Text Classification in Azure Machine Learning.

16个数据集被上传后,接下来就是在Azure机器学习中进行文本分类。这将与之前涉及的文本分类相同,如下图所示。

Text Classification of single dataset in Azure Machine Learning.

如上图所示,Azure机器学习中的文本分类使用的是二类神经网络。分割数据控件用于将数据按70/30的比例进行训练和测试,其中使用了训练 模型评分模型。在评估模型控制之后。然后连接到转换 数据集控制。为每个数据集建立类似的16个单元,并连接相同的两类神经网络算法。

多个应用SQL转换控件被用来结合数据集,其脚本如下。

SELECT ‘IDF(F)TF(F)WC(F)NOR(F)’ AS Type,* from t1
UNION ALL
SELECT ‘IDF(F)TF(T)WC(F)NOR(F)’ AS Type,* from t2
UNION ALL
SELECT ‘IDF(F)TF(T)WC(T)NOR(F)’ AS Type,* from t3`

尽管我们可以使用Add Rows控件,但由于有100个控件的限制,我们使用了Apply SQL Transformation控件来减少控件的数量。Add Rows 控件只有两个输入,而 Apply SQL Transformation 有三个输入。通过UNION,我们可以减少控件的数量。

最后,这是所有数据集的输出,以及它们对Azure机器学习中文本分类的评估参数。

Evaluation parameters for sixteen different datasets.

从这些组合中,你可以选择准确率或精确度或召回率或F1-Score最高的更好的组合。正如你所看到的,IDF-True,TF-True,Word Count-False和Document Normalization-False是更好的组合,因为它有最高的准确率以及最高的精确度。

你可以参考参考资料部分中列出的共享实验。由于这是一个笨重的实验,所以有几件事需要指出。由于这是Azure机器学习的免费版本,所以不能使用超过100个控件。此外,一个实验不能包含超过100MB的数据。由于我们有16个数据集,大小超过了100MB,所以从实验中删除了一些数据集,你可以从共享数据集中再次添加它们。此外,SQL转换对超过1024的列将不起作用,这是Azure机器学习中文本分类的另一个阻塞问题。

正如上一篇文章中所讨论的,我们可以使用集合分类来进行多种配置。由于准确率几乎相似,所以没有必要进行集合分类。

如果我们需要标记未标记的文档,首先,我们需要在WEKA中进行必要的参数转换,然后将这些值输入到Azure机器学习中,以找到

结论

本文讨论了如何在WEKA中利用字向量与不同的文本分析参数,如术语频率、逆向文档频率、文档规范化和字数。我们使用了从WEKA创建的词向量,并将其加载到Azure机器学习中。使用标准控件,可以在Azure机器学习中进行文本分类。在免费的Azure机器账户方面有一些限制,如控制的最大数量等。