Python 数据分析的敲门砖 jieba模块中文分词


文章目录

文章开篇

Python的魅力,犹如星河璀璨,无尽无边;人生苦短、我用Python!


Jieba简介

jieba 是一个用于中文文本分词 的 Python 库。

它能够将一整段中文文本切分成有意义的词语或短语

分词是中文**自然语言处理(NLP)**中非常重要的一步,因为中文句子中的词与词之间不像英文那样有明确的空格分隔,所以需要专门的工具来进行分词。


使用场景

在文本分析中,可能需要知道文本中哪些词或短语出现的频率最高 ,或者文本的主题 是什么。

在情感分析中,分词可以帮助你识别文本中的关键词或短语 ,进而判断文本的情感倾向

在机器翻译时,源语言和目标语言都需要进行分词,以便将文本转换成机器可以理解的格式

在搜索引擎中,需要对输入的查询内容进行分词,以便更好地理解用户的意图,并返回相关的搜索结果。


jieba的引用

jieba属于第三方模块,使用前需要额外下载安装

python 复制代码
pip install jieba

下载安装完成后,即可导入使用

python 复制代码
import jieba

jieba常用的方法


1.精确模式分词

jieba.cut(sentence, cut_all=False) :核心函数,用于将中文文本切分成词语;

sentence 是要分词的文本

cut_all 是一个可选参数,默认为False;

  • 当它为 True 时,使用全模式进行分词;
  • 当为 False 时,使用精确模式进行分词;

返回值是一个生成器,包含了分词后的结果

python 复制代码
import jieba

sentence = "你的男朋友是个盖世垃圾,将会脚踏七彩祥云迎娶你的闺蜜"
seg_list = jieba.cut(sentence, cut_all=True)
print("模糊模式分词结果:", "/ ".join(seg_list)) # 模糊模式分词结果: 你/ 的/ 男朋友/ 朋友/ 是/ 个/ 盖世/ 垃圾/ ,/ 将/ 会/ 脚踏/ 七彩/ 祥云/ 迎娶/ 你/ 的/ 闺/ 蜜

seg_list = jieba.cut(sentence, cut_all=False)
print("精确模式分词结果:", "/ ".join(seg_list)) # 精确模式分词结果: 你/ 的/ 男朋友/ 是/ 个/ 盖世/ 垃圾/ ,/ 将会/ 脚踏/ 七彩/ 祥云/ 迎娶/ 你/ 的/ 闺蜜

2.搜索引擎模式分词

jieba.cut_for_search(sentence) :用于搜索引擎的分词模式,适合短文本分词;

返回值是一个生成器,包含了分词后的结果;

python 复制代码
import jieba

sentence = "今天的天气很糟糕"
seg_list = jieba.cut_for_search(sentence)

print("搜索引擎模式分词结果:", "/ ".join(seg_list))   # 搜索引擎模式分词结果: 今天/ 的/ 天气/ 很/ 糟糕

3.添加新词

jieba.add_word(word, freq=None, tag=None) :用于向 jieba 的词典中添加新词;

word 是要添加的新词

freq 是可选参数,表示该词的出现频率

tag 是可选参数,表示该词的词性

python 复制代码
import jieba

# 使用新词进行分词
sentence = "网络热词公主请上车"
seg_list = jieba.cut(sentence, cut_all=False)

print("分词结果:", "/ ".join(seg_list)) # 分词结果: 网络/ 热词/ 公主/ 请/ 上车

# 添加新词到词典
jieba.add_word("公主请上车", 20)
seg_list = jieba.cut(sentence, cut_all=False)

print("分词结果包含新词:", "/ ".join(seg_list)) # 分词结果包含新词: 网络/ 热词/ 公主请上车

4.调整词频

jieba.suggest_freq(segment, tune=True) :调整单个词语的词频,使其能(或不能)被分出来。

segment 是要调整词频的词语。

