首页 > 其他分享 >使用 NLTK 库遇到的问题及解决方案

使用 NLTK 库遇到的问题及解决方案

时间:2024-11-22 18:14:57浏览次数:3  
标签:word 遇到 解决方案 pos NLTK tokens tokenize import nltk

目录

一.使用NLTK库遇到的问题    

二.解决办法之一

1. 参考提示

2. 下载资源

3. 验证一下成功与否

三.补下理论知识    

NLTK简介

2.基本功能

3.使用示例

3.1分词

3.2.词性标注

3.3.命名实体识别

3.4.频率分布

3.5.停用词过滤

3.6.词形还原

四. 个人闲话  


一.使用NLTK库遇到的问题 

        我在前文的使用中遇到了以下的问题,以此记录解决办法并学习相应知识。

# 下载停用词资源  
import nltknltk.download('stopwords')

      报错如下:

二.解决办法之一

1. 参考提示

       https://www.nltk.org/data.html

       这个链接很好,很喜欢这种报错了会提示你去哪里找答案的方式。里面写的很清楚,稍微动点脑袋的我找到了解决办法。我采用的是手动下载后加入到机器,由于我前面执行过安装nltk且成功安装,所以我一直在找nltk_data在我机器上的路径,耗费了不少时间,这里是个踩坑点。通过该链接中的一句话,让我反应过来了,当我没找到时我可以在以下目录自己创建一个。

2. 下载资源

       http://www.nltk.org/nltk_data/

图片

      先去下载需要的资源,解压后放到Searched in里面的任意一个路径下,比如我需要的是stopwords,然后设置的路径如下:

     /usr/share/nltk_data/corpora/stopwords

       由于需要使用到其他功能,所以我准备安装所有资源,该地址可下载所有资源:https://github.com/nltk/nltk_data 

        安装所有资源时,报了如下错,网上也有人有该问题,做下记录,

       原因是punkt_tab这个是压缩包,解压缩就好了。还会遇到类似的问题的举一反三。

3. 验证一下成功与否

三.补下理论知识    

  1. NLTK简介

       NLTK是Natural Language Toolkit缩写,是自然语言处理的一款流行的工具包,可以用来完成各种自然语言处理的任务,包括词汇处理,文本分类,分词,语言标准化等。

2.基本功能

       文本处理:处理文本的工具,如分词、词性标注、分块、词干提取等。

       语料库:包含了多个已标注的语料库,用于训练和评估模型。

       词汇资源:大量词汇资源,包括同义词词典、反义词词典等。

       语言学工具:各种语言学工具,如条件频率分布、语言模型等。

       机器学习:用于构建和训练自然语言处理的机器学习模型,如文本分类、情感分析、命名实体识别等。

3.使用示例

3.1分词

        分词是文本分析的第一步,它把文本段落分解为较小的实体(如单词或者句子),每一个实体叫做一个Token。NLTK能够实现句子切分和单词切分两种功能。

       句子切分:

from nltk.tokenize import sent_tokenize
text = "Hello Mr. Smith, how are you doing today? The weather is great, and city is awesome. The sky is pinkish-blue. You shouldn't eat cardboard."
tokenized_text = sent_tokenize(text)
print(tokenized_text)

图片

      单词切分:

from nltk.tokenize import word_tokenize
sent = "I am always happy this time"
token = word_tokenize(sent)
print(token)

图片

3.2.词性标注

      词性标注是将每个单词标注为对应的词性。NLTK提供了预训练的词性标注器。

from nltk.tag import pos_tag
from nltk.tokenize import word_tokenize
text = "I am a beautiful girl"
tokens = word_tokenize(text)
pos_tags = pos_tag(tokens)
print(pos_tags)

图片

‌      PRP是“人称代词”(Personal Pronoun)的缩写。是英语词性中的一种。

3.3.命名实体识别

      命名实体识别是识别文本中具有特定意义的实体,如人名、地名、组织名等。

​​​​​

from nltk.chunk import ne_chunk
from nltk.tag import pos_tag
from nltk.tokenize import word_tokenize
sentence = "Apple is a computer company based in Cupertino, California."
tokens = word_tokenize(sentence)
tags = pos_tag(tokens)
entities = ne_chunk(tags, binary=False)
for entity in entities:
    if hasattr(entity, 'label'):
        print(entity.label, ' '.join(word for word, tag in entity))

图片

3.4.频率分布

     频率分布可以统计文本中各单词出现次数。

from nltk import FreqDist
from nltk.tokenize import word_tokenize
text = "I am a beautiful girl and I enjoy eating delicious food"
tokens = word_tokenize(text)
fdist = FreqDist(tokens)
print(fdist.most_common(5))

图片

3.5.停用词过滤

      停用词是文本中的噪音单词,没有任何意义,如“is”、“am”、“are”等。NLTK的语料库中有一个停用词列表,可以从切词列表中把停用词去掉。

from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize

