使用Spark框架中文分词统计
- 技术
Spark+中文分词 - 算法
对爬取的网站文章的关键词进行统计,是进行主题分类,判断相似性的一个基础步骤。例如,一篇文章大量出现“风景”和“酒店”之类的词语,那么这篇文章归类为“旅游”类的概率就比较大。而在关于“美食”的文章中,“餐厅”和“美味”等词语出现的频率一般也会比较大。
分词使用语言云http://www.ltp-cloud.com实现对一段中文先进行分词,然后通过Spark streaming 对分词后的内容进行词频统计。 通过ltp-cloud进行中文分词
目前国内有不少科研机构开发了中文分词系统,例如中科院、哈工大、科大讯飞等,本次体验的是哈工大的语言云。Rest API调用,
例如(YourAPIKey替换成你的APIKey):
curl -i"http://api.ltp-cloud.com/analysis/?api_key=YourAPIKey&text=认知商业需要认知技术&pattern=ws&format=plain" HTTP/1.1 200 OK Server: nginx Date: Tue, 22Mar 2016 14:18:39 GMT Content-Type:text/plain;charset=utf-8 Transfer-Encoding:chunked Connection:keep-alive X-Powered-By-360WZB:wangzhan.360.cn Vary:Accept-Encoding
- Spark Streaming进行词频统计
Spark Streaming是基于Spark平台上提供的流计算引擎,可以处理多种数据来源的流数据,并进行统计分析。在Spark Streaming的sample程序中,就提供了从MQTT,Kafka,Network socket等来源读取数据的word count。本次测试NetworkWordCount,即SparkStreaming从TCPIP Socket读取数据,然后对内容进行词频统计。
// 创建Streaming上下文,使用2个线程,流处理时间窗口1秒 valconf=newSparkConf.setMaster("local[2]").setAppName("NetworkWordCount")valssc=newStreamingContext(conf,Seconds(1)) // 创建监听9999端口的流 vallines=ssc.socketTextStream("localhost",9999) // 将行拆分成单词 valwords=lines.flatMap(_.split(" ")) // 统计词频 valpairs=words.map(word=>(word,1))valwordCounts=pairs.reduceByKey(_+_) // 打印统计结果 wordCounts.print // 启动流,开始计算 ssc.start ssc.awaitTermination
- 运行程序
cd $SPARK_HOME目录,
输入:./bin/run-example streaming.NetworkWordCount llhost 9999
Spark会启动一个Spark Streaming的WordCount范例程序,在9999端口监听,并进行词频统计。然后,通过另外一个脚本,用curl调用哈工大语言云进行分词,并通过linux命令nc将结果写入端口9999的socket:
curl-i “http://api.ltp-cloud.com/analysis/?api_key=YourAPIKey&text=认知商业需要认知技术&pattern=ws&format=plain”|nc -lk 9999 - 总结
因为其中频度最高的词汇就是“**”。当然,真正应用中需要结合权重算法,将一些常用词如“的”,“然后”,“因此”之类的词汇排除。哈工大语言云服务和SparkStreaming构建了一个简单的实时中文词频统计框架,下一步可以考虑结合爬虫获取实时新闻,然后通过上述框架进行中文分词和词频统计,并判断新闻的热点关键字。也可以构建基于关键字的权重向量,再调用聚类模型对新闻进行实时主题分类。可以使用Nutch这个高大上的东西,使用deploy模式将爬取的内容存储在HDFS中。 -
Nutch
Nutch搭建其实很简单,可以选用2.x版本,可以用deploy模式或者local模式都是可以的,当然最好是用deploy模式,执行nutch脚本,注意你可以使用索引,加上solr,当爬取内容需要做搜索管理时,索引是必须的。 下步想法
可以使用spring mvc解决平台显示,后台提供分词统计的结果。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
涂鸦科技:支撑从零暴增数十亿数据的背后,竟无专职运维!
直播视频 (点击图片查看视频) 幻灯下载地址: https://oss.aliyuncs.com/yqfiles/76d3bb80d4a9da17ababada8f56ecd8b.pdf 3月23日云栖社区在线实时分享顺利结束,本次由涂鸦科技技术总监柯都敏分享了涂鸦科技云上架构设计和借助阿里云实现轻运维高可用性监控的实战经验,同时也介绍了网络安全、权限控制等特定场景下如何利用阿里云产品解决特定的问题题。本次视频直播的整理文章、视频、幻灯片整理完毕,如下内容。 架构演变历程 初创公司的团队刚起步时一般规模都不是很大,并且成员能力各异,而且为了公司的长远发展,初始的架构需要设计的尽可能优秀。因此在设计时需要考虑到架构性能、扩展、代码安全、测试等等问题。 图一 第一代轻架构 在涂鸦科技设计第一代架构时,业务量并不是很大。在设计之初,对整个架构进行了简
- 下一篇
Java 封装 HDFS API 操作
代码下载地址:点击下载 一:环境介绍 hadoop:2.6 Ubuntu:15.10 eclipse:3.8.1 二:操作包括 判断某个文件夹是否存在 isExist(folder); 创建文件夹 mkdir(folder); 删除文件夹 rmr(folder); 列出所有文件夹 ls(folder); 递归列出所有文件夹 lsr(folder); 上传文件 put(local, folder); 下载文件 get(folder,local1); 删除文件 rm(folder); 显示文件 cat(folder); 三:代码演示 package user_thing_tuijian; import java.io.IOException; import java.net.URI; import java.net.URISyn...
相关文章
文章评论
共有0条评论来说两句吧...