深度学习:基于 Gensim 的 Yelp 评论文本分类实例-经管之家官网!

人大经济论坛-经管之家 收藏本站
您当前的位置> 考研考博>>

考研

>>

深度学习:基于 Gensim 的 Yelp 评论文本分类实例

深度学习:基于 Gensim 的 Yelp 评论文本分类实例

发布:casey_c | 分类:考研

关于本站

人大经济论坛-经管之家:分享大学、考研、论文、会计、留学、数据、经济学、金融学、管理学、统计学、博弈论、统计年鉴、行业分析包括等相关资源。
经管之家是国内活跃的在线教育咨询平台!

经管之家新媒体交易平台

提供"微信号、微博、抖音、快手、头条、小红书、百家号、企鹅号、UC号、一点资讯"等虚拟账号交易,真正实现买卖双方的共赢。【请点击这里访问】

提供微信号、微博、抖音、快手、头条、小红书、百家号、企鹅号、UC号、一点资讯等虚拟账号交易,真正实现买卖双方的共赢。【请点击这里访问】

通过gensim将词向量(Word2Vec)学习机运用于文本分类中,参考文献:DocumentClassificationbyInversionofDistributedLanguageRepresentations(ACL2015)。1、数据准备首先,我们需要到kaggle上的Yelprecruitingcon ...
免费学术公开课,扫码加入


通过 gensim 将词向量(Word2Vec)学习机运用于文本分类中,参考文献:Document Classification by Inversion of Distributed Language Representations(ACL 2015)。
1、数据准备
首先,我们需要到 kaggle 上的 Yelp recruiting contest 下载我们要用到的数据,可能需要注册并登陆自己的 kaggle 账号。
https://www.kaggle.com/c/yelp-recruiting/download/yelp_training_set.zip
https://www.kaggle.com/c/yelp-recruiting/download/yelp_test_set.zip
接着,解压数据,并从中获取本文需要的有关信息。
在本次分析中,我们将使用一个非常简单的语法解析规则,如下所示:
  1. import re
  2. contractions = re.compile(r"'|-|\"")
  3. # 所有非字符数值
  4. symbols = re.compile(r'(\W+)', re.U)
  5. # 删除单个字符
  6. singles = re.compile(r'(\s\S\s)', re.I|re.U)
  7. # 分隔符(任何空格)
  8. seps = re.compile(r'\s+')

  9. # 文本清洗(注意操作顺序)
  10. def clean(text):
  11. text = text.lower()
  12. text = contractions.sub('', text)
  13. text = symbols.sub(r' \1 ', text)
  14. text = singles.sub(' ', text)
  15. text = seps.sub(' ', text)
  16. return text

  17. # 定义分句函数
  18. alteos = re.compile(r'([!\?])')
  19. def sentences(l):
  20. l = alteos.sub(r' \1 .', l).rstrip("(\.)*\n")
  21. return l.split(".")
复制代码然后我们需要将上述规则嵌入一个能够产生带星级评论的评论生成器。
  1. from zipfile import ZipFile
  2. import json

  3. def YelpReviews(label):
  4. with ZipFile("yelp_%s_set.zip"%label, 'r') as zf:
  5. with zf.open("yelp_%s_set/yelp_%s_set_review.json"%(label,label)) as f:
  6. for line in f:
  7. rev = json.loads(line)
  8. yield {'y':rev['stars'],\
  9. 'x':[clean(s).split() for s in sentences(rev['text'])]}
复制代码例如:
  1. YelpReviews("test").next()
复制代码
由于文件相对较小,我们可以将其中的所有内容都写入内存列表之中,这将花费一些时间。
  1. revtrain = list(YelpReviews("training"))
  2. print len(revtrain), "training reviews"

  3. ## 打乱数据排列顺序
  4. import numpy as np
  5. np.random.shuffle(revtrain)
复制代码229907 training reviews
最后,我们还需再写一个函数,以便于我们按语料库顺序找到那些拥有确定星级的评论,并获取其中的每一个句子。
  1. def StarSentences(reviews, stars=[1,2,3,4,5]):
  2. for r in reviews:
  3. if r['y'] in stars:
  4. for s in r['x']:
  5. yield s
复制代码2、词向量(Word2Vec)模型构建
首先,我们需要安装一个现成的 Word2Vec 包。
  1. from gensim.models import Word2Vec
  2. import multiprocessing

  3. ## 构建一个 w2v 学习机
  4. basemodel = Word2Vec(
  5. workers=multiprocessing.cpu_count(), # 获得你当前的 CPU 的核数
  6. iter=3) # 该项参数的值越大,模型效果越好,构建时消耗的资源也越多
  7. print basemodel
复制代码Word2Vec(vocab=0, size=100, alpha=0.025)
通过句子构建词库(我们也可以运用一个外生的无标注词库来对基础模型进行预训练)
  1. basemodel.build_vocab(StarSentences(revtrain))
复制代码接着,我们对每个基础的模型进行一次 深层复制(deep copy) ,以此来进行评论星级分类的训练。这一步的计算量比较大……
  1. from copy import deepcopy
  2. starmodels = [deepcopy(basemodel) for i in range(5)]
  3. for i in range(5):
  4. slist = list(StarSentences(revtrain, [i+1]))
  5. print i+1, "stars (", len(slist), ")"
  6. starmodels[i].train(slist, total_examples=len(slist) )
复制代码
以上内容转自 数析学院,原文还包括模型反演以及测试集案例,有需要的同学可以直接查看原文
「经管之家」APP:经管人学习、答疑、交友,就上经管之家!
免流量费下载资料----在经管之家app可以下载论坛上的所有资源,并且不额外收取下载高峰期的论坛币。
涵盖所有经管领域的优秀内容----覆盖经济、管理、金融投资、计量统计、数据分析、国贸、财会等专业的学习宝库,各类资料应有尽有。
来自五湖四海的经管达人----已经有上千万的经管人来到这里,你可以找到任何学科方向、有共同话题的朋友。
经管之家(原人大经济论坛),跨越高校的围墙,带你走进经管知识的新世界。
扫描下方二维码下载并注册APP
本文关键词:

本文论坛网址:https://bbs.pinggu.org/thread-5287670-1-1.html

人气文章

1.凡人大经济论坛-经管之家转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
经管之家 人大经济论坛 大学 专业 手机版