您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
python提取文本中的一类词给个思路是什么?
文本,单词,标记python提取文本中的一类词给个思路是什么?
发布时间:2019-02-08加入收藏来源:互联网点击:
该数据集包含消费者对亚马逊Echos,Echo Dots,Alexa Firesticks等Alexa产品的评论。我们要做的是开发一个分类模型,该模型查看评论文本并预测评论是正面还是负面。由于此数据集已在该feedback列中包含评论是肯定的还是否定的,因此我们可以使用这些答案来训练和测试我们的模型。我们的目标是生成一个准确的模型,然后将其用于处理新的用户评论,并快速确定它们是正面还是负面。
首先,将数据读取到数据pandas框中,然后使用pandas的内置函数来帮助我们仔细查看数据。
使用标记数据 spaCy
现在我们知道我们正在使用什么,让我们使用创建一个自定义标记器函数spaCy。我们将使用此功能自动从每个评论中剥离不需要的信息,例如停用词和标点符号。
我们将从导入所需的英语模型spaCy以及Python的string模块开始,该模块包含一个有用的清单,其中列出了我们可以在中使用的所有标点符号string.punctuation。我们将创建包含要删除的标点符号和停用词的变量,以及一个通过spaCy英文模块运行输入的解析器。
然后,我们将创建一个spacy_tokenizer()函数,该函数接受一个句子作为输入,并将该句子处理为标记,执行词形化,小写并删除停用词。这类似于我们在大数据分析Python中spaCy文本分类使用教程前面的示例中所做的操作,但是现在我们将所有内容放到一个函数中,以预处理要分析的每个用户评论。
定义自定义变压器
为了进一步清除文本数据,我们还需要创建一个自定义转换器,以删除开头和结尾的空格并将文本转换为小写形式。在这里,我们将创建一个predictors继承TransformerMixin类的自定义类。该类重写transform,fit和get_parrams方法。我们还将创建一个clean_text()删除空格并将文本转换为小写字母的函数。
矢量化特征工程(TF-IDF)
在对文本进行分类时,最终得到的是与相应标签匹配的文本片段。但是我们不能在我们的机器学习模型中简单地使用文本字符串。我们需要一种将文本转换为可以用数字表示的内容的方法,就像标签(正数为1,负数为0)一样。在正面和负面标签中对文本进行分类称为情感分析。因此,我们需要一种数字表示文本的方法。
我们可以用来执行此操作的一种工具称为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。当然,这仅仅是个开始,两者还有很多spaCy,scikit-learn必须提供给Python数据科学家。
https://www.toutiao.com/i6841453880681693710/
上一篇:如何看待专科护理?
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |