使用Spark框架中文分词统计

简介: 技术 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 
  1. 运行程序
    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
  2. 总结
    因为其中频度最高的词汇就是“**”。当然,真正应用中需要结合权重算法,将一些常用词如“的”,“然后”,“因此”之类的词汇排除。哈工大语言云服务和SparkStreaming构建了一个简单的实时中文词频统计框架,下一步可以考虑结合爬虫获取实时新闻,然后通过上述框架进行中文分词和词频统计,并判断新闻的热点关键字。也可以构建基于关键字的权重向量,再调用聚类模型对新闻进行实时主题分类。可以使用Nutch这个高大上的东西,使用deploy模式将爬取的内容存储在HDFS中。
  3. Nutch

    这里写图片描述
    Nutch搭建其实很简单,可以选用2.x版本,可以用deploy模式或者local模式都是可以的,当然最好是用deploy模式,执行nutch脚本,注意你可以使用索引,加上solr,当爬取内容需要做搜索管理时,索引是必须的。

  4. 下步想法
    可以使用spring mvc解决平台显示,后台提供分词统计的结果。

目录
相关文章
|
消息中间件 分布式计算 Kafka
195 Spark Streaming整合Kafka完成网站点击流实时统计
195 Spark Streaming整合Kafka完成网站点击流实时统计
75 0
|
SQL 分布式计算 大数据
大数据Spark框架概述
大数据Spark框架概述
207 0
|
分布式计算 关系型数据库 MySQL
Spark Streaming实时流处理项目实战笔记——将统计结果写入到MySQL数据库中
Spark Streaming实时流处理项目实战笔记——将统计结果写入到MySQL数据库中
Spark Streaming实时流处理项目实战笔记——将统计结果写入到MySQL数据库中
|
3月前
|
分布式计算 资源调度 Shell
如何开始使用Spark框架?
【8月更文挑战第31天】如何开始使用Spark框架?
63 2
|
3月前
|
SQL 机器学习/深度学习 分布式计算
Spark框架
【8月更文挑战第31天】Spark框架
38 2
|
6月前
|
分布式计算 Hadoop 大数据
分布式计算框架比较:Hadoop、Spark 与 Flink
【5月更文挑战第31天】Hadoop是大数据处理的开创性框架,专注于大规模批量数据处理,具有高扩展性和容错性。然而,它在实时任务上表现不足。以下是一个简单的Hadoop MapReduce的WordCount程序示例,展示如何统计文本中单词出现次数。
195 0
|
6月前
|
机器学习/深度学习 分布式计算 数据处理
在Python中应用Spark框架
在Python中应用Spark框架
61 1
|
5月前
|
分布式计算 定位技术 Scala
使用spark基于出租车GPS数据实现车辆数量统计以及北京每个城区的车辆位置点数分析
使用spark基于出租车GPS数据实现车辆数量统计以及北京每个城区的车辆位置点数分析
110 0
|
6月前
|
SQL 分布式计算 Hadoop
Spark分布式内存计算框架
Spark分布式内存计算框架
165 0
|
6月前
|
分布式计算 Hadoop Java
Spark_Day01:Spark 框架概述和Spark 快速入门
Spark_Day01:Spark 框架概述和Spark 快速入门
92 0