“西游记之大圣归来”关键词提取-textrank
功能
- 输出文本关键词以及热度值
工具
- python2 spark2.0.2
数据集
- 两个字段(评论人,评论内容),480条短评;
结果
引言
- textrank是一个基于词共现的算法,目前最新的spark2.2.1的ml模块里没有textrank。
- python的textrank库:
- 输入是分词后的文本,输出是热度词topN;
- 在对源代码做了些更改后(textrankWeightWords),输出的是热度词topN和其对应的热度值。
脚本
主函数
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
@author:
@contact:
@file:
@time:
"""
from __future__ import print_function
import sys,os,time,jieba
reload(sys)
sys.setdefaultencoding("utf-8")
from pyspark.sql import SparkSession
from pyspark.sql import Row
from pyspark.ml.feature import CountVectorizer
import textrankWeightWords,PreTreatment#读取配置文件
url,driver,oracle_user,password,data_table,time_column,DATATYPE_column,SPARK_HOME=PreTreatment.configfileParameter(1)
os.environ['SPARK_HOME'] = SPARK_HOME
spark = SparkSession.builder.appName("textRank").getOrCreate()# 读取oracle数据
sys_year=sys.argv[1]
jdbcDF =spark.read.format("jdbc").options(url=url,driver=driver,dbtable="(select * from " + data_table + " where to_char(" + time_column + ",'yyyy')=" + str(sys_year) + ")",user=oracle_user, password=password).load()
onlychina = jdbcDF.filter(jdbcDF['SS'].rlike("[\u4e00-\u9fa5]"))
onlychina.createOrReplaceTempView("onlychina")
#把所有数据合在一起
df = spark.sql("select concat_ws(' ', collect_set(SS)) as text_group from onlychina")
#做textrank
rdd = df.rdd.map(lambda x: (Row(keyWord=PreTreatment.stopword(textrankWeightWords.textrankWeightWords(x[0], 30)[1]),hotRate=PreTreatment.intArr2StrArr(textrankWeightWords.textrankWeightWords(x[0], 30)[0]))))
df=rdd.toDF()
df.show(truncate=False)
spark.stop()
textrankWeightWords
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
@author:
@contact:
@time:
"""
def textrankWeightWords(selfdoc, limit=5, merge=False):from snownlp import segfrom snownlp import normalfrom snownlp.summary import textrankfrom snownlp.summary import words_mergedoc = []sentences = normal.get_sentences(selfdoc)sents = sentencesfor sent in sents:words = seg.seg(sent)words = normal.filter_stop(words)doc.append(words)rank = textrank.KeywordTextRank(doc)rank.solve()ret = []for w in rank.top_index(limit):ret.append(w)if merge:wm = words_merge.SimpleMerge(selfdoc.doc, ret)return wm.merge()# return retweight=[]for i in rank.top[0:limit]:weight.append(i[1])return weight,ret
PreTreatment
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
@author:
@contact:
@time:
"""
from __future__ import print_function
from pyspark.sql import SparkSession
import os,time,ConfigParser,sys
reload(sys)
sys.setdefaultencoding("utf-8")os.environ['SPARK_HOME'] = "/usr/local/spark"
spark = SparkSession.builder.appName("PreTreatment").getOrCreate()
sc = spark.sparkContext
# 加载停用词典
stopwords = sc.textFile("hdfs://stopwords.txt")stopwords = stopwords.collect()def configfileParameter(b):pwd = sys.path[0]path = os.path.abspath(os.path.join(pwd, os.pardir, os.pardir))os.chdir(path)cf = ConfigParser.ConfigParser()cf.read("/configfile.conf")url = cf.get("oracle", "url")driver = cf.get("oracle", "driver")oracle_user = cf.get("oracle", "oracle_user")password = cf.get("oracle", "password")data_table = cf.get("oracle", "data_table")time_column = cf.get("oracle", "time_column")DATATYPE_column = cf.get("oracle", "DATATYPE_column")SPARK_HOME = cf.get("SPARK_HOME", "SPARK_HOME")return url,driver,oracle_user,password,data_table,time_column,DATATYPE_column,SPARK_HOME# 去停用词、单字、数字
def stopword(strArr):stop_strArr = []for i in strArr:if len(i) > 1:if i.isdigit() != True:if i not in stopwords:stop_strArr.append(i)return stop_strArr#list每个元素保留4位小数,并把数值型的元素转化为字符串形式
def intArr2StrArr(intArr):StrArr = []for i in intArr:StrArr.append(str(round(i, 4)))return StrArr
run
/usr/local/spark/bin/spark-submit --jars ojdbc6.jar,mysql-connector-java-5.1.41-bin.jar,textrankWeightWords.py,PreTreatment.py --driver-memory 2G --master spark:// --executor-memory 10G --total-executor-cores 56 Run.py 2018 >> 1.log 2>&1
“西游记之大圣归来”关键词提取-textrank相关推荐
- albiononline未能连接服务器,西游记之大圣归来无法连接服务器解决方案分享
西游记之大圣归来无法连接服务器解决方案分享,今天小编为大家整理的是关于西游记之大圣归来无法连接服务器解决方案分享的分享,如果你在西游记之大圣归来这款游戏中也遇到了这类的问题不妨来看看小编为大家整理的处 ...
- 如何评价电影《西游记之大圣归来》?
一. 在我上小学的年纪,最想要拥有的朋友有两个,一个是哆啦a梦,它的异次元口袋如果能让我用用,那该多好:另一个,就是孙悟空.他是那么强悍,十万天兵见了他都绕路走,更别说班主任和家长了. 按西游记的说法 ...
- “西游记之大圣归来”短评主题分析-Latent Dirichlet Allocation
功能 输出影评主题: 输出每份评论在各个主题上的权重分布. 工具 python2 spark2.0.2 引言 在机器学习中,LDA是两个常用模型的简称:线性判别分析(Linear Discrimina ...
- 《西游记之大圣归来》
今天闲的无聊,看下了国产动画片--大圣归来.之前有看过来国产的动画片,如秦时明月,魁拔等.不能说完美吧,但至少看见了中国动画人在努力,在前行.因此,本着不吐槽,不墨迹的原则看完了整部片.整部片的内容讲 ...
- 《大圣归来》电影海报原创作者张浩谈商业海报制作思路
通常谈到商业创作和个人创作之间的关系,大多艺术家恐怕都是要眉头紧锁的.要么为了心中的情怀,视商业为猛虎,完全杜绝:要么将商业创作和个人创作截然分开,井水不犯河水.不过,我的处理方式却是绝妙的.可以说, ...
- 从《大圣归来》谈谈国产3D技术的崛起
很多年前的七月,你是否和我一样,正开开心心地过暑假呢? 比如捧着香甜的西瓜,坐在大屁股电视机前,津津有味地看电视. 那么,你是否还记得这部<大闹天宫>? 孙悟空穿着鹅黄色的上衣,大红的裤子 ...
- 《大圣归来》电影海报原创作者张浩:如何驾驭灵感作品
2015年7月,电影<西游记之大圣归来>在众青春片浩浩荡荡的碾压之势下逆袭,微博等新媒体甚至自发产生一众"自来水"免费为影片宣传,仅上映20天累计票房便已突破7亿大关, ...
- 2015071202 - 大圣归来
西游记之大圣归来,这部电影感觉还不错,国产3D中比较好的作品,难得看过之后大家一堆夸赞啊,真心不错啊! 虽然把猴子搞的很难看的,电影结尾收尾比较仓促,有些细节问题感觉不是很到位! 从观众的评价来说,大 ...
- 定护你一世周全 《大圣归来》影评剧透慎点
整个六月下旬,微博被预告MV刷屏,觉得歌曲一般,画面很好,又有热心粉丝换上戴荃的歌曲<悟空>,好像很赞.朋友向我推荐这个MV的时候是这样说的: "大圣穿着全身甲,搭件长了个长的红 ...
最新文章
- 最小长度电路板排列问题_射频电路板设计,这篇文章五大总结不可忽视!
- C++基础:C++类成员属性的一种简洁实现
- 广州.NET俱乐部活动通知(11月17日)
- c++ 查找 list中最长的字符串_查找不重复字符的最长子字符串(编程面试中常见题-用8种编程语言来回答)...
- 512M内存编译php出错
- 排序 -> 选择排序
- pat题解java,1039 到底买不买 (20分) Java题解 PAT (Basic Level) Practice (中文)- 巧妙开大数组减少代码量...
- 100万并发连接服务器笔记之准备篇
- GCC,GDB,Makefile
- 正则表达式各种常规应用
- JMS开发(一):基础理论认知
- web元素定位之------日历控件的定位
- 妹子,你早该放弃了...
- java生产者消费者模型
- 用计算机算出女儿身高,孩子身高预测计算器准吗
- 使用echarts-gl 绘制3D地球配置详解
- 数字电视标准5种规格720p、1080i和…
- 华为鸿蒙系统让国产手机用,鸿蒙系统不支持华为手机 系统还是国产手机的命门...
- 正确的打字方式,如何正确分配手指控制按键
- 互联网日报 | 雷军新年首场直播带货金额破1.88亿;京东正式上线“京喜拼拼”;三峡电站创造新世界纪录...