赞
踩
Python教程94:jieba模块用法(分词模式+自定义词典+提取词性+关键字),一个优秀的中文分词库。
1.停用词(Stop Words)是指在信息检索和文本挖掘中,为了提高处理效率和效果,经常会被自动忽略的词或词组。这些词通常出现频率非常高,但对文本内容的理解并没有太大帮助。停用词包括但不限于:
代词:如“我”、“你”、“他”、“她”、“它”等。
介词:如“在”、“到”、“从”、“对于”等。
连词:如“和”、“与”、“但是”、“而且”等。
助词:如“的”、“了”、“着”、“过”等。
常用动词:如“是”、“有”、“说”等。
通用量词:如“一些”、“很多”、“这个”、“那个”等。
2.停用词的示例用法+源码中列表推导式的理解
filtered_words = [word for word in seg_list if word not in stop_words]
for word in seg_list:遍历 seg_list 中的每一个元素,这里每个元素都被命名为 word。if word not in stop_words:对于每一个 word,检查它是否不在 stop_words 列表中。如果 word 不在 stop_words 中,那么它就会被添加到 filtered_words 列表中。这样,filtered_words 就只包含了 seg_list 中不是停用词(stop words)的单词。
# @Author : 小红牛 # 微信公众号:WdPython import re import jieba # 1.待分词的文本 text = '杨过是金庸先生所著武侠小说《神雕侠侣》中的男主角啊。12abc' print('1.原文本'.center(30, '-')) print(text) # 2.只取中文的字符,过滤英文数字,各种标点符号等等 chinese = re.findall('[\u4e00-\u9fff]+', text) new_text = ''.join(chinese) print('2.在原文本中,只取中文文本'.center(30, '-')) print(new_text) # 3.把停用词放到集合中,会自动去掉重复的停用词 stop_words = set(['我', '在', '的', '是', '啊']) # 4.对new_text进行jieba分词 seg_list = jieba.cut(new_text, cut_all=False) # 推导式过滤停用词 filtered_words = [word for word in seg_list if word not in stop_words] # 5.过滤停用词后的文本 print('3.去掉停用词后的分词文本'.center(30, '-')) print(filtered_words)
输出内容
------------1.原文本-------------
杨过是金庸先生所著武侠小说《神雕侠侣》中的男主角啊。12abc
--------2.在原文本中,只取中文文本--------
杨过是金庸先生所著武侠小说神雕侠侣中的男主角啊
--------3.去掉停用词后的分词文本---------
['杨过', '金庸', '先生', '所著', '武侠小说', '神雕侠侣', '中', '男主角']
3.使用Counter进行词频统计,参数为列表数据。使用jieba对文本进行分词,接着,使用Python内置的collections.Counter对列表中的词进行词频统计。最后,遍历统计结果并打印出来。
# @Author : 小红牛 # 微信公众号:WdPython import re import jieba from collections import Counter text = '凤凰台上凤凰游,凤去台空江自流。' # 使用正则,只取中文的字符,过滤英文数字,各种标点符号等等 chinese = re.findall('[\u4e00-\u9fff]+', text) new_text = ''.join(chinese) # 1.使用jieba进行分词 lcut_result = jieba.lcut(new_text, cut_all=False) # 2.使用Counter进行词频统计,参数为列表 word_counts = Counter(lcut_result) print(word_counts) # 3.打印词频统计结果 for word, count in word_counts.items(): print(f'{word}: {count}')
输出内容:
Counter({'凤凰': 2, '台上': 1, '游凤去': 1, '台空江': 1, '自流': 1})
凤凰: 2
台上: 1
游凤去: 1
台空江: 1
自流: 1
4.jieba.tokenize示例用法:返回一个生成器,每次迭代返回一个包含三个元素的元组(word, start, end),其中 word 是分词结果中的一个词,start 和 end 分别是该词在原始句子中的起始和结束位置(基于字符索引)。对于一些需要知道分词结果位置信息的任务(如文本高亮、实体识别等)非常有用。
函数的基本语法如下:
jieba.tokenize(sentence, mode='default', cut_all=False)
参数说明:
sentence:需要分词的字符串。
mode:分词模式,默认为 ‘default’。jieba 支持多种分词模式,包括精确模式、全模式、搜索引擎模式等。可以通过设置mode参数来选择不同的分词模式。
cut_all:是否使用全模式分词,默认为 False。如果设置为 True,则使用全模式分词。
import jieba
# 1.待分词的文本
text = '小红牛在分享零基础的Python教程'
jieba.add_word('小红牛')
jieba.add_word('零基础')
# 2.tokenize进行分词并获取位置信息
tokenize_result = jieba.tokenize(text)
for word, start, end in tokenize_result:
print(f"词: {word}, 起始位置: {start}, 结束位置: {end}")
输出内容
词: 小红牛, 起始位置: 0, 结束位置: 3
词: 在, 起始位置: 3, 结束位置: 4
词: 分享, 起始位置: 4, 结束位置: 6
词: 零基础, 起始位置: 6, 结束位置: 9
词: 的, 起始位置: 9, 结束位置: 10
词: Python, 起始位置: 10, 结束位置: 16
词: 教程, 起始位置: 16, 结束位置: 18
完毕!!感谢您的收看
----------★★历史博文集合★★----------
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。