这里介绍一下用spark对中文文本中的关键字提取,这里使用IK分词实现

Maven依赖

<dependencies><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>2.7.6</version></dependency><dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_2.11</artifactId><version>${spark.version}</version></dependency><dependency><groupId>org.apache.spark</groupId><artifactId>spark-mllib_2.11</artifactId><version>${spark.version}</version></dependency><dependency><groupId>com.janeluo</groupId><artifactId>ikanalyzer</artifactId><version>2012_u6</version></dependency><dependency><groupId>org.apache.lucene</groupId><artifactId>lucene-core</artifactId><version>3.6.0</version></dependency>
</dependencies>

斗罗大陆.txt

唐门外门弟子唐三,因偷学内门绝学为唐门所不容,跳崖明志时却来到了另一个世界,一个属于武魂的世界。名叫斗罗大陆。这里没有魔法,没有斗气,没有武术,却有神奇的武魂。这里的每个人,在自己六岁的时候,都会在武魂殿中令武魂觉醒。武魂有动物,有植物,有器物,它们可以辅助人们的日常生活。而其中一些特别出色的武魂却可以用来修炼,这个职业,是斗罗大陆上最为强大也是最重要的职业,——魂师。当唐门暗器来到斗罗大陆,当唐三武魂觉醒,他能否在这片武魂的世界重塑唐门辉煌?职业等级:魂士、魂师、大魂师、魂尊、魂宗、魂王、魂帝、魂圣、斗罗、封号斗罗。

SplitWord.java

