一文详解Softmax函数,softmax函数( 六 )


在正面和负面标签中对文本进行分类称为情感分析 。因此,我们需要一种数字表示文本的方法 。我们可以用来执行此操作的一种工具称为Word of Words 。BoW将文本转换为给定文档中单词出现的矩阵 。它着眼于给定单词在文档中是否出现,并生成一个矩阵,我们可以将其称为BoW矩阵或文档术语矩阵 。我们可以通过为我们的文本数据弓矩阵scikit-learn的CountVectorizer 。
在下面的代码中,我们告诉CountVectorizer使用spacy_tokenizer构建的自定义函数作为其标记生成器,并定义所需的ngram范围 。N-gram是给定文本中相邻单词的组合,其中n是插入标记中的单词数 。例如,句子“谁将在2022年赢得世界杯足球赛?” 字母组合是一个单词序列,例如“ who”,“ will”,“ win”等 。
二元组将是两个连续单词的序列,例如“谁将”,“将获胜”,等等 。大数据分析Python中spaCy文本分类使用教程https://www.aaa-cg.com.cn/xmt/2338.html因此,ngram_range我们将在下面的代码中使用的参数设置ngram的上下限(我们将使用unigram) 。然后,我们将ngram分配给bow_vector 。
我们还希望查看术语的TF-IDF(术语频率-反文档频率) 。这听起来很复杂,但这只是通过查看每个单词的频率与文档频率的比较来规范我们的单词袋(BoW)的一种方式 。换句话说,这是一种表示特定术语在给定文档中的重要性的方法,它基于该术语出现了多少次以及该术语出现在其他文档中的数量 。TF-IDF越高,这个词对那个文件更重要 。
我们可以用以下数学方程式表示:当然,我们不必手工计算!我们可以使用scikit-learn的TfidfVectorizer 自动生成TF-IDF。再次,我们将告诉它使用与我们一起构建的自定义标记生成器,spaCy然后将结果分配给变量tfidf_vector 。将数据分为训练集和测试集我们正在尝试建立分类模型,但是我们需要一种方法来了解其实际表现 。
将数据集分为训练集和测试集的方法是经过实践检验的 。我们将一半的数据集用作训练集,其中将包含正确的答案 。然后,我们将使用数据集的另一半测试模型,而无需给出答案,以查看其执行的准确性 。便利,scikit-learn为我们提供了一个内置的这样做的功能:train_test_split() 。我们只需要告诉它要分割的功能集(X),要对其进行测试的标签(ylabels)以及要用于测试集的大小(以十进制形式的百分比表示) 。
创建管道并生成模型现在我们已经完成了所有的设置,现在是时候实际构建模型了!我们将从导入LogisticRegression模块并创建LogisticRegression分类器对象开始 。然后,我们将创建一个包含三个组件的管道:清理器,向量器和分类器 。清洁器使用我们的predictors类对象来清洁和预处理文本 。
向量器使用countvector对象为文本创建词袋矩阵 。分类器是执行逻辑回归以对情感进行分类的对象 。建立此管道后,我们将使用来装配管道组件fit() 。评估模型让我们看一下我们的模型实际表现如何!我们可以使用中的metrics模块执行此操作scikit-learn 。现在我们已经训练了模型,我们将把测试数据通过管道进行预测 。
然后,我们将使用metrics模块的各种功能来查看模型的准确性,准确性和召回率 。1)准确性是指我们的模型做出的完全正确的预测总数中的百分比 。2)精度描述了我们预测中真实阳性与真实阳性加假阳性的比率 。3)回忆描述了我们的预测中真实阳性与真实阳性加假阴性的比率 。上面的文档链接提供了每个术语的更多详细信息和更精确的定义,但最重要的是,所有三个指标的测量范围均为0到1,其中1完全正确地预测了所有指标 。
因此,模型的得分越接近1,就越好 。换句话说,总体而言,我们的模型在94.1%的时间内正确地识别了评论的情绪 。当它预测评论是正面的时,该评论实际上在95%的时间内是正面的 。当进行正面评价时,我们的模型将其确定为正面评价的时间为98.6%资源和后续步骤在大数据分析Python中spaCy文本分类使用教程的整个过程中,我们已经从执行一些非常简单的文本分析操作spaCy到使用来构建自己的机器学习模型scikit-learn 。

推荐阅读