NLP基础实验③:中文分词-jieba

本文深入探讨了中文分词技术,重点介绍了流行的开源工具jieba分词器。jieba提供了三种分词模式:精确模式、全模式和搜索引擎模式,支持自定义词典加载及关键词提取等功能,适用于文本分析和搜索引擎优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

中文分词有很多种,常见的比如有中科院计算所 NLPIR、哈工大 LTP、清华大学 THULAC 、斯坦福分词器、Hanlp 分词器、jieba 分词、IKAnalyzer 等。

jieba

官方: https://github.com/fxsjy/jieba

1、分词

三种分词算法

  • 基于统计词典,构造前缀词典,基于前缀词典对句子进行切分,得到所有切分可能,根据切分位置,构造一个有向无环图(DAG);
  • 基于DAG图,采用动态规划计算最大概率路径(最有可能的分词结果),根据最大概率路径分词;
  • 对于新词(词库中没有的词),采用有汉字成词能力的 HMM 模型进行切分。

支持三种分词模式:

  • 精确模式,试图将句子最精确地切开,适合文本分析
  • 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
  • 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词
import jieba
content = "现如今,机器学习和深度学习带动人工智能飞速的发展,并在图片处理、语音识别领域取得巨大成功。"
# 1、精确
segs_1 = jieba.cut(content, cut_all=False)
print("/".join(segs_1))

#用lcut生成list
segs_2 = jieba.lcut(content)
print(segs_2)

# 2、全模式
segs_3 = jieba.cut(content, cut_all=True)
print("/".join(segs_3))
# 3、搜索引擎
segs_4 = jieba.cut_for_search(content)
print("/".join(segs_4))
1
现如今/,/机器/学习/和/深度/学习/带动/人工智能/飞速/的/发展/,/并/在/图片/处理/、/语音/识别/领域/取得/巨大成功/。

['现如今', ',', '机器', '学习', '和', '深度', '学习', '带动', '人工智能', '飞速', '的', '发展', ',', '并', '在', '图片', '处理', '、', '语音', '识别', '领域', '取得', '巨大成功', '。']

2
现如今/如今///机器/学习/和/深度/学习/带动/动人/人工/人工智能/智能/飞速/的/发展///并/在/图片/处理///语音/识别/领域/取得/巨大/巨大成功/大成/成功//
3
如今/现如今/,/机器/学习/和/深度/学习/带动/人工/智能/人工智能/飞速/的/发展/,/并/在/图片/处理/、/语音/识别/领域/取得/巨大/大成/成功/巨大成功/。

 

lcut 生成 list

jieba.cut 以及 jieba.cut_for_search 返回的结构都是一个可迭代的 Generator,可以使用 for 循环来获得分词后得到的每一个词语(Unicode)。jieba.lcut 对 cut 的结果做了封装,l 代表 list,即返回的结果是一个 list 集合。同样的,用 jieba.lcut_for_search 也直接返回 list 集合。

2、载入字典

自定义添加词到字典

  • jieba.add_word("深享网")
  • jieba.load_userdict('user_dict.txt')

3、关键词提取

  • 基于TF-IDF
  • 基于TextRank

4、词性标注

jieba 可以很方便地获取中文词性,通过 jieba.posseg 模块实现词性标注。

import jieba.posseg as psg
content = "现如今,机器学习和深度学习带动人工智能飞速的发展,并在图片处理、语音识别领域取得巨大成功。"
print([(x.word,x.flag) for x in psg.lcut(content)])
[('现如今', 't'), (',', 'x'), ('机器', 'n'), ('学习', 'v'), ('和', 'c'), ('深度', 'ns'), ('学习', 'v'), ('带动', 'v'), ('人工智能', 'n'), ('飞速', 'n'), ('的', 'uj'), ('发展', 'vn'), (',', 'x'), ('并', 'c'), ('在', 'p'), ('图片', 'n'), ('处理', 'v'), ('、', 'x'), ('语音', 'n'), ('识别', 'v'), ('领域', 'n'), ('取得', 'v'), ('巨大成功', 'nr'), ('。', 'x')]

 

### 构建基于自然语言处理的中文信息检索系统的概述 构建一个基于自然语言处理 (NLP) 的中文信息检索系统涉及多个关键技术环节,这些技术能够帮助提高用户的查询体验以及文档匹配的准确性。以下是关于该主题的一些核心概念和技术细节。 #### 数据预处理阶段 数据预处理是任何 NLP 应用的基础部分,在中文信息检索系统中尤为重要。由于中文字符的特点(无空格分隔单词),需要特别关注分词技术和语义理解能力。常见的做法包括但不限于: - **中文分词**:利用现有的开源工具如 Jieba 或 HanLP 进行高效的中文分词操作[^1]。 ```python import jieba text = "这是一个测试文本" words = list(jieba.cut(text)) print(words) ``` - **停用词过滤**:移除高频但低价值的信息单元,比如“的”、“了”等常见助词或介词。 #### 查询分析与扩展模块 为了提升用户输入查询的质量并减少误检率,可以引入如下机制: - **拼写纠错功能**:当检测到可能存在的错别字时,提示更正建议给用户。例如,“美利坚共和国”的正确形式应为“美国”。此过程可以通过编辑距离算法或者预先训练好的语言模型来完成[^2]。 ```python from fuzzywuzzy import fuzz, process def correct_spelling(query, options): best_match, score = process.extractOne(query, options) if score >= 80: # 设置阈值判断相似度 return best_match else: return query options = ["美国", "英国", "法国"] query = "美利坚共和国" corrected_query = correct_spelling(query, options) print(corrected_query) ``` #### 排序与评分策略 对于返回结果的有效排列至关重要的是采用合适的排序和评分方案。TF-IDF 和 BM25 是两种广泛使用的传统方法;而近年来随着深度学习的发展,神经网络架构也被应用于改进排名效果。 - 使用 TF-IDF 计算词语的重要性权重,并据此调整候选文件的相关程度得分。 ```python from sklearn.feature_extraction.text import TfidfVectorizer corpus = [ '这是一篇有关科技的文章', '另一篇文章讨论经济话题' ] vectorizer = TfidfVectorizer() X = vectorizer.fit_transform(corpus) print(vectorizer.get_feature_names_out()) print(X.toarray()) ``` #### 用户界面设计考量 最后,友好的前端交互也是不可或缺的一环。它应该支持多样的输入方式(语音/文字)、即时反馈以及个性化推荐等功能特性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值