从数据库里读取记录

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

import org.apache.spark.sql.SparkSession

在main函数里:

val spark = SparkSession.builder().getOrCreate()//创建一个SparkSession对象

然后使用spark.read.format(“jdbc”)通过从mysql数据库读取的数据(读取的是某个表,DataFrame也是一个类似于数据库表的结构的数据结构):

val jdbcDF = spark.read.format("jdbc").option("url","xxx")//为隐私就不写了.option("driver","com.mysql.jdbc.Driver").option("dbtable","isbn_info").option("user","rec").option("password","cuclabcxg").load()

可以查看一下该表的模式:

jdbcDF.printSchema()

Jieba进行中文分词

IDEA中首先在Maven pom.xml中添加jieba所需依赖:

     <dependency><groupId>com.huaban</groupId><artifactId>jieba-analysis</artifactId><version>1.0.2</version></dependency>

在程序里导入jieba包:

import com.huaban.analysis.jieba.JiebaSegmenter
import com.huaban.analysis.jieba.JiebaSegmenter.SegMode

在main里,取出mysql表中数据,转成String格式,然后再使用jieba分词。

 val comment:String = jdbcDF.first()(6).toString()var jieba:String = new JiebaSegmenter().sentenceProcess(comment).toString()

上面代代码就是取出comment字段为String格式,然后使用jieba的sentenceProcess方法进行分词。

全部代码及结果

import org.apache.spark.sql.SparkSession
import com.huaban.analysis.jieba.JiebaSegmenter
import com.huaban.analysis.jieba.JiebaSegmenter.SegMode
object wordCut {def main(args: Array[String]): Unit = {//spark的入口val spark = SparkSession.builder().getOrCreate()//创建一个SparkSession对象//访问数据库,得到dataframe存储表数据val jdbcDF = spark.read.format("jdbc").option("url","jdbc:mysql://picpic.55555.io:24691/recTest").option("driver","com.mysql.jdbc.Driver").option("dbtable","isbn_info").option("user","rec").option("password","cuclabcxg").load()//取出评论val comment:String = jdbcDF.first()(6).toString()var jieba:String = new JiebaSegmenter().sentenceProcess(comment).toString()print(jieba)}
}

Jieba分词函数的探究

JiebaSegmenter对象下有两个方法:process(),sentenceProcess()。


从IDEA上给出的函数参数可以看出,process()需要两个参数(要进行分词的String类型的文本(段落),切分模式mode(INDEX或SEARCH));sentenceProcess()只需要一个参数(要进行分词的String类型的文本(句子))。
我上面使用的是sentenceProcess,结果是对的。那么使用前者输出结果会是什么样的呢?有什么作用呢?下面就来测试一下:

 val str:String = "我来到北京清华大学。"var jieba0:String = new JiebaSegmenter().sentenceProcess(str).toString()println(jieba0)var jieba2:String = new JiebaSegmenter().process(str,SegMode.INDEX).toString()println(jieba2)var jieba3 = new JiebaSegmenter().process(str,SegMode.SEARCH).toString()println(jieba3)


在此可以发现:使用process()结果是列表套列表,里面的每个小列表中元素依次是
[分好的词, 分好的词的第一个字符在文本字符数组的索引, 分好的词的最后一个字符在文本字符数组的索引的下一个索引]

INDEX:精准的切开,用于对用户查询词分词;
SEARCH:长词再切分,提高召回率。

(对这两个模式的解释翻遍全网,这个还算靠谱)

分词的执行逻辑


可以看到核心在于:
1、内部包含一个字典
2、分词逻辑
3、不同模式的切分粒度

Spark:Jieba对数据库里提取的记录进行中文分词相关推荐

  1. jieba textrank关键词提取 python_五款中文分词工具在线PK: Jieba, SnowNLP, PkuSeg,THULAC, HanLP...

    最近玩公众号会话停不下来:玩转腾讯词向量:Game of Words(词语的加减游戏),准备把NLP相关的模块搬到线上,准确的说,搬到AINLP公众号后台对话,所以,趁着劳动节假期,给AINLP公众号 ...

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

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

  3. jieba库 python2.7 安装_Python中文分词工具大合集:安装、使用和测试

