第二周作业文本分析,文本分类算法( 四 )


词向量表示当我们单看单词时,机器很难理解人类会立即理解的联系 。例如,引擎和汽车似乎有一个明显的连接(汽车使用引擎运行),但是这种连接对计算机而言并不那么明显 。值得庆幸的是,有一种方法可以表示可以捕获更多此类连接的单词 。甲字矢量是commuicates其换句话说关系的词的数字表示 。每个单词都被解释为唯一且冗长的数字数组 。
您可以将这些数字视为GPS坐标之类的东西 。GPS坐标由两个数字(纬度和经度)组成,如果我们看到两组GPS坐标在数字上彼此接近(如43--70和44--70),我们会知道这两个位置相对紧靠在一起 。词矢量与此类似,虽然有很多分配给每个单词超过两个坐标,所以他们对人类眼球更难 。使用spaCy的en_core_web_sm模型,让我们看一个单词的向量长度,以及使用.vector和看起来的向量.shape 。
人们无法观察到该数组并将其识别为“芒果”的含义,但是以这种方式表示该单词对机器而言效果很好,因为它使我们能够代表该单词的含义及其与其他相似单词的“接近度”使用数组中的坐标 。文字分类现在,我们已经看了一些spaCy一般可以完成的很酷的事情,让我们看一下这些自然语言处理技术中的一些更大的实际应用:文本分类 。
通常,我们可能会发现自己想要根据一些参数(例如,每个片段的主题)进行分类的一组文本数据,而文本分类将帮助我们做到这一点 。下图显示了在对文本进行分类时我们想要做什么的全景视图 。首先,我们从源文本(及其附带的任何标签或元数据)中提取所需的功能,然后将清理后的数据馈送到为我们进行分类的机器学习算法中 。导入库我们将从导入此任务所需的库开始 。
我们已经导入了spaCy,但是我们也想要pandas并scikit-learn帮助进行分析 。加载数据中上面,我们看了一些使用进行文本分析的简单示例spaCy,但是现在我们将使用进行一些Logistic回归分类scikit-learn 。为了使这一点更加现实,我们将使用真实的数据集-这组Amazon Alexa产品评论 。
该数据集以制表符分隔的文件(.tsv)的形式出现 。它已经有五列:rating,date,variation,verified_reviews,feedback 。rating表示每个用户给Alexa的评分(满分5分) 。date指示审查日期,并variation描述用户审查的型号 。verified_reviews包含每个评论的文本,并feedback包含一个情感标签,其中1表示正面情绪(用户喜欢),0表示负面情绪(用户不喜欢) 。
该数据集包含消费者对亚马逊Echos,Echo Dots,Alexa Firesticks等Alexa产品的评论 。我们要做的是开发一个分类模型,该模型查看评论文本并预测评论是正面还是负面 。由于此数据集已在该feedback列中包含评论是肯定的还是否定的,因此我们可以使用这些答案来训练和测试我们的模型 。
我们的目标是生成一个准确的模型,然后将其用于处理新的用户评论,并快速确定它们是正面还是负面 。首先,将数据读取到数据pandas框中,然后使用pandas的内置函数来帮助我们仔细查看数据 。使用标记数据 spaCy现在我们知道我们正在使用什么,让我们使用创建一个自定义标记器函数spaCy 。我们将使用此功能自动从每个评论中剥离不需要的信息,例如停用词和标点符号 。
我们将从导入所需的英语模型spaCy以及Python的string模块开始,该模块包含一个有用的清单,其中列出了我们可以在中使用的所有标点符号string.punctuation 。我们将创建包含要删除的标点符号和停用词的变量,以及一个通过spaCy英文模块运行输入的解析器 。然后,我们将创建一个spacy_tokenizer()函数,该函数接受一个句子作为输入,并将该句子处理为标记,执行词形化,小写并删除停用词 。

推荐阅读