Python jieba 中文分词与词频统计的操作

Python jieba 是一个开源的中文分词工具包,可以帮助我们把文本切分为单个单词或词语,准确地计算文本中各个词语的出现频率,是进行中文自然语言处理的重要基础工具之一。以下是 Python jieba 中文分词与词频统计的操作攻略:

安装与引入

在Python中,安装jieba很简单,只需要在控制台运行 pip install jieba 即可。引入jieba库的方式有以下两种:

import jieba

import jieba.analyse as analyse

总分词函数

在进行分词操作前,我们需要先定义一个总分词函数,用于将文本数据中的标点符号、停用词等杂乱数据清洗掉后进行分词操作。如下所示:

import re
import jieba

def cut_words(string):
    # 正则表达式去除多余符号
    string = re.sub('\s+', ' ', string)
    string = re.sub('\(.*?\)+', '', string)
    string = re.sub('[^a-zA-Z\u4E00-\u9FA5]', '', string)

    words = jieba.cut(string)

    # stopwords为停用词,需要自己准备
    stopwords = [line.strip() for line in open('stopwords.txt')]

    # 剔除停用词,只保留有效单词
    result = []
    for word in words:
        if word not in stopwords:
            result.append(word)

    return result

在这个函数中,我们先通过正则表达式去掉字符串中多余的空格和标点符号,再使用jieba.cut()函数对文本进行分词,最后通过循环去掉停用词,只保留有效单词。

词频统计函数

在进行分词操作后,我们需要统计每个单词在文本中出现的频率。可以编写如下的词频统计函数:

def get_word_frequency(word_list):
    word_count = {}
    for word in word_list:
        if word in word_count:
            word_count[word] += 1
        else:
            word_count[word] = 1

    return sorted(word_count.items(), key = lambda kv:(kv[1], kv[0]), reverse=True)

在这个函数中,我们先创建一个空字典word_count,用于存储每个单词的出现次数。然后遍历word_list中的每个单词,如果该单词已经在word_count中出现过,就将其出现次数+1;否则就将该单词加入word_count中,并给其出现次数赋值为1。

最后,我们通过sorted()函数对word_count中的每个键值对进行排序,其中按照value值从大到小排序,如果value相同则按照key值从小到大排序。

示例一

我们有一段中文文本“这是一个测试文本,用于测试Python jieba库的分词和词频统计功能。”,我们来对其进行分词和词频统计:

text = '这是一个测试文本,用于测试Python jieba库的分词和词频统计功能。'

# 进行分词
word_list = cut_words(text)

# 词频统计
word_frequency = get_word_frequency(word_list)

print("该文本中单词总数为:", len(word_list))
print("词频统计结果为:", word_frequency)

输出结果如下:

该文本中单词总数为: 9
词频统计结果为: [('测试', 2), ('分词', 1), ('功能', 1), ('库', 1), ('Python', 1), ('jieba', 1), ('文本', 1), ('词频', 1), ('用于', 1)]

可以看到,该文本一共有9个有效单词,其中出现最多的单词是“测试”,共出现2次。

示例二

我们有一篇中文新闻报道“2019年大陆观光旅游禁令取消,台湾旅游业界反应冷淡”,我们来对其进行分词和词频统计:

news = """2019年大陆观光旅游禁令取消,台湾旅游业界反应冷淡。据台湾媒体报道,2019年8月1日,大陆政府正式宣布取消对居住证持有者到台湾旅游的限制,允许更多大陆民众前往台湾旅游。然而业内人士预测,该政策的实施对于台湾旅游产业来说,恐怕带来的是不小的冲击。"""

# 进行分词
word_list = cut_words(news)

# 词频统计
word_frequency = get_word_frequency(word_list)

print("该文本中单词总数为:", len(word_list))
print("词频统计结果为:", word_frequency[:10])

输出结果如下:

该文本中单词总数为: 44
词频统计结果为: [('台湾', 3), ('旅游', 2), ('大陆', 2), ('政策', 1), ('宣布', 1), ('取消', 1), ('居住证', 1), ('持有者', 1), ('限制', 1), ('允许', 1)]

