Python jieba库的使用详解
简介
Jieba是一款开源的中文分词库,在中文自然语言处理领域具有非常广泛的应用。Jieba分词速度非常快,支持三种分词模式和特定领域分词。本文将给出Jieba库的基本使用方法,并介绍三种分词模式和特定领域分词,同时也给出几个实例进行演示。
安装
使用pip即可安装jieba:
pip install jieba
基本使用
一个最简单的例子:
import jieba
text = "我来到北京清华大学"
words = jieba.cut(text)
print(list(words))
以上代码中,我们首先import了jieba库。接下来我们定义了一个字符串text
,表示我们要进行分词的句子。然后,我们使用jieba库中的jieba.cut()
函数对这个句子进行分词,并将其返回值转化为列表类型,最后使用print()
函数把它打印输出。
输出结果如下:
['我', '来到', '北京', '清华大学']
对于上述示例,我们可以看到jieba默认将文本用精确模式分词,返回分词后的结果。
分词模式
Jieba支持三种分词模式:精确模式、全模式和搜索引擎模式。
精确模式
精确模式是默认的模式,它会尽可能地将待分词文本精确地进行分词。
使用方法:
import jieba
text = "我来到北京清华大学"
words = jieba.cut(text, cut_all=False)
print(list(words))
输出结果:
['我', '来到', '北京', '清华大学']
全模式
全模式就是把待分词文本中所有的可能词语都扫描出来,有重叠部分的词语将被分割成多个词语。
使用方法:
import jieba
text = "我来到北京清华大学"
words = jieba.cut(text, cut_all=True)
print(list(words))
输出结果:
['我', '来到', '北京', '清华', '清华大学', '华大', '大学']
搜索引擎模式
搜索引擎模式是在精确模式的基础上,对长词再次切分,提高召回率,适用于搜索引擎分词。
使用方法:
import jieba
text = "他来到了网易杭研大厦"
words = jieba.cut_for_search(text)
print(list(words))
输出结果:
['他', '来到', '了', '网易', '杭', '研', '大厦', '网易杭研大厦']
关键词提取
jieba支持多种关键词提取的方法,包括:jieba.analyse.extract_tags
、jieba.analyse.textrank
。
基于TF-IDF算法的关键词提取
基于TF-IDF算法的关键词提取方式可以通过jieba.analyse.extract_tags
实现。
使用方法:
import jieba.analyse
text = """
丹东旅游文化协会会长张亮来到罗山镇凤鸣村观赏樱桃并表示,甘泉镇有大量的樱桃产区,全体樱桃种植户都同心协力,大力推进樱桃生产发展。山东是首个品牌区域,我从东营出发,来到甘泉镇,在这里感受到了山东樱桃的浪漫和美。下一步,我们将做好宣传推广,共同打造壮美的品牌,让更多的游客感受到“山东樱桃·生态风景区”的魅力。
"""
keywords = jieba.analyse.extract_tags(text, topK=5, withWeight=True, allowPOS=('n', 'ns'))
for item in keywords:
print(item[0], item[1])
输出结果:
樱桃 0.8639565426741935
山东 0.3247452191822581
甘泉镇 0.2707532711725807
品牌 0.23847139975483872
种植 0.2153939034864516
以上代码中,我们首先import了jieba.analyse库。接下来我们定义了一个字符串text
,表示我们要进行关键词提取的文本。然后,我们使用jieba中的jieba.analyse.extract_tags()
函数对这个文本进行关键词提取。其中参数topK
表示返回的关键词数量,withWeight
表示是否返回关键词权重值,allowPOS
表示仅限制词性,并只提取名词或地名等实词。
基于TextRank算法的关键词提取
基于TextRank算法的关键词提取方式可以通过jieba.analyse.textrank
实现。
使用方法:
import jieba.analyse
text = """
丹东旅游文化协会会长张亮来到罗山镇凤鸣村观赏樱桃并表示,甘泉镇有大量的樱桃产区,全体樱桃种植户都同心协力,大力推进樱桃生产发展。山东是首个品牌区域,我从东营出发,来到甘泉镇,在这里感受到了山东樱桃的浪漫和美。下一步,我们将做好宣传推广,共同打造壮美的品牌,让更多的游客感受到“山东樱桃·生态风景区”的魅力。
"""
keywords = jieba.analyse.textrank(text, topK=5, withWeight=True, allowPOS=('n', 'ns'))
for item in keywords:
print(item[0], item[1])
以上代码中,我们也是首先import了jieba.analyse库。然后和基于TF-IDF算法关键词提取方法一样,定义了一个字符串text
。然后,我们使用jieba中的jieba.analyse.textrank()
函数对这个文本进行中文关键词提取。其中参数topK
表示返回的关键词数量,withWeight
表示是否返回关键词权重值,allowPOS
表示仅限制词性,并只提取名词或地名等实词。
示例
示例1:《红楼梦》中词频统计
我们可以通过使用jieba库对《红楼梦》中的文章进行分词,并统计词频。
代码:
import jieba
import collections
# 打开《红楼梦》
with open('hongloumeng.txt', 'r', encoding='UTF-8') as f:
text = f.read()
words = jieba.cut(text)
# 统计词频并排序
counter = collections.Counter(words)
word_freq = sorted(counter.items(), key=lambda x:x[1], reverse=True)
# 输出前100个词的词频
for word, freq in word_freq[:100]:
print(word, freq)
输出结果:
, 12259
的 7806
。 6794
了 2666
是 2567
... ... ... ...
以上代码中,我们使用了Python内置的collections
库,该库的Counter
函数可以快速地统计词频。通过读取文件方式打开《红楼梦》文件,并进行基于jieba精确模式的分词。最终实现了这个古典著作的词频排序。
示例2:中文短文本关键词提取
在实际的应用场景中,我们需要对一些中文短文本进行关键词抽取。以下为一步骤。
代码:
import jieba.analyse
text = "B站(哔哩哔哩)成立于 2009 年,是国内领先的年轻人文化社区,以“让一切创意都能被分享”为使命,聚集了国内众多年轻人分享创造的精神。截至 2019 年 12 月,B站的月活跃用户超过 2.23 亿,其中 90 后占比超过 80%。"
keywords = jieba.analyse.extract_tags(text, topK=5, withWeight=True, allowPOS=('n', 'v', 'a'))
for item in keywords:
print(item[0], item[1])
输出结果:
B站 0.669932497325
年轻人 0.2036702844125
分享 0.11668135748999999
创意 0.1154444132825
众多 0.1047035974765
以上代码中,我们的输入是B站的一个介绍短语,将原始短语中的关键词抽取出来。同样地,使用jieba库中jieba.analyse.extract_tags()
的函数完成关键词提取的任务。这次我们使用了一组不同的参数让关键词提取得到的结果更为丰富。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python jiaba库的使用详解 - Python技术站