NLTK和jieba

NLTK与jieba概述

自然语言处理(NLP)领域是计算机科学领域与人工智能领域中的一个重要方向,主要研究方向是实现人与计算机之间用自然语言进行有效通信的各种理论和方法。

在自然语言处理领域中,文本类型的数据占据着很大的市场,由于其自身具有半结构的特点,且自然语言的分类繁多,所以针对不同的语言Python分别提供了相应的库来处理,最常见的是处理英文的NLTK库,它自带的语料库都是英文的,由于中文要比英文的结构复杂得多,不适合用NLTK进行处理,所以提供了jieba库来更好地处理中文。

NLTK全称为Natural Language Toolkit,它是一套基于Python的自然语言处理工具包,可以方便地完成自然语言处理的任务,包括分词、词性标注、命名实体识别(NER)及句法分析等。

NLTK是一个免费的、开源的、社区驱动的项目,它为超过50个语料库和词汇资源(如WordNet)提供了易于使用的接口,以及一套用于分类、标记化、词干化、解析和语义推理的文本处理库。接下来,通过一张表来列举NLTK中用于语言处理任务的一些常用模块,具体如表1所示。

表1 NLTK中的常用模块

语言处理任务nltk模块功能描述
获取和处理语料库nltk.corpus语料库和词典的标准化接口
字符串处理nltk.tokenize,nltk.stem分词,句子分解提取主干
搭配发现nltk.collocations用于识别搭配工具,查找单词之间的关联关系
词性标识符nltk.tag包含用于词性标注的类和接口
分类nltk.classify,nltk.clusternltk.classify用类别标签标记的接口;nltk.cluster包含了许多聚类算法如贝叶斯、EM、k-means
分块nltk.chunk在不受限制的文本识别非重叠语言组的类和接口
解析nltk.parse对图表、概率等解析的接口
语义解释nltk.sem,nltk.inference一阶逻辑,模型检验
指标评测nltk.metrics精度,召回率,协议系数
概率与估计nltk.probability计算频率分布、平滑概率分布的接口
应用nltk.app,nltk.chat图形化的关键词排序,分析器,WordNet查看器,聊天机器人
语言学领域的工作nltk.toolbox处理SIL工具箱格式的数据

GitHub上有一段描述Jieba的句子:

"Jieba" (Chinese for "to stutter") Chinese text segmentation: built to be the best Python Chinese word segmentation module.

翻译:“Jieba”中文分词:最好的 Python 中文分词组件。

由此可见,jieba最适合做中文分词,这离不开它拥有的一些特点:

(1) 支持三种分词模式:

  • 精确模式:试图将句子最精确地切开,适合文本分析。

  • 全模式:把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义。

  • 搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。

(2) 支持繁体分词。

(3) 支持自定义词典。

(4) MIT 授权协议。

jieba库中主要的功能包括分词、添加自定义词典、关键词提取、词性标注、并行分词等等。

安装NLTK和下载语料库

要想使用NLTK库处理自然语言,前提是需要先安装。这里,我们既可以在终端使用pip命令直接安装,也可以在Jupyter Notebook中直接使用。以前者为例,打开终端键入如下命令安装NLTK库:

>>> pip install -U nltk

安装完以后,在终端中启动Python,然后键入如下命令测试是否安装成功:

>>> import nltk

按下回车键,如果程序中没有提示任何错误的信息,则表示成功安装,否则表示安装失败。值得一提的是,Anaconda中默认已经安装了NLTK库(但是没有安装语料库),可以用import导入使用,无需再另行安装。

NLTK库中附带了许多语料库(指经科学取样和加工的大规模电子文本库)、玩具语法、训练模型等,完整的信息发布在http://nltk.org/nltk_data/网上。如果希望在计算机上安装单独的数据包,或者是下载全部的数据包,则需要在Jupyter Notebook(或者管理员账户)中执行以下操作:

In [1]: import nltknltk.download()  # 打开NLTK下载器
Out[1]: True

此时,打开了一个NLTK Downloader窗口,如图1所示。

img

图1 打开NLTK Downloader窗口

图1的窗口中包含以下选项:

(1) Collections:集合。

(2) Corpora:语料库。

(3) Models:模型。

(4) All Packages:所有包。

如果希望集中安装所有的选项,则需要单击【File】->【Change Download Directory】选择更新下载目录,这时图1中 “Download Directory”对应的文本框处于可编辑状态,将其设置为C:\nltk_data(Windows),然后单击【File】->【Download】开始下载,直至所有选项安装完成,这个过程需要等待的时间稍微有点长。