tune 是一个可选参数,当为 True 时,调整词频后,会立即更新词典;当为 False 时,不更新词典。

python 复制代码
import jieba

sentence = "天蚕土豆是一个网文作者"
seg_list = jieba.cut(sentence, cut_all=False)
print("分词结果:", "/ ".join(seg_list)) # 分词结果: 天蚕/ 土豆/ 是/ 一个/ 网文/ 作者

# 调整词频,使得"调整"可以被切分出来
jieba.suggest_freq("天蚕土豆", True)

seg_list = jieba.cut(sentence, cut_all=False)
print("分词结果包含调整词频后的词:", "/ ".join(seg_list))    # 分词结果包含调整词频后的词: 天蚕土豆/ 是/ 一个/ 网文/ 作者

5.提取关键词

jieba.analyse.extract_tags(sentence, topK=20, withWeight=False, allowPOS=()) :用于文本关键词提取。

sentence 是要提取关键词的文本。

topK 是可选参数,表示返回关键词的个数。

withWeight 是可选参数,当为 True 时,返回关键词及其权重;当为 False 时,只返回关键词。

allowPOS 是可选参数,用于指定需要提取的关键词的词性。

python 复制代码
import jieba.analyse

text = "今天天气非常的糟糕,我不喜欢阴雨天"
keywords = jieba.analyse.extract_tags(text, topK=5, withWeight=True)
print("关键词提取结果:", keywords) # 关键词提取结果: [('今天天气', 2.4582479479), ('阴雨天', 2.3196185118), ('糟糕', 1.6664666296419999), ('喜欢', 1.140517680604), ('非常', 0.9806566012679999)]

应用案例

python 复制代码
import jieba.posseg as pseg

# 示例文本
text = "这部电影真的很好看,演员演技出色,剧情也很吸引人。"

# 使用jieba进行词性标注
words = pseg.cut(text)

# 情感分析(简单示例,实际应用可能需要复杂的模型)
sentiment = 0  # 初始情感分数
for word, flag in words:
    if 'n' in flag:  # 名词可能包含情感信息
        sentiment += 1
    elif 'd' in flag:  # 副词可能加强或减弱情感
        sentiment += 2 if word in ['非常', '十分', '特别', '极其'] else -1

# 根据情感分数判断情感倾向
if sentiment > 0:
    print("正面情感")
elif sentiment < 0:
    print("负面情感")
else:
    print("中性情感")

总结

使用jieba库可以轻松地对中文文本进行分词和词频统计,展现文本中的高频词汇。

然而,jieba库的功能远不止于此,它还包括词性标注、关键词提取等,是一个功能强大的中文分词第三方库,广泛应用于自然语言处理任务中。

相关推荐
编啊编程啊程6 分钟前
JUC之AQS
java·开发语言·jvm·c++·kafka
hui函数2 小时前
Flask电影投票系统全解析
后端·python·flask
壹Y.3 小时前
非线性规划学习笔记
学习·数学建模
好学且牛逼的马3 小时前
GOLANG 接口
开发语言·golang
ahauedu3 小时前
AI资深 Java 研发专家系统解析Java 中常见的 Queue实现类
java·开发语言·中间件
韭菜钟3 小时前
在Qt中用cmake实现类似pri文件的功能
开发语言·qt·系统架构
项目題供诗4 小时前
React学习(十二)
javascript·学习·react.js
闲人编程4 小时前
Python第三方库IPFS-API使用详解:构建去中心化应用的完整指南
开发语言·python·去中心化·内存·寻址·存储·ipfs
计算机编程小咖4 小时前
《基于大数据的农产品交易数据分析与可视化系统》选题不当,毕业答辩可能直接挂科
java·大数据·hadoop·python·数据挖掘·数据分析·spark
艾莉丝努力练剑4 小时前
【C语言16天强化训练】从基础入门到进阶:Day 7
java·c语言·学习·算法