1.安装 jieba 库
!pip install jieba
jieba 库是用于中文分词的工具,它通过精确的分词算法来处理文本。通过分词可以将中文句子拆分成单独的词语,这对于自然语言处理任务非常重要,比如文本分类、情感分析、关键词提取。
2.中文文本分词处理
import jieba
text = "我喜欢学习自然语言处理"
seg_list = jieba.cut(text)
print(" ".join(seg_list))
jieba.cut(text) 是用来对中文文本 text 进行分词的函数,返回的是生成器(seg_list),包含文本中的每个分词。cut 函数的默认模式是精确模式,它会将文本切分为尽可能准确的词语。" ".join(seg_list) 会把分词列表中的每个词语连接成一个字符串,中间以空格分隔。通过 jieba.cut(),jieba 将这个句子切割成了几个有意义的词语。由于 jieba 使用的是基于词典的分词算法,它能够识别出 "自然语言" 是词汇,而不是将其拆分为 "自然" 和 "语言"。
3.全模式分词
seg_list = jieba.cut(text, cut_all=True)
print(" ".join(seg_list))
cut_all=True 参数表示启用全模式分词(而不是默认的精确模式)。在全模式下jieba 会将文本尽可能地切分成所有可能的词语,而不仅仅是最精确的分词,适用于对词语进行粗略筛选。
4.搜索引擎模式分词
seg_list = jieba.cut_for_search(text)
print(" ".join(seg_list))
搜索引擎模式分词,切分出词汇粒度介于精确模式和全模式之间。既会尽可能精确切分出常见词语,同时也会尝试切分出一些短词或未登录词,以增强搜索时的召回率。提升搜索引擎的召回率,它比精确模式更加细致,比全模式更加精简,适用于文本搜索、索引。
5.词性标注
import jieba.posseg as pseg
text = "我喜欢学习自然语言处理"
words = pseg.cut(text)
for word, flag in words:
print(f'{word} {flag}')
jieba.posseg 是 jieba 库的子模块,用于分词和词性标注。通过 pseg.cut() 方法进行文本分词,并标注每个词的词性。pseg.cut(text)方法会返回生成器,它不仅会返回切分后的词,还会为每个词返回词性,生成words 是包含词和词性标注的元组。flag表示词性标注。jieba 提供多种常见的词性标注(如名词、动词、形容词等)。
6.关键词提取
import jieba.analyse
text = "我喜欢学习自然语言处理,尤其喜欢中文分词技术。"
keywords = jieba.analyse.extract_tags(text, topK=5, withWeight=True)
for word, weight in keywords:
print(f'{word} {weight}')
jieba.analyse是jieba库的子模块,用于关键词提取。从文本中自动挑选出最具代表性和信息量大词语的过程,通常用于信息检索、文本挖掘等领域。topK指定返回的关键词数量。withWeight=True指定返回的关键词是否包括权重(每个关键词的评分)。weight是关键词的权重(权重越高,表示该词语在文本中的重要性越大)。
extract_tags 方法是基于 TF-IDF(Term Frequency-Inverse Document Frequency) 算法进行关键词提取的。TF-IDF 是常用词频统计方法,能够通过计算词语在文本中的出现频率和在其他文档中的出现情况来评估词语的重要性。
7.自定义词典
import jieba
# 加载自定义词典
jieba.load_userdict("userdict.txt")
# 测试分词效果
text = "李四和腾讯正在讨论深度学习的技术应用。"
seg_list = jieba.cut(text)
print("分词结果:" + "/ ".join(seg_list))
自定义词典可以提高 jieba 分词的准确性,特别是在遇到人名、地名、行业术语等特殊词汇时。userdict.txt 是文本文件,其中包含jieba 分词时识别的自定义词汇。文件的格式通常是每行一个词汇,并且每个词汇后面可以附带一个权重值(如果不指定权重,则使用默认权重),每行一个词,词语后面可以加上词频(可选)。
jieba.cut(text)使用 jieba.cut 方法对文本 text 进行分词处理。返回生成器(generator),通过 join 可以将其转化为可读的字符串。"/ ".join(seg_list)将分词结果从生成器中提取出来,并使用斜杠 (/) 连接每个词。最终的分词结果是一个按 / 分隔的词语列表。