注意:

如果没有将数据包安装到上述位置,则需要设置NLTK_DATA环境变量以指定数据的位置。

如果只是想单独安装某个库或模型等,比如brown语料库,则可以单击图1中的【Corpora】选项,从列表中选中“brown”,然后单击左下方的【Download】按钮进行下载。

下载完以后,可以测试语料库是否下载成功,可以按照如下方式进行检测(假设下载了布朗语料库):

In [2]: from nltk.corpus import brown    # 导入brown语料库brown.words()             # 查看brown库中所有的单词
Out[2]: ['The', 'Fulton', 'County', 'Grand', 'Jury', 'said', ...]

上述示例中输出了brown语料库中所有的单词,表明下载成功。

还可以通过categories()函数查看brown中包含的类别,示例代码如下。

In [3]: brown.categories()
Out[3]: ['adventure', 'belles_lettres', 'editorial', 'fiction',
​      'government', 'hobbies', 'humor', 'learned', 'lore','mystery', 'news', 'religion', 'reviews',
​      'romance', 'science_fiction']

此外,还可以查看brown语料库中包含的单词或句子的总个数,示例代码如下。

In [4]: 'brown中一共有{}个句子'.format(len(brown.sents()))
Out[4]: 'brown中一共有57340个句子'
In [5]: 'brown中一共有{}个单词'.format(len(brown.words()))
Out[5]: 'brown中一共有1161192个单词'

jieba库的安装

如果希望对中文进行分词操作,则需要借助jieba分词工具。安装jieba库的方式比较简单,可以直接使用如下pip命令进行安装:

pip install jieba

安装完成出现如图1所示的提示信息。

img

图1 提示jieba安装完成

为了验证jieba库是否成功安装,我们可以在Jupyter Notebook中通过 import jieba 来引用,如果没有提示错误信息,则表示安装成功。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/71752.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux查看定时任务与设置定时任务

一、查看定时任务 使用 cron 查看当前用户的定时任务: bash crontab -l # 查看当前用户的cron任务 查看系统级定时任务: bash 系统级任务通常存放在以下位置: cat /etc/crontab # 系统主配置文件 ls /etc/cron.d/ # 系统级任务片段 ls /…

DeepSeek-R1本地化部署(Mac)

一、下载 Ollama 本地化部署需要用到 Ollama,它能支持很多大模型。官方网站:https://ollama.com/ 点击 Download 即可,支持macOS,Linux 和 Windows;我下载的是 mac 版本,要求macOS 11 Big Sur or later,Ol…

支持向量简要理解

决策方程符合感知机区分理论,我们基于线性代数来看这满足子空间理论,可以获取得到超平面。 支持向量机的目标是寻找最与超平面最近的点的最大距离,而距离计算如上,符合数学上计算点到线(面)的距离公式。 …

使用OpenCV和MediaPipe库——实现人体姿态检测

目录 准备工作如何在Windows系统中安装OpenCV和MediaPipe库? 安装Python 安装OpenCV 安装MediaPipe 验证安装 代码逻辑 整体代码 效果展示 准备工作如何在Windows系统中安装OpenCV和MediaPipe库? 安装Python 可以通过命令行运行python --versio…

5G学习笔记之BWP

我们只会经历一种人生,我们选择的人生。 参考:《5G NR标准》、《5G无线系统指南:如微见著,赋能数字化时代》 目录 1. 概述2. BWP频域位置3. 初始与专用BWP4. 默认BWP5. 切换BWP 1. 概述 在LTE的设计中,默认所有终端均能处理最大2…

创建Electron35 + vue3 + electron-builder项目,有很过坑,记录过程

环境: node v20.18.0 npm 11.1.0 用到的所有依赖: "dependencies": {"core-js": "^3.8.3","vue": "^3.2.13","vue-router": "^4.5.0"},"devDependencies": {"ba…

Linux下安装elasticsearch(Elasticsearch 7.17.23)

Elasticsearch 是一个分布式的搜索和分析引擎,能够以近乎实时的速度存储、搜索和分析大量数据。它被广泛应用于日志分析、全文搜索、应用程序监控等场景。 本文将带你一步步在 Linux 系统上安装 Elasticsearch 7.17.23 版本,并完成基本的配置&#xff0…

NVIDIA显卡驱动、CUDA、cuDNN 和 TensorRT 版本匹配指南

一、驱动安装 1、下载驱动 前往NVIDIA驱动下载页,输入显卡型号和操作系统类型,选择≥目标CUDA版本要求的驱动版本‌。 2、安装驱动‌ ‌Windows‌:双击安装包按向导操作。‌Linux‌:建议使用apt或官方.run文件安装‌。 3、验证…

plt和cv2有不同的图像表示方式和颜色通道顺序

在处理图像时,matplotlib.pyplot (简称 plt) 和 OpenCV (简称 cv2) 有不同的图像表示方式和颜色通道顺序。了解这些区别对于正确处理和显示图像非常重要。 1. 图像形状和颜色通道顺序 matplotlib.pyplot (plt) 形状:plt 通常使用 (height, width, cha…

基于PyTorch的深度学习5——神经网络工具箱

可以学习如下内容: • 介绍神经网络核心组件。 • 如何构建一个神经网络。 • 详细介绍如何构建一个神经网络。 • 如何使用nn模块中Module及functional。 • 如何选择优化器。 • 动态修改学习率参数。 5.1 核心组件 神经网络核心组件不多,把这些…

模拟调制技术详解

内容摘要 本文系统讲解模拟调制技术原理及Matlab实现,涵盖幅度调制的四种主要类型:双边带抑制载波调幅(DSB-SC)、含离散大载波调幅(AM)、单边带调幅(SSB)和残留边带调幅(…

aws(学习笔记第三十一课) aws cdk深入学习(batch-arm64-instance-type)

aws(学习笔记第三十一课) aws cdk深入学习 学习内容: 深入练习aws cdk下部署batch-arm64-instance-type 1. 深入练习aws cdk下部署batch-arm64-instance-type 代码链接 代码链接 代码链接 -> batch-arm64-instance-type之前代码学习 之前学习代码链接 -> aw…

读书报告」网络安全防御实战--蓝军武器库

一眨眼,20天过去了,刷完了这本书「网络安全防御实战--蓝军武器库」,回味无穷,整理概览如下,可共同交流读书心得。在阅读本书的过程中,我深刻感受到网络安全防御是一个综合性、复杂性极高的领域。蓝军需要掌…

生成任务,大模型

一个生成项目 输入:文字描述(但是给的数据集是一串数字,id,ct描述,医生描述) 输出:诊断报告 一、数据处理 import pandas as pd #处理表格数据pre_train_file "data/train.csv"tr…

Spring Boot API 项目中 HAProxy 与 Nginx 的选择与实践

在开发 Spring Boot 构建的 RESTful API 项目时,负载均衡和反向代理是提升性能与可用性的关键环节。HAProxy 和 Nginx 作为两种流行的工具,经常被用于流量分发,但它们各有侧重。究竟哪一个更适合你的 Spring Boot API 项目?本文将…

Java常用集合与映射的线程安全问题深度解析

Java常用集合与映射的线程安全问题深度解析 一、线程安全基础认知 在并发编程环境下,当多个线程同时操作同一集合对象时,若未采取同步措施,可能导致以下典型问题: 数据竞争:多个线程同时修改数据导致结果不可预测状…

DeepLabv3+改进6:在主干网络中添加SegNext_Attention|助力涨点

🔥【DeepLabv3+改进专栏!探索语义分割新高度】 🌟 你是否在为图像分割的精度与效率发愁? 📢 本专栏重磅推出: ✅ 独家改进策略:融合注意力机制、轻量化设计与多尺度优化 ✅ 即插即用模块:ASPP+升级、解码器 PS:订阅专栏提供完整代码 目录 论文简介 步骤一 步骤二…

使用 Elastic-Agent 或 Beats 将 Journald 中的 syslog 和 auth 日志导入 Elastic Stack

作者:来自 Elastic TiagoQueiroz 我们在 Elastic 一直努力将更多 Linux 发行版添加到我们的支持矩阵中,现在 Elastic-Agent 和 Beats 已正式支持 Debian 12! 本文演示了我们正在开发的功能,以支持使用 Journald 存储系统和身份验…

3.9[A]csd

在传统CPU中心架构中,中央处理器通过内存访问外部存储器,而数据必须经过网络接口卡才能到达外部存储器。这种架构存在集中式计算、DRAM带宽和容量挑战、大量数据移动(服务器内和网络)以及固定计算导致工作负载容量增长等问题。 而…

ESP32S3读取数字麦克风INMP441的音频数据

ESP32S3 与 INMP441 麦克风模块的集成通常涉及使用 I2S 接口进行数字音频数据的传输。INMP441 是一款高性能的数字麦克风,它通过 I2S 接口输出音频数据。在 Arduino 环境中,ESP32S3 的开发通常使用 ESP-IDF(Espressif IoT Development Framew…