【NLP实战】NLTK工具包

“Natural Language Toolkit,自然语言处理工具包,在NLP领域中,最常使用的一个Python库。NLTK是一个开源的项目,包含:Python模块,数据集和教程,用于NLP的研究和开发。NLTK由Steven Bird和Edward Loper在宾夕法尼亚大学计算机和信息科学系开发。NLTK包括图形演示和示例数据。其提供的教程解释了工具包支持的语言处理任务背后的基本概念。

一、工具下载

1. 方法1

pip install nltk

直接pip即可,但是现在安装的只是nltk的框架,并不是全部的工具包,每当我们使用某个工具包时,都需要去单独的下载:https://github.com/nltk/nltk_data
注:punkt插件

NOTICE: 下载后塞到:C:\Users\XXXX\AppData\Roaming\nltk_data路径下,没有nltk_data就创建一个,然后将压缩包解压后塞进去就好。

注意:最后的路径要和官网上的路径一致,不是全都塞入nltk_data路径下,例如:stopwords,先先建立corpora文件夹,再将stopwords解压后放到corpora路径下,即:C:\Users\XXXX\AppData\Roaming\nltk_data\corpora\stopwords

2. 方法2

nltk.download()

在下图所示的弹窗中,在All Packages中选择需要的工具包,点击左下角的download,等待右下角的红色进度条结束后则安装完成。
在这里插入图片描述

二、NLTK应用

1. 基本应用

import nltk
from nltk.tokenize import word_tokenize
from nltk.text import Text
str1 = "Today's weather is good, very windy and sunny, we have no classes in the afternoon, we have to play basketball tomorrow."
tokens = word_tokenize(str1)
tokens

在这里插入图片描述
将原文转换为小写:👇

tokens = [word.lower() for word in tokens]
tokens[:5]

创建Text对象,方便后续操作:

t = Text(tokens)   # 实例化
t.count('good')  # OUT: 1
t.index('good')  # OUT: 4

统计出现的词汇的前8个最多的词:👇

t.plot(8)

在这里插入图片描述

2. 停用词

from nltk.corpus import stopwords
stopwords.readme().replace('\n',' ')

查看都支持哪些语言的停用词:【没有汉语,扎不扎心~😄】

stopwords.fileids()

查看english的停用词有哪些:

stopwords.raw('english').replace('\n',' ')   # 把\n替换一下看着舒服一些

文本预处理:(改小写,去掉重复元素)

str1 = "Today's weather is good, very windy and sunny, we have no classes in the afternoon, we have to play basketball tomorrow."
tokens = word_tokenize(str1)
test_words = [word.lower() for word in tokens]
test_words_set = set(test_words)
test_words_set

在这里插入图片描述
查看原文中的单词与停用词表的交集(注:记得指定使用哪种语言的停用词表)👇

test_words_set.intersection(set(stopwords.words('english')))
# OUT: {'and', 'have', 'in', 'is', 'no', 'the', 'to', 'very', 'we'}

过滤掉停用词 (遍历test_words_set中的每个单词,如果不在停用词表中,就留下来)👇

filter = [w for w in test_words_set if (w not in stopwords.words('english'))]
filter

在这里插入图片描述

3. 词性标注

(1)基本操作

先安装第三个工具包(averaged~~~)

from nltk import pos_tag
tags = pos_tag(tokens)
tags

在这里插入图片描述

(2)分块操作

from nltk.chunk import RegexpParser
sentence = [('the','DT'),('little','JJ'),('yellow','JJ'),('dog','NN'),('died','VBD')]
grammer = "MY_NP: {<DT>?<JJ>*<NN>}"
cp = nltk.RegexpParser(grammer)
result = cp.parse(sentence)
print(result)   
# OUT: (S (MY_NP the/DT little/JJ yellow/JJ dog/NN) died/VBD)

result.draw()

在这里插入图片描述

(3)命名实体识别

先安装maxenet_ne_chunke工具包

from nltk import ne_chunk
sentence = "Edison went to Tsinghua University today."
print(ne_chunk(pos_tag(word_tokenize(sentence))))  # 分词,词性,识别

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天使Di María

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值