text = "I am a beautiful girl"
tokens = word_tokenize(text)
stop_words = set(stopwords.words('english'))
filtered_tokens = [w for w in tokens if not w.lower() in stop_words]
print(filtered_tokens)

图片

3.6.词形还原

      词形还原是将单词还原为其基本形式,如将“running”还原为“run”。

from nltk.stem import WordNetLemmatizer
wnl = WordNetLemmatizer()
words = ['cars', 'men', 'running', 'ate', 'saddest', 'fancier']
pos_tags = ['n', 'n', 'v', 'v', 'a', 'a']
for word, pos in zip(words, pos_tags):
    print(word, '--', pos, '-->', wnl.lemmatize(word, pos))

图片

      参考:https://www.nltk.org/api/nltk.html#

四. 个人闲话  

       既然遇到问题,那么就想办法解决问题,顺便开阔自己的眼界以及补充基础理论知识,所以有问题是好事情。虽然它会消耗一定的时间,但是在查找资料和分析资料,寻找解决办法的过程中能接触到不少自己缺失的知识面,这也是帮助快速成长的一种良好的途径。

      本文仅为个人学习使用所写。

标签:word,遇到,解决方案,pos,NLTK,tokens,tokenize,import,nltk
From: https://blog.csdn.net/sx52013/article/details/143876931

相关文章

  • 企业内部CATIA许可调配的难点与解决方案
    在工程设计领域,CATIA软件已成为众多企业的首选工具,其强大的功能和广泛的应用为产品创新提供了有力支持。然而,在企业内部进行CATIA许可调配时,往往面临着诸多难点,影响了软件资源的高效利用和团队协作的顺畅进行。本文将深入探讨这些难点,并为您揭秘相应的解决方案,助力企业实现CATIA许......
  • android开发中,button设置shape后,shape的颜色不生效的问题解决方案
    检查AndroidManifest.xml中的主题的属性<applicationandroid:name=".BaseApplication"android:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:networkSecurityConf......
  • 【C++】深入理解 C++ 中的继承进阶:多继承、菱形继承及其解决方案
    个人主页:起名字真南的CSDN博客个人专栏:【数据结构初阶】......
  • Kafka 数据倾斜:原因、影响与解决方案
    Kafka:分布式消息系统的核心原理与安装部署-CSDN博客自定义Kafka脚本kf-use.sh的解析与功能与应用示例-CSDN博客Kafka生产者全面解析:从基础原理到高级实践-CSDN博客Kafka生产者优化与数据处理经验-CSDN博客Kafka工作流程解析:从Broker工作原理、节点的服役、退役、......
  • 你有遇到过字体侵权的事吗?如何解决?
    前端开发中字体侵权通常发生在未经授权使用商业字体的情况下。这包括:直接使用未授权的字体文件:例如,下载了付费字体文件并在网站上直接使用,没有获得相应的许可。使用在线字体服务但未遵守其使用条款:一些在线字体服务提供免费使用,但可能限制商用或需要署名,如果没有遵守这些......
  • C语言 蓝桥杯某例题解决方案(查找完数)
    蓝桥杯原题: 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。这个题没有很大的难点,与我们上一个解决的问题“质因数分解”不同,它不需要判断因数是否是质数,因此我们的工作量会小很多。现在我们的想法还是类似,首先找到......
  • 企业内部CATIA许可调配的难点与解决方案
    在工程设计领域,CATIA软件已成为众多企业的首选工具,其强大的功能和广泛的应用为产品创新提供了有力支持。然而,在企业内部进行CATIA许可调配时,往往面临着诸多难点,影响了软件资源的高效利用和团队协作的顺畅进行。本文将深入探讨这些难点,并为您揭秘相应的解决方案,助力企业实现CATIA许......
  • 体重电子秤解决方案SIC8833智能设计开发
    蓝牙体重电子秤与普通的电子秤主要功能是没有多大区别,他们的区别在于蓝牙体重电子秤是一个可以通过APP连接将数据传送到云端并保存的秤。主要效果是将个人身体数据记录并分析,帮助你在日常生活中随时可查看数据并根据数据合理调节自己的生活健康方式蓝牙体重电子秤方案还......
  • 车载以太网TSN设计及测试解决方案
    概述    智能汽车电子电气架构全面向中央+区域式发展,车载通信新技术是新架构技术栈的重要组成部分。车载以太网时间敏感网络TSN技术凭借其低延时、高可靠的特点获得多家OEM的认可。依赖多年技术研发及数十个项目的实践积累,经纬恒润可为客户提供全面、专业且本土化的TSN......
  • 汽车软件DevOps解决方案
        汽车软件DevOps解决方案是专为现代汽车行业设计的一套集成化需求、开发、测试、部署、OTA与监控,旨在加速软件开发流程,提高软件质量和安全性,同时确保整个生命周期的高效性和灵活性。以下是经纬恒润汽车软件DevOps解决方案的关键组成部分和优势。 集成的开发环境......