最近接触了下数据方面的东西,先是爬了大量的数据,进而作数据分析。比如就某一字段,某个关键词在其中出现的频数做个统计。一开始,运用sql like操作符即可实现,但这种匹配查询挺耗费时间的。
在网上搜索了下,了解到中文分词技术,其中有个叫jieba分词
的。结巴分词是国内程序员用Python开发的一个中文分词模块,它的源码下载地址:https://github.com/fxsjy/jieba
。
它的特点:
- 支持三种分词模式
- 精确模式,试图将句子最精确地切开,适合文本分析; cut_all=False
- 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义; cut_all=True
- 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
- 支持繁体分词
- 支持自定义词典
- MIT授权协议
安装jieba
推荐使用pip安装jieba组件
pip install jieba
代码示例
# encoding=utf-8
import jieba
sentence = "大数据分析师,分析数据的时候。"
# 精确模式
words = jieba.cut(sentence, cut_all=False)
print ("|".join(words))
#全局模式
words = jieba.cut(sentence, cut_all=True)
#搜索引擎模式
words = jieba.cut_for_search(sentence)
输出结果
全模式:
大数|数据|数据分析|分析|分析师|||分析|数据|的|时候||
精确模式:
大|数据|分析师|,|分析|数据|的|时候|。
搜索引擎模式:
大|数据|分析|分析师|,|分析|数据|的|时候|。
python操作mysql数据库
MySQLdb是Python用以连接Mysql数据库的模块,首先要确定已经安装了MySQLdb 模块。在mac下安装使用pip install mysql-python
。创建好数据库users、user表和自定义的词典dict.txt。
词典格式:一个词占一行;每一行分三部分:词语、词频(可省略)、词性(可省略),用空格隔开,顺序不可颠倒。
# encoding=utf-8
import MySQLdb
import jieba
# 打开数据库连接
db = MySQLdb.connect('localhost',"root","123123","users")
cursor = db.cursor()
# SQL查询语句
sql = "select uname from user"
# 载入事先写好的自定义的词典
jieba.load_userdict("dict.txt")
try:
cursor.execute(sql) # 执行SQL语句
results = cursor.fetchall() # 获取所有记录
for row in results:
name = row[1]
seglist = jieba.cut(name. cut_all=False)
for seg in seglist:
print seg
except:
pass
finally:
db.close() # 关闭数据库连接