用户评论标签的抽取
2017-04-30 22:20
141 查看
无意中在知乎中看到一个问题:淘宝的评论归纳是如何做到的? 了解之后觉得较为容易实现,就简单实现了一个对用户评论的标签抽取功能,纯属兴趣所致,所以并没有做十分细致的工作,例如词向量仅用不到3M的评论语料进行训练,词典也是随便找了一些词构建的,代码见CommentsMining。
首先来看下评论标签抽取是做什么的,如图:
![](http://img.blog.csdn.net/20170430212127332?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2hpamluZ18wMjE0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
我们希望在给出下面的评论语料里,自动抽取出上面矩形框中大家一致认同的评论标签展现给用户观看,方便用户快速了解商品特点。对某件商品的标签抽取简单实现的一个效果如下:
![](http://img.blog.csdn.net/20170430212609416?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2hpamluZ18wMjE0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
抽取出来的标签看起来还算正常。
我这里主要是用句法分析+word2vec+dbscan+词典来实现的这样一个功能,具体步骤如下:
1、语料收集
使用爬虫简单爬取了某电商网站女装衬衫下的一些评论语料,由训练集与测试集两部分构成,测试集里仅包含对某件衬衫的评论语料,用于最后的评论抽取,训练集里包含对多个衬衫的评论语料,用于word2vec的训练,处理后的训练集如下:
![](http://img.blog.csdn.net/20170430213624871?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2hpamluZ18wMjE0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
2、训练评论词向量
使用上面得到的训练集,首先使用斯坦福的分词工具进行分词处理并去掉停用词,此处见教程。然后将分词结果交给word2vec来训练出关于评论语料的词向量,本地方用的评论语料仅不到3M,为了得到更好的词向量,可以考虑增加语料的规模。词向量的维度此处为50维。
3、依存句法分析
使用斯坦福nlp工具包+中文model文件来对测试语料做句法分析。因为上一步有用到分词工具,这里建议直接下载斯坦福的coreNLP+中文model文件来使用,句法分析得到的结果如下:
![](http://img.blog.csdn.net/20170430215332005?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2hpamluZ18wMjE0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
4、制定抽取规则
根据上一步对评论语料进行依存句法分析得到的结果,总结出评论标签的抽取规则,如:
nsubj + advmod
nsubj + advmod + advmod
advmod + advmod
advmod + amod
5、获得候选标签
结合抽取规则及情感词典获得候选标签。
6、候选标签消重
可以利用simhash算法对候选标签集合进行消重。
7、候选标签聚类
利用dbscan+word2vec对候选标签进行聚类,通过聚类将语义相似的一些标签聚在一起,实现语义消重的作用。使用dbscan可以很好地将相关标签聚在一起,而不过多地引入杂质。
8、获得目标标签
对每个聚成的簇,计算其聚类中心,并返回与聚类中心最近的一条评论,返回前可以对该条评论进行过滤词的操作,如”颜色比较暗“过滤后变成”颜色暗“。
9、总结
以上是对用户评论标签抽取的简单实现,如若需要做的更细致一些,本人认为可以从下面几点细化:
1、训练语料规模,为了实现方便,只爬了2M多点的语料,但2M多的语料太小了,词向量必然不会很准,好的词向量对聚类至关重要。
2、停用词表、情感词典的构建,好的词典应基于语料构建,这里的停用词表及情感词典都是在网上随便找了一些词添加进来,效果必然不会太好。
3、抽取规则
抽取规则设计的比较简单,会在产生候选标签中生成较多的杂质,这些杂质会对标签抽取产生比较大的影响。
参考
1. 用户评论中的标签抽取以及排序,李丕绩,2012.
首先来看下评论标签抽取是做什么的,如图:
我们希望在给出下面的评论语料里,自动抽取出上面矩形框中大家一致认同的评论标签展现给用户观看,方便用户快速了解商品特点。对某件商品的标签抽取简单实现的一个效果如下:
抽取出来的标签看起来还算正常。
我这里主要是用句法分析+word2vec+dbscan+词典来实现的这样一个功能,具体步骤如下:
1、语料收集
使用爬虫简单爬取了某电商网站女装衬衫下的一些评论语料,由训练集与测试集两部分构成,测试集里仅包含对某件衬衫的评论语料,用于最后的评论抽取,训练集里包含对多个衬衫的评论语料,用于word2vec的训练,处理后的训练集如下:
2、训练评论词向量
使用上面得到的训练集,首先使用斯坦福的分词工具进行分词处理并去掉停用词,此处见教程。然后将分词结果交给word2vec来训练出关于评论语料的词向量,本地方用的评论语料仅不到3M,为了得到更好的词向量,可以考虑增加语料的规模。词向量的维度此处为50维。
3、依存句法分析
使用斯坦福nlp工具包+中文model文件来对测试语料做句法分析。因为上一步有用到分词工具,这里建议直接下载斯坦福的coreNLP+中文model文件来使用,句法分析得到的结果如下:
4、制定抽取规则
根据上一步对评论语料进行依存句法分析得到的结果,总结出评论标签的抽取规则,如:
nsubj + advmod
nsubj + advmod + advmod
advmod + advmod
advmod + amod
5、获得候选标签
结合抽取规则及情感词典获得候选标签。
6、候选标签消重
可以利用simhash算法对候选标签集合进行消重。
7、候选标签聚类
利用dbscan+word2vec对候选标签进行聚类,通过聚类将语义相似的一些标签聚在一起,实现语义消重的作用。使用dbscan可以很好地将相关标签聚在一起,而不过多地引入杂质。
8、获得目标标签
对每个聚成的簇,计算其聚类中心,并返回与聚类中心最近的一条评论,返回前可以对该条评论进行过滤词的操作,如”颜色比较暗“过滤后变成”颜色暗“。
9、总结
以上是对用户评论标签抽取的简单实现,如若需要做的更细致一些,本人认为可以从下面几点细化:
1、训练语料规模,为了实现方便,只爬了2M多点的语料,但2M多的语料太小了,词向量必然不会很准,好的词向量对聚类至关重要。
2、停用词表、情感词典的构建,好的词典应基于语料构建,这里的停用词表及情感词典都是在网上随便找了一些词添加进来,效果必然不会太好。
3、抽取规则
抽取规则设计的比较简单,会在产生候选标签中生成较多的杂质,这些杂质会对标签抽取产生比较大的影响。
参考
1. 用户评论中的标签抽取以及排序,李丕绩,2012.
相关文章推荐
- Python语言解决用户评论标签匹配
- 让html标签以正常文本显示(评论模块中防止用户提交恶意的html或javascipt代码)
- 用户体验是个什么东西?用户体验如何评价好坏?怎样用一句话描述用户体验评价方法的核心? 标签: iphoneapple手机产品通讯工具 2012-05-24 10:41 1453人阅读 评论(0) 收
- MySQL添加新用户、为用户创建数据库、为新用户分配权限 标签: MySQL 2016-12-17 16:41 2768人阅读 评论(0) 收藏 举报 分类: =======学习心得=======
- 通过标签推荐来吸引潜在的用户去对网上的产品做出评论
- python用户评论标签匹配的解决方法
- 用标签显示用户列表及Value Stack和Stack Context
- 去除xml标签,抽取文本内容
- 用户自定义控件(评论的级别)
- 《推荐系统》基于标签的用户推荐系统
- Dedecms默认模板用户评论扩展
- Flask 学习 十二 用户评论
- java调用百度自然语言处理API参考(仿某宝评论观点抽取)
- 基于用户标签的时间衰减因子
- 添加X-UA-Compatible标签,提示用户安装GFC, 兼容 IE浏览器
- HashMap和Hashtable的区别 2013/11/12 | 分类: 基础技术 | 5 条评论 | 标签: 基础技术 分享到: 128 本文由 ImportNew - 唐小娟 翻译自 Javar
- 去掉用户输入的时候带标签的正则
- 基于MaxCompute构建企业用户画像(用户标签的制作)
- [Flex] ButtonBar系列——flex3 labelFunction用户提供的函数,在每个项目上运行以确定其标签
- VirtualBox虚拟机与主机互通,并且虚拟机又能上网配置 标签: virtualboxoraclehost-only rac 11g 2016-07-02 14:05 10670人阅读 评论(0