从数据采集到模型,京东iPad的用户评论#none
优采云 发布时间: 2021-03-10 10:51从数据采集到模型,京东iPad的用户评论#none
在我最近的实习期间,我正在研究新闻文本的情感分析项目。在这里,我将使用京东的产品评论进行练习,并将其完全从数据采集写入模型实施中,以备将来使用。实际上,我使用的方法并不困难,甚至有些天真,所以让我们将其用作练习。
可以通过在公共帐户datadw中回复京东获得本文的代码。
数据采集
为避免手动注释的麻烦,此处使用JD iPad的用户评论
#none
实际上,NLP情感分析中最耗时的过程是手动注释。
如果仔细查看调试控制台,则可以轻松地发现使用json传输了产品注释信息。如下:
此URL实际上相对容易看到设计师的想法。 productId是与产品相对应的ID,score是产品的用户评分,pageSize应该是发回请求的评论数。在实践中,发现这种pageSize通常不会无限大,也就是说,如果您不考虑将pageSize编写得太大,则可以在一个请求中返回很多数据。我的方法是将pageSize编写为通常较大的(^-^),然后连续增加页面以连续抓取数据。
得分规则如下:
* 1:评论不佳
* 2:中等评价
* 3:好评!
* 5:跟进审查
将此URL放入浏览器的搜索地址中,以获取返回的相应JSON数据。我不会在这里显示,请自己看看。起初,您可能会想到此json,但只需仔细看看就可以知道所需的数据在哪里。您必须知道编写网站的程序员也是一名程序员。程序员喜欢整洁的东西,因为“简单来自整洁”,因此,只要您找到实现整洁的方式,就可以轻松获得相应的数据。
实际上,京东对网络爬虫非常宽容。即使没有任何速度控制,它也可以毫无障碍地完成数据采集的工作。建议使用Python 3. 5,因为3. 5对中文有更好的支持,并且您需要下载Request库。这里将不再重复。
构造词向量TF-IDF的方法
我在这里使用的是使用TF-IDF来计算同义词库中最具代表性的单词。
概念
TF-IDF(术语频率-文档频率的倒数)是信息检索和信息探索中常用的加权技术。 TF-IDF是一种统计方法,用于评估单词对文档集或语料库中文档之一的重要性。单词的重要性与在文档中出现的次数成正比,但与此同时,它在语料库中出现的频率则成反比。搜索引擎经常使用各种形式的TF-IDF加权来衡量或评估文档与用户查询之间的相关程度。除了TF-IDF,Internet上的搜索引擎还使用基于链接分析的评级方法来确定文档在搜索结果中的显示顺序。
原理
在给定文档中,术语频率(TF)指给定单词出现在文档中的次数。此数字通常经过规范化处理(分子通常小于分母(与IDF区别),以防止其偏向长文件。 (同一个单词在短文档中的重要性相比,长文档中的单词出现频率可能会高于短文档中的单词出现频率。)
反文档频率(IDF)是对单词普遍重要性的度量。可以通过将文档总数除以收录该单词的文档数量,然后取所获得的商的对数来获得特定单词的IDF。
特定文件中的高单词频率和整个文件集合中该单词的低文件频率可以产生高权重的TF-IDF。因此,TF-IDF倾向于过滤掉常见单词并保留重要单词。
TFIDF的主要思想是:如果一个单词或短语出现在TF频率较高的文章中,而很少出现在其他文章中,则认为该单词或短语具有良好的区分能力,适合分类。 TFIDF实际上是:TF * IDF,TF术语频率(术语频率),IDF反向文档频率(反向文档频率)。 TF表示出现在文档d中的术语的出现频率(另一种方式:TF术语出现频率(Term Frequency)是指给定术语出现在文档中的次数)。 IDF的主要思想是:如果收录t项的文档较少,即n越小且IDF越大,则意味着t项具有很好的区分类别的能力。如果在某种类型的文档C中收录项t的文档数量为m,而在其他类型中收录t的文档总数为k,则显然,收录t的文档数量为n = m + k。当m大时,n也大。 ,根据IDF公式获得的IDF值将很小,这意味着该术语的t类区分能力不强。 (另一种方式:IDF反向文档频率是指这样一个事实,即收录条目的文档越少,IDF越大,这意味着条目具有良好的分类能力。)但是实际上,如果条目是一类文档中的频繁出现表示该条目可以很好地代表此类文字的特征。此类条目应具有较高的权重,并应选择作为文本的特征词以区别它们。和其他类型的文件。这就是IDF的缺点。
在给定的文档中,术语频率(TF)指文档中给定单词的频率。此数字是术语计数的标准化,以防止其偏向长文档。 (长单词中的同一个单词可能比短文档中的单词数量更多,而与单词的重要性无关。)对于特定文档中的单词,其重要性可以表示为:
特定文件中的高单词频率和整个文件集合中该单词的低文件频率可以产生高权重的TF-IDF。因此,TF-IDF倾向于过滤掉常见单词并保留重要单词。
其他说明
此处提出的TF-IDF的详细介绍仅给出了实现TF-IDF的一般方法,但应注意的是,在通用实现方法下的TF-IDF确实可以选择最可区分的文档Words。但是我要做的是选择最能用来区分不同情感的单词。因此,这里我对公式进行了简单的修改。
在计算tf时,我认为整个语料库中只有两种文档,一种是好评论,另一种是差评,而不细分每个评论。有关详细信息,请参见实现。
PMI点相互信息
PMI(逐点相互信息)是衡量两件事(例如两个单词)之间的相关性的一种指标。
在概率论中,我们知道如果x和y不相关,则p(x,y)= p(x)p(y)。两者之间的相关性越大,则与p(x)p(y)相比,p(x,y)越大。可以更好地理解以下公式。在y的情况下,x出现的条件概率p(x | y)除以x出现的概率p(x)自然表示x和y之间的相关程度。
这里的日志来自信息论理论。可以简单地理解为:取p(x)的对数后,它将概率转换为信息(需要乘以-1以使其为正数)。当2为底数时,可以简单地理解为多少个比特可以代表该变量。
其他说明
像以前的TF-IDF一样,我希望选择最有效的词来对情绪进行分类,所以这里是对公式的简单修改。
PMI(word,pos)= logP(word,pos)P(pos)* P(word)
pos代表文档的情感,单词代表某个单词。
分母表示同时出现pos情感和单词的可能性。
完整代码
可以通过在公共帐户datadw中回复京东获得本文的代码。
在实现中,我们需要解决的是分词和词频计算问题。
对于NLP,第一个问题是实现分词。市场上有很多分词库,效果很好。更可悲的是NLTK不支持中文分词方法,这里我使用解霸分词。界坝分词相对易于使用,您可以轻松添加自定义词典。在此项目中,无需添加自定义词汇表,因为产品评论没有非常特殊的固定词。但是在我的实习项目中,由于有很多固定用法的单词,因此非常有必要添加自定义词典。
要注意的另一件事是,尽管您不需要添加自定义词汇表,但仍然需要删除一些“停用词”。这里的无效是指在没有明确的情感取向的情况下表达情绪,但是它们非常常用。这些单词的单词频率会很高,因此这些单词的TF-IDF可能仍然很高,因此需要积极删除它,以免引入噪声。
实验结果
构造向量时,不可能直接使用所有单词,只能选择其中一部分。在这里,我选择了PMI最大的前30个单词。
好的文档
不错
速度
正品
挺
喜欢
很快
屏幕
质量
没
没有
满意
流畅
值得
性价比
高
第一次
好用
快递
送货
运行
好评
评价
系统
清晰
发货
全新
信赖
好好
送
特别
负面评论文件
降价
没有
客服
没
差评
屏幕
送
激活
太
退
刚买
退货
差
垃圾
赠品
想
申请
问
发现
降
货
完
不好
失望
快递
坑
找
第一次
保护
差价
摘要
这里选择了一些单词,可能很难想象为什么它们可以很好地表达文件情感。有些单词可能是常用单词,将它们放入常用单词文档时,需要在切词时预先消除它们。有些确实显示了人们的情绪,但是它们不一定是一般意义上的情绪词,这就是为什么我想使用这种方法来构建用于情感分析的词向量的原因。基于语义规则的情感分析只能掌握一些知名的情感词。同时,研究人员还需要大量时间阅读文本,以便在文本中找到一些可以反映情感的特殊单词。例如,在此示例中,差异,价格保护之类的词经常出现在负面评论中,这反映了人们对商品和服务的理解。当然,这也可以看作是提取热词,只是反映情感的热词。
在这里,我的采集数据是1,000条正面和负面评论,因此总共有2000条评论。实际上,如果需要,您还可以采集个更多的注释来训练分类器。京东实际上很“高兴”。
此外,根据VC理论,参数的维数越大,所需的训练数据集就越大。一般而言,参数的十倍维数是训练集的下限,因此我使用了良好的词汇和较差的评论词汇量TF-IDF最大的前75位构成了150维特征,而1500条注释则是训练放。当然,在特定实践中,您需要重新修改功能数量。
至此,数据采集和构成单词向量的部分结束了。 NLP情绪分析通常有两种方法。首先是根据语义和依存关系来量化文本的情感色彩。但是这种方法首先需要非常完整的情感词汇和良好的语言基础,也就是说,您需要知道一个句子通常被表示为肯定和否定的句子。我个人觉得我们将永远无法用尽所有的语法规则和情感词汇,这无疑增加了构建分类规则的难度。另外,我个人非常相信大数据。换句话说,我认为大数据可以揭示人们认知能力以外的一些信息,而这些信息很难被人们发现。这是机器学习或人工智能,将令人赞叹。第二种方法基于机器学习。本质上,基于机器学习,它将转化为可以通过机器学习解决的问题。情感分析实际上被认为是机器学习中的一个二元分类问题。但是机器无法理解文本,因此我们必须能够将文本转换为矢量,以便机器能够理解。但实际上,对于情感分析而言,最主流的方法是第一种方法。原因是并非所有文本都已标记。换句话说,我们很难爬到JD的数据。抓住它之后,我们将知道文本是肯定的还是否定的。在大多数情况下,有必要手动标记数据。这项工作是劳动密集型的。我已经尝试过手动标记自己的标签,每天只能标记大约400条数据,我很累。对于特定的领域,判断情感不是普通人能做的,这需要大量的专业知识。例如,判断财经新闻是好是坏实际上并不那么容易。
然后,实际上,特征选择的问题并不是那么简单。我在这里只使用了单字TF-IDF。显然,这是一种非常粗糙的参数选择方法。当然,您也可以尝试添加bigram等。这一切都待会儿。
就是这样。在下一部分中,我将尝试此处建立的“ word2vec”方法,相应地构建机器学习模型,并相应地优化模型。
报价
TF-IDF及其算法
PMI算法
如何分类
功能相关性
首先,我需要查看之前选择的功能是否可以满足需求。
实际上有许多参数未在此处显示。从图中可以看出,大多数参数具有很低的相关性,这是一件非常好的事情,因为它表明所选参数具有更高的表达能力。但是我也发现某些参数是重复的,这很尴尬。当然,可以使用PCA过滤掉它。
从该图中可以看出,每个参数对情感都有一定的影响,并且大多数参数具有相对较强的相关性,这表明所选参数不是随机选择的。
模型选择
在这里,我选择了一些更常见的算法模型进行训练,并试图获得一个相对较好的模型。
Kfold函数用于循环测试模型,f1分数用于选择最合适的模型。
我认为LinearSVC在这里相对更好。
可以通过在公共帐户datadw中回复京东获得本文的代码。
人工智能大数据与深度学习