目录
前言
本人初学python,为了提高学习效果,同时也希望能够给和我一样初学习python的小伙伴提供一些参考。这是学习笔记的第四篇。如有侵权,请联系删除。
一、自然语言处理(NLP)介绍
自然语言处理(Natural Language Processing,NLP)是计算机科学、人工智能和语言学领域的交叉学科,它致力于使计算机能够理解和处理人类语言。自然语言处理技术的发展对于提高人机交互的自然性、智能化信息检索、文本挖掘、机器翻译等多个领域具有重要意义。
中文分词是自然语言处理在中文领域的一个基础而关键的步骤。由于中文语言的特性,即中文是一种以字为基本书写单位的语言,词语之间没有明显的分隔符(如英文中的空格),因此需要通过分词技术将连续的文本切分成有意义的词语序列。
二、jieba简介
jieba是一个流行的中文分词Python库。它的名字就是中文“结巴”的拼音,也许是老外对中文分词太难了的调侃吧。它支持三种分词模式:精确模式、全模式和搜索引擎模式,能够满足不同的分词需求。除了分词功能,jieba还提供了词性标注、添加新词等功能,广泛应用于自然语言处理领域。
jieba · PyPIChinese Words Segmentation Utilitieshttps://pypi.org/project/jieba/
三、jieba安装
安装jieba分词库非常简单,可以通过Python的包管理工具pip来安装。在终端或者命令提示符中输入以下命令即可完成安装:
pip install jieba
四、jieba使用
1. 导入jieba库:
import jieba
2. 使用jieba进行分词:
- - 精确模式:适合文本分析,保留所有的词语,适合文本分析;
-
sentence = "我来到北京清华大学" seg_list = jieba.cut(sentence, cut_all=False) print("精确模式: " + "/".join(seg_list))
- - 全模式:尽可能多地切分出所有可以成词的词语;
-
seg_list = jieba.cut(sentence, cut_all=True) print("全模式: " + "/".join(seg_list))
- - 搜索引擎模式:在精确模式的基础上,对长词再次切分,适合用于搜索引擎构建索引;
seg_list = jieba.cut_for_search(sentence)
print("搜索引擎模式: " + "/".join(seg_list))
3. 添加新词:
可以在jieba的默认词典之外,添加新的词语,以提高分词的准确率。
4. 词性标注:
jieba还可以对分词结果进行词性标注,需要使用`jieba.pos_tag`函数:
sentence = "我来到北京清华大学"
pos_seg_list = jieba.pos_tag(jieba.cut(sentence))
print("词性标注: " + "/".join("".join(pos) for word, pos in pos_seg_list))
5.应用实例
注意导入txt文件时,文件的路径需要和代码文件在同一个文件夹下,否则需要再在代码注明路径。
import jieba.posseg as pseg
# 加载文本文件
with open('threekingdoms.txt', 'r', encoding='utf-8') as f:
txt = f.read()
# 使用jieba进行词性标注
words = pseg.cut(txt)
# 创建一个字典来存储每个人名出现的次数
wordDict = {}
for word, flag in words:
if flag == 'nr': # 'nr'表示人名
wordDict[word] = wordDict.get(word, 0) + 1
# 对人名出现次数进行排序
items = list(wordDict.items())
items.sort(key=lambda x: x[1], reverse=True)
# 输出出现次数最多的人名
for i in range(10):
word, count = items[i]
print("{0:<10}({1:>5})".format(word, count))
但是发现依然分词结果出现了问题,这时我们可以自己创建新词典导入,来完善结果。