package util;import org.wltea.analyzer.core.IKSegmenter;
import org.wltea.analyzer.core.Lexeme;import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;/*** @Author Daniel* @Description IK中文分词**/
public class SplitWord {public static void main(String[] args) {List<String> splitWord = getSplitWord("唐门外门弟子唐三,因偷学内门绝学为唐门所不容,跳崖明志时却来到了另一个世界,一个属于武魂的世界。名叫斗罗大陆。", 2);System.out.println(splitWord);}public static List<String> getSplitWord(String line, int wordLength) {List<String> words = new ArrayList<>();// 过滤掉控制if (line == null || line.trim().length() == 0) {return words;}try {// 这里使用IK中封装好的类IKSegmenter来进行分词IKSegmenter seg = new IKSegmenter(new InputStreamReader(new ByteArrayInputStream(line.getBytes(StandardCharsets.UTF_8))), false);// 获取下一个词元Lexeme lex = seg.next();while (lex != null) {// 获取词元内容String word = lex.getLexemeText();if (wordLength == 0 || word.length() == wordLength) {// 将分词结果放到集合中words.add(word);}// 迭代lex = seg.next();}} catch (IOException e) {e.printStackTrace();}return words;}}

ExtractChineseKeyWord.scala

package utilimport java.io.{BufferedWriter, File, FileWriter}import org.apache.spark.SparkConf
import org.apache.spark.SparkContextimport collection.JavaConverters._
import org.apache.spark.rdd.RDD/*** @Author Daniel* @Description Spark中文关键词提取**/object ExtractChineseKeyWord {def main(args: Array[String]) {// (输入文件或文件夹,选择N字词,取出topN)getKeyWords("斗罗大陆.txt", 2, 0)}def getKeyWords(doc: String, wordLength: Int, topN: Int) {val conf = new SparkConf()conf.setAppName("Spark中文关键字提取工具")conf.setMaster("local[*]")val sc = new SparkContext(conf)val rdd: RDD[(String, Int)] = sc.textFile(doc)// 指定分词方式为IK分词.flatMap { line => SplitWord.getSplitWord(line, wordLength).asScala }// wordcount.map { word => (word, 1) }.reduceByKey(_ + _)// 排序.sortBy(x => x._2, ascending = false)var result = ""// 如果topN等于0则取出所有分词结果if (topN == 0) {result = rdd.collect().mkString("\n")} else {result = rdd.take(topN).mkString("\n")}sc.stop()writeFile("wordcount.txt", result)}// 报错为文件def writeFile(output: String, context: String) {val bw = new BufferedWriter(new FileWriter(new File(output)))bw.write(context)bw.close()}}

wordcount.txt

(武魂,8)
(唐门,4)
(世界,3)
(职业,3)
(没有,3)
(大陆,3)
(一个,2)
(可以,2)
(来到,2)
(这里,2)
(觉醒,2)
(属于,1)
(到了,1)
(修炼,1)
(等级,1)
(个人,1)
(门外,1)
(也是,1)
(封号,1)
(重要,1)
(辅助,1)
(名叫,1)
(外门,1)
(另一,1)
(人们,1)
(特别,1)
(会在,1)
(最为,1)
(六岁,1)
(陆上,1)
(这片,1)
(而其,1)
(重塑,1)
(植物,1)
(生活,1)
(不容,1)
(出色,1)
(一些,1)
(有神,1)
(内门,1)
(门弟,1)
(别出,1)
(暗器,1)
(能否,1)
(它们,1)
(都会,1)
(助人,1)
(魔法,1)
(最重,1)
(每个,1)
(在这,1)
(却可,1)
(武术,1)
(日常,1)
(这个,1)
(中一,1)
(其中,1)
(明志,1)
(动物,1)
(斗气,1)
(绝学,1)
(弟子,1)
(器物,1)
(强大,1)
(偷学,1)
(却有,1)
(用来,1)
(辉煌,1)
(神奇,1)
(时候,1)
(自己,1)

Spark中文分词案例相关推荐

  1. 中文分词分类有哪些小黄鸡中文分词案例分析

    字符匹配 这种方法又叫做机械分词方法,它是按照一定的策略将待分析的汉字串与一个"充分大的"机器词典中的词条进行配,若在词典中找到某个字符串,则匹配成功(识别出一个词).按照扫描方向 ...

  2. Spark+Jieba实现中文分词

    本案例使用jieba分词,jieba 是目前最好的 Python 中文分词组件,使用Spark同样也能实现中文分词.实现步骤如下: 1.导入依赖 <dependency><group ...

  3. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(十九)ES6.2.2 安装Ik中文分词器

    注: elasticsearch 版本6.2.2 1)集群模式,则每个节点都需要安装ik分词,安装插件完毕后需要重启服务,创建mapping前如果有机器未安装分词,则可能该索引可能为RED,需要删除后 ...

  4. 使用Python+jieba和java+庖丁分词在Spark集群上进行中文分词统计

    写在前边的话: 本篇博客也是在做豆瓣电影数据的分析过程中,需要对影评信息和剧情摘要信息进行分析而写的一篇博客 以前学习hadoop时,感觉做中文分词也没那么麻烦,但是到了Spark,却碰到了诸多困难, ...

  5. Spark:Jieba对数据库里提取的记录进行中文分词

    从数据库里读取记录 我们要创建一个DataFrame来存储从数据库里读取的表. 首先要创建Spark的入口–SparkSession对象. 需要引入的包: import org.apache.spar ...

  6. spark mllib lda 中文分词、主题聚合基本样例

    github https://github.com/cclient/spark-lda-example spark mllib lda example 官方示例较为精简 在官方lda示例的基础上,给合 ...

  7. SPARK+ANSJ 中文分词基本操作

    ANSJ 5.0.2 这是一个基于n-Gram+CRF+HMM的中文分词的java实现. 分词速度达到每秒钟大约200万字左右(mac air下测试),准确率能达到96%以上 目前实现了.中文分词. ...

  8. python爬虫案例——根据网址爬取中文网站,获取标题、子连接、子连接数目、连接描述、中文分词列表

    全栈工程师开发手册 (作者:栾鹏) python教程全解 其中使用到了urllib.BeautifulSoup爬虫和结巴中文分词的相关知识. 调试环境python3.6 # 根据连接爬取中文网站,获取 ...

  9. NLP+词法系列(二)︱中文分词技术简述、深度学习分词实践(CIPS2016、超多案例)

    摘录自:CIPS2016 中文信息处理报告<第一章 词法和句法分析研究进展.现状及趋势>P4 CIPS2016 中文信息处理报告下载链接:http://cips-upload.bj.bce ...

最新文章

  1. 学习CSS的背景图像属性background
  2. 打破双亲委派么,怎么打破_打破了vs你错了
  3. asp.net常见问题收集
  4. python无法在终端运行程序_解决项目pycharm能运行,在终端却无法运行的问题
  5. 第八届蓝桥杯java b组第十题
  6. UVA10213 How Many Pieces of Land【数学+大数】
  7. Pikachu实验过程3(XSS的分析)
  8. VMware windows2003系统安装教程
  9. 专业解读:超高清4K是什么?
  10. google地图通过经纬度查询位置
  11. 【01】制作第一个zblog模板第一期,第一步首先我们创建我们的模板基础信息以及申请成为zblog开发者
  12. 站桩功(初稿)王芗斋 著
  13. 网站开发进阶(二十四)HTML颜色代码表
  14. Severstal: Steel Defect Detection竞赛
  15. 可以帮助提升程序员高效工作效率的常用小工具推荐
  16. 微信小程序一个按钮同时获取用户信息和手机号码
  17. 腾讯云轻量应用服务器器使用技巧-腾讯云OrcaTerm的上传下载
  18. 系统总线【计算机组成原理】
  19. Android上网彩信设置
  20. kotlin版本的围住神经猫

热门文章

  1. 从事档案管理和计算机相关工作,计算机在档案管理中的相关运用.doc
  2. lamp部署配置及部署phpmyadmin
  3. html css画小猪佩琪,【前端切图】用css画一个卡通形象-小猪佩奇
  4. OSChina 周三乱弹 ——你知道开源项目是怎么维护的么
  5. 闲话Google拼音输入法及其它(二)
  6. 基于.net 基于ModBus协议的PLC设备数据采集(单片机,研华6017设备)
  7. 达梦数据库初级学习总结(上)
  8. 买邮箱账号安全吗,邮箱选择安全问题介绍,哪个邮箱最安全好用?
  9. Android运行环境Dalvik模式和ART模式的区别
  10. 根据子节点查找根节点