首页 > 其他分享 >深入理解NTLK库基本使用方法

深入理解NTLK库基本使用方法

时间:2023-04-19 20:02:38浏览次数:42  
标签:text NTLK NLTK 理解 深入 tokenize 文本 nltk 标注

第三章(2):深入理解NTLK库基本使用方法<br><br>

本节主要介绍了NLTK库的基本使用方法,其中对NLTK的安装与配置进行了介绍。随后,对文本处理中常用的分词、句子分割和词性标注这三个任务进行了详细讲解。<br><br>

如果感觉有用,不妨给博主来个一键三连,白天科研,晚上肝文,实属不易~ ~ 拜托了!<br> 在这里插入图片描述

(目录)


1. NTLK库基本使用介绍

NLTK(Natural Language Toolkit)是一个广泛使用的Python库,是由Steven Bird和Edward Loper在宾夕法尼亚大学计算机和信息科学系开发。该库提供了丰富的自然语言处理工具和语料库,可以用于文本分类、词性标注、实体识别、情感分析等任务。

在本节,我们将介绍NLTK的基本用法,并通过实例展示如何使用NLTK进行文本处理和分析。希望通过本篇文章,读者对于如何使用NLTK进行自然语言处理有一个基本的了解。

1.1 NTLK安装与配置

安装NLTK库的方法与安装其他Python库的方法相同,需要在终端中执行以下命令:

pip install nltk

这将会下载并安装最新版本的NLTK库。如果需要特定版本的NLTK,可以使用以下命令:

pip install nltk==x.x.x

其中,x.x.x是所需版本的具体版本号。例如,要安装NLTK 3.4.5版本,可以使用以下命令:

pip install nltk==3.4.5

安装完成后,我们还需要下载一些语料库和模型,以便使用NLTK进行自然语言处理任务。我们可以使用nltk.download()函数下载这些数据集和模型。

import nltk  
  
import nltk  
nltk.download()

但是不出意外会出现如下错误:

在这里插入图片描述

我们可以参考如下教程进行解决:成功解决NLTK包的安装错误_安静到无声的博客-CSDN博客

是否安装成功,可以采用如下示例进行验证:

from nltk.corpus import stopwords  
print(stopwords.words('english'))

实验结果:

在这里插入图片描述

1.2 分词

1.2.1 什么叫做分词

在NLP中,分词是指将一段文本拆分成更小的单元,也就是所谓的“标记”(tokens)。这些标记可以是单词、短语、符号或任何其他你希望在文本处理过程中处理的部分。常见的分词方法包括空格分隔符、标点符号、正则表达式、最大匹配算法等等。

例如,我们有一个包含以下文本的字符串:

text = "I like to go hiking on the weekends."  
  
print(text)

实验结果:

I like to go hiking on the weekends.

如果使用空格作为分隔符来进行分词,得到以下结果:

["I", "like", "to", "go", "hiking", "on", "the", "weekends."]

分词对于许多自然语言处理任务都非常重要,因为它对文本的结构和意义的表示有很大影响。例如,在文本分类和信息检索中,分词可以使我们更好地了解文档的内容和主题,以便更准确地进行分类或搜索。

1.2.2 使用NLTK进行分词

NLTK提供了word_tokenize()函数来帮助我们进行基于单词的分词。以下是一个例子:

import nltk  
  
from nltk.tokenize import word_tokenize  
  
text = "I like to go hiking on the weekends."  
tokens = word_tokenize(text)  
  
print(tokens)

实验结果:

['I', 'like', 'to', 'go', 'hiking', 'on', 'the', 'weekends', '.']

word_tokenize()函数将文本解析为一系列单独的单词,在这个例子中,每个单词被作为列表中的一个元素返回。此外,该函数还添加了一个句点标记,表示句子的结尾。

在许多情况下,仅仅对输入文本调用word_tokenize()是不够的。例如,如果我们有一段内容包含逗号、句点、短语或其他标点符号,并希望保留它们,那么我们需要使用不同的分词器来处理它们。如下所示,nltk.tokenize()库提供了多种分词器。

1.2.3 不同类型的分词器

  1. word_tokenize()函数

该分词器会将输入文本解析为一系列单独的单词,它将根据空格和标点符号来确定单词的边界。因此,在某些情况下,word_tokenize()可能无法很好地处理特定的文本输入,示例如下:

from nltk.tokenize import word_tokenize  
  
text = "I'm eating a slice of cake, I'll be done soon."  
tokens = word_tokenize(text)  
  
print(tokens)

实验结果:

['I', "'m", 'eating', 'a', 'slice', 'of', 'cake', ',', 'I', "'ll", 'be', 'done', 'soon', '.']

在这个例子中,word_tokenize()cake,解析成两个标记,因为逗号也被视为一个分隔符,而I'm被分割成立两个标记,并没有把分开。

  1. TweetTokenizer()函数

此分词器是一种专门针对推文和其他社交媒体文本的分词器。与word_tokenize()不同,它将保留诸如表情符号、@提到的人、#话题等内容。

例如:

from nltk.tokenize import TweetTokenizer  
  
text = "I'm eating a slice of cake, I'll be done soon. 

标签:text,NTLK,NLTK,理解,深入,tokenize,文本,nltk,标注
From: https://blog.51cto.com/lihuanyu/6207267

相关文章

  • 云计算基本概念的介绍,理解的误区有哪些?
    或许会以为企业中的基层IT员工和负责人应该很了解云计算的优势和劣势。然而他们对一些基本概念的错误认识实在是令人不安。以下就是非常普遍存在的四大误区。只要使用了公有云,就会有安全风险。这是个很让我感觉不安的误区,我也在博客中多次探讨过这一问题。事实上,在你使用公有云服务......
  • 动态拨号代理池的应用场景与实现原理解析
    随着互联网的发展和应用场景的不断扩大,数据采集和爬虫技术也日渐成为一项重要的任务。然而,很多网站为了保护自身权益,设置了严格的反爬虫策略,让数据采集变得更加困难。在这种情况下,动态拨号代理池成为了解决方案之一。动态拨号代理池的应用场景动态拨号代理池主要在以下几方......
  • pinia 初步理解
    前提写法是用的vue3,只是一些简单的写法stores文件中的counter.jsimport{defineStore}from'pinia'exportconstuseCounterStore=defineStore('counter',{state:()=>({count:0}),getters:{doubleCount:(state)=>state.count*......
  • 个人理解指针的定义
    指针就类似于光标,你可以随时移动到你想移动到的位置,在相对底层来将,就是将光标移动到了某一个内存地址,那么为什么&就可以取到内存地址还需要指针呢,&仅仅只可以取到当前的内存地址,那我们用指针的目的是什么,说白了指针是一个我们随时想移动到某个位置的东西,但是&他不知道你此时此刻这......
  • 深度学习--梯度下降再理解+线性回归
    深度学习--梯度下降再理解+线性回归梯度下降梯度下降的对象是模型的参数,即权重w,偏置项b,通过寻找合适的参数使模型的loss值最小Loss函数是关于输入,输出,权重,偏置项的函数,即:loss=(y-(wx+b))^2。loss值最小,y与wx+b相似。个人思考:如果训练的数据量越大,识别的准确率是越大还是越......
  • Mysql-InnoDB深入学习
    MySql——InnoDB学习笔记转载请声明!!!切勿剽窃他人成果。本文如有错误欢迎指正,感激不尽。参考资料见最后一章所有例子均是本人亲自上机后,将代码或结果复制回来的。请勿盗图一、Mysql体系结构和存储引擎1.1MySQL体系结构我们先明白两个概念,数据库和实例。数据库是物理上的操......
  • Vue进阶(六十二):理解$nextTick()
    一、实例介绍有一个div,默认用了v-if隐藏,点击按钮之后,改变v-if的值让他显示出来,并且取到div中的值:<divid=app><divid="div"v-if="showDiv">我是显示文本</div><button@click="showAndGetText">获取内容</button></div><script>va......
  • C语言 正确理解二维数组首地址
    在一维数组中,数组名表示的是数组第一个元素的地址inta[10],*p=a;那么二维数组呢inta[3][4],a表示的是元素a[0][0]的地址吗?不是!二维数组就是一维数组,二维数组a[3][4]就是有三个元素a[0]、a[1]、a[2]的一维数组,所以数组a的第一个元素不是a[0][0],而是a[0],所以数组名......
  • 12.深入理解 Http 协议
    深入理解Http协议一、Http协议入门1.1什么是http协议http协议:对浏览器客户端和服务器端之间数据传输的格式规范二、查看http协议的工具1)使用火狐的firebug插件(右键->firebug->网络)2)使用谷歌的“审查元素”2.1http协议内容请求(浏览器-》服务器)......
  • 10.深入理解Servlet
    深入理解Servlet课程目标动态资源与静态资源区别1.servlet三及相关接口简介2.servet执行过程3.servlet路径映射4.servlet生命周期(重点)--理解(重点)5.Servlet自动加载6.Servlet线程安全7.Servlet相关接口详解8.ServletContext对象--知识点一、Web项......