Python jiaba库的使用详解

yizhihongxing

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_tagsjieba.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技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Python中“虽然不是EOF”的完美对应物是什么

    【问题标题】:What is the perfect counterpart in Python for “while not EOF”Python中“虽然不是EOF”的完美对应物是什么 【发布时间】:2023-04-07 23:41:01 【问题描述】: 要读取一些文本文件,在 C 或 Pascal 中,我总是使用以下 sn-ps 来读取数据,直到 EOF…

    Python开发 2023年4月8日
    00
  • Python中最大递归深度值的探讨

    单独讨论 Python 中最大递归深度的问题不太有意义。对于这个问题需要从 Python 如何处理递归函数开始,以及递归深度和计算机内存容量有何关系等方面来进行探讨。 Python 如何处理递归函数 Python 中的递归函数和其他语言一样,也是直接或间接调用自身。在一个递归函数中,每一次调用该函数都会在内存中产生一个对应的栈帧。一个栈帧包含这个函数的所有局…

    python 2023年6月3日
    00
  • python解析基于xml格式的日志文件

    Python解析基于XML格式的日志文件攻略 什么是XML文件? XML 是可扩展标记语言(eXtensible Markup Language)的缩写。它是一种标记语言,很像 HTML。不过,XML 与 HTML 最大的不同之处在于,HTML 的标记预定义了,而 XML 由用户自己定义标记。 XML格式的日志文件 XML格式的日志文件是指记录日志信息的文件…

    python 2023年6月3日
    00
  • 在漏洞利用Python代码真的很爽

    当涉及到漏洞利用时,Python可以成为你的重要工具之一。下面是漏洞利用Python代码的完整攻略: 1. 选择漏洞利用工具 你可以使用Metasploit框架或其他漏洞利用工具,但他们需要额外的学习成本。Python不需要学习成本过程会相对简单。 2. 确认目标 首先,需要明确你的目标是什么,如一台服务器或一项服务,然后使用端口扫描工具扫描目标。 例如,使…

    python 2023年5月19日
    00
  • Python进阶之迭代器与迭代器切片教程

    Python进阶之迭代器与迭代器切片教程 1. 什么是迭代器 在 Python 中,迭代器是一个可以遍历任意可迭代对象(包括列表、元组、字典、字符串等)的对象,并且支持两个基本操作:__next__ 和 __iter__。 迭代器基本操作 __next__ 方法返回可迭代对象的下一个元素,如果没有元素了抛出 StopIteration 异常。 __iter_…

    python 2023年6月3日
    00
  • Python OpenCV实现图片预处理的方法详解

    Python OpenCV实现图片预处理的方法详解 介绍 在进行机器视觉相关任务时,我们经常需要进行图片预处理,以得到更好的视觉效果或者更好的算法结果。Python OpenCV是一个非常流行的图像处理库,其中包含了丰富的图像处理工具,可用于加速并简化图像预处理的过程。 本文将详细讲解如何通过Python OpenCV实现图片预处理的方法,包括调整大小、裁剪…

    python 2023年5月18日
    00
  • 在cmd中运行.py文件: python的操作步骤

    下面是详细讲解在cmd中运行.py文件的Python操作步骤: 打开cmd命令行窗口: 在Windows系统中,可以通过按下键盘上的Win+R键,然后输入cmd命令打开命令行窗口。 进入到Python文件所在的目录: 在cmd命令行中输入cd命令(change directory)来切换当前所在的目录,例如以下指令用于改变当前目录为C盘根目录下的Python…

    python 2023年5月20日
    00
  • 关于多种方式完美解决Python pip命令下载第三方库的问题

    下面是一份详细的关于多种方式完美解决Python pip命令下载第三方库的问题攻略: 一、什么是pip命令? pip 是 Python 包管理工具,它能够从 PyPI(Python Package Index)下载并安装 Python 包以及相关依赖。pip 命令通常需要在命令行中输入,语法类似于: pip <subcommand> [optio…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部