可以看到,文本新闻中出现最多的单词是“台湾”,共出现了3次,其次是“旅游”和“大陆”,各出现了2次,这些关键词对于这篇新闻来说是非常重要的。

综上,通过Python jieba中文分词与词频统计的操作,可以帮助我们更好地理解中文文本的特点,并提取出文本中的重要信息,是进行自然语言处理和文本挖掘的不可或缺的工具之一。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python jieba 中文分词与词频统计的操作 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • python和Appium移动端多设备自动化测试框架实现

    Python和Appium移动端多设备自动化测试框架实现 移动端自动化测试是现在移动应用开发中不可或缺的一部分。Appium是一个流行的移动端自动化测试框架,可以实现多设备自动化测试。Python是一种流行的编程语言,在使用Appium进行自动化测试时,Python也是一种常用的开发语言。在这个指南中,我们将会详细讲解如何使用Python和Appium实现移…

    python 2023年6月5日
    00
  • Python中re模块的常用方法总结

    Python中的re模块是一个用于处理正则表达式的模块,它提供了一系列函数来操作字符串。在本文中,我们将总结Python中re模块的常用方法。 re.match() re.match()函数用于从字符串的开头匹配正则表达式。如果字符串的开头与正则表达式匹配,则返回一个匹配对象;否则返回None。 以下是一个示例: import re string = &qu…

    python 2023年5月14日
    00
  • 如何将图像转换为NumPy数组

    将图像转换为NumPy数组是图像处理和计算机视觉领域中常见的操作之一。下面我将为你提供完整的攻略来实现这一过程。 准备工作 在开始之前,您需要确保已经安装了Python和以下的Python包: NumPy OpenCV(可选) 如果您还没有安装这些软件包,可以通过以下方式来安装它们: pip install numpy pip install opencv-…

    python-answer 2023年3月25日
    00
  • Python3 Tkinter选择路径功能的实现方法

    下面我来详细讲解“Python3 Tkinter选择路径功能的实现方法”的完整攻略。 一、介绍 在开发桌面应用程序时,可能需要用户通过图形界面选择某个文件或路径。Python3自带的图形用户界面(GUI)库Tkinter提供了一些强大的控件,其中就包括了文件选择器(File Dialog)控件,用于选择文件或文件夹路径。本攻略主要讲解如何使用Tkinter选…

    python 2023年6月13日
    00
  • 利用Python操作excel表格的完美指南

    针对您提出的问题,我将为您提供一个完整的实例教程,讲解如何使用Python操作Excel表格的过程,教程中包含两个示例说明。 1. 准备工作 在开始之前,需要先安装openpyxl和xlrd两个库,这两个库都可以用来处理Excel文件。其中openpyxl适用于.xlsx类型的文件,而xlrd适用于.xls类型的文件。 pip install openpyx…

    python 2023年5月13日
    00
  • 在 Linux/Mac 下为Python函数添加超时时间的方法

    为Python函数添加超时时间的方法,可以使用Python标准库signal和threading,其中signal是Linux/Mac下的信号处理模块,threading是Python线程模块。以下是添加Python函数超时时间的两种方法: 方法一:使用signal模块 1.导入signal模块 import signal 2.设置signal信号处理函数t…

    python 2023年6月2日
    00
  • python实现邮件发送功能

    下面是“Python实现邮件发送功能”的完整攻略: 1. 准备工作 在使用Python发送邮件前,需要确保你已经具备以下基本条件: 已经注册一个邮箱账号,并且可以使用该邮箱账号登录 了解SMTP(Simple Mail Transfer Protocol)协议基本原理 安装Python环境 2. 准备邮件内容 在发送邮件前,我们需要准备好邮件内容,包括收件人…

    python 2023年5月20日
    00
  • Python如何输出警告信息

    下面是Python输出警告信息的完整攻略: 1. 使用 warnings 模块 warnings 是Python的一个标准模块,可以用来发出警告信息。该模块提供了进一步的控制,还可以选择将警告转换成异常,以便在代码中引发问题。 示例1: 输出简单警告信息 import warnings def my_function(x): if x < 0: war…

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