    这篇文章事实上整合了前面两篇文章的相关介绍,同时添加一些其他的Python中文分词相关资源,甚至非Python的中文分词工具,仅供参考. 首先介绍之前测试过的8款中文分词工具,这几款工具可以直接在AI ...

  4. python 分词工具对比_五款中文分词工具在线PK: Jieba, SnowNLP, PkuSeg, THULAC, HanLP

    最近玩公众号会话停不下来: 玩转腾讯词向量:Game of Words(词语的加减游戏) ,准备把NLP相关的模块搬到线上,准确的说,搬到AINLP公众号后台对话,所以,趁着劳动节假期,给AINLP公 ...

  5. python文件读写用到的库_python 读写txt文件并用jieba库进行中文分词

    python用来批量处理一些数据的第一步吧. 对于我这样的的萌新.这是第一步. #encoding=utf-8 file='test.txt'fn=open(file,"r")pr ...

  6. jieba分词_wordcloud词云美化——jieba结巴中文分词(将长句拆分)

    大家好,上一篇文章<五行代码上手WordCloud词云--用一个重复的单词做一个单词云>已经带大家初步认识了词云的基本制作流程,本节教大家如何对长句进行拆分制作词云: 首先我们来了解这张图 ...

  7. jieba库与中文分词

    jieba库概述 由于中文文本中的单词不是通过空格或者标点符号分割,中文及类似语言存在一个重要的"分词"问题. jieba是python中一个重要的第三方中文分词函数库,能够将一段 ...

  8. php数据库的值嵌入input_求助:问个关于用INPUT提取数据库里的值然后修改的问题。...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 这里是前面语言: ID 图书名称 图书编号 图书价格 是否推荐 $query=mysql_query("select * from tb_boo ...

  9. 网站APP数据库里的用户信息被泄露篡改怎么办

    上海经济7月份开始陆续恢复,一些在上海做APP项目的客户开始了一系列的营销推广和发展,在众多渠道推广下,用户下载安装APP的同时,一些安全上的漏洞频发,并被高级黑客给盯上,具体的数据泄露攻击的症状为: ...

最新文章

  1. 机器学习的数学基础 - 期望,方差与协方差
  2. Android - Manifest 文件 详解
  3. 常用系统存储过程有:
  4. POJ - 2513 Colored Sticks(字典树+并查集+欧拉回路)
  5. php拼接多个insert,php – 将多个INSERTS分成一个表和多个表
  6. csdn博客markdown 如何输入上下标(如平方指数等)
  7. 树形结构 —— 并查集
  8. div内容过长自动省略号
  9. signature=ad248ee50cb35fb429594f302bf99ddf,动态源路由协议在无线自组网中的研究与应用...
  10. Perl语言如何学习总结
  11. 卸下重负,苏宁易购重组价值逻辑
  12. 医药行业数据分析软件(含非付费)--对比分析
  13. 数字电路猴博士期末复习笔记
  14. 用scrapy-splash爬取淘宝
  15. Nodejs Blob流方式下载
  16. 如何计算机械能增加量,探讨优化验证机械能守恒定律实验中动能增加量的计算方法...
  17. 字体变形html,SVG文字变形动画特效
  18. java唱哪首歌好听_盘点四首戳爷最好听的歌曲,每一首都很经典,你最喜欢哪一首?...
  19. 基于opencv的倾斜文本行的校正
  20. mysql登录如何重置密码忘记_MySql登陆密码忘记了怎么办?MySQL重置root密码方法...

热门文章

  1. ★路由递归查询方法,及相关图示
  2. java定时执行某个方法_Java中定时执行任务的三种方法
  3. Java-2-学习历程2:基础知识1,2,3文档、完整版视频资源、电子书籍下载
  4. 基于MATLAB的FIR滤波器的图像去噪设计
  5. Sobolev空间-广义函数的概念(二)
  6. 【黑马程序员】 学习笔记 - Java新技术 - 反射
  7. C:/WINDOWS/system32/drivers/etc/hosts 文件有什么作用
  8. 同事离职,留下了我独自流泪改代码
  9. 架构拆分:如何让笨重的系统架构变灵巧?
  10. 拓嘉辰丰电商:拼多多模式的新,新在哪里