自然语言处理库——NLTK

article/2025/8/28 12:47:43

        NLTK(www.nltk.org)是在处理预料库、分类文本、分析语言结构等多项操作中最长遇到的包。其收集的大量公开数据集、模型上提供了全面、易用的接口,涵盖了分词、词性标注(Part-Of-Speech tag, POS-tag)、命名实体识别(Named Entity Recognition, NER)、句法分析(Syntactic Parse)等各项 NLP 领域的功能。

目录

 1. 分词

(1)句子切分(断句)

(2)单词切分(分词)

2. 处理切词

(1)移除标点符号

(2)移除停用词

3. 词汇规范化(Lexicon Normalization)

(1)词形还原(lemmatization)

(2)词干提取(stem)

4. 词性标注

5. 获取近义词


NLTK模块及功能介绍:


 1. 分词

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

(1)句子切分(断句)

       句子切分是指把段落切分成句子:

from nltk.tokenize import sent_tokenizetext="""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)'''
结果:['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"]
'''

(2)单词切分(分词)

    单词切分是把句子切分成单词

import nltksent = "I am almost dead this time"token = nltk.word_tokenize(sent)结果:token['I','am','almost','dead','this','time']

2. 处理切词

对切词的处理,需要移除标点符号和移除停用词和词汇规范化。

(1)移除标点符号

       对每个切词调用该函数,移除字符串中的标点符号,string.punctuation包含了所有的标点符号,从切词中把这些标点符号替换为空格。

# 方式一
import strings = 'abc.'
s = s.translate(str.maketrans(string.punctuation, " "*len(string.punctuation)))  # abc# 方式二
english_punctuations = [',', '.', ':', ';', '?', '(', ')', '[', ']', '&', '!', '*', '@', '#', '$', '%']
text_list = [word for word in text_list if word not in english_punctuations]

(2)移除停用词

       停用词(stopword)是文本中的噪音单词,没有任何意义,常用的英语停用词,例如:is, am, are, this, a, an, the。NLTK的语料库中有一个停用词,用户必须从切词列表中把停用词去掉。

nltk.download('stopwords')
# Downloading package stopwords to C:\Users\Administrator\AppData\Roaming\nltk_data...Unzipping corpora\stopwords.zip.from nltk.corpus import stopwords
stop_words = stopwords.words("english")text="""Hello Mr. Smith, how are you doing today? The weather is great, and city is awesome."""word_tokens = nltk.tokenize.word_tokenize(text.strip())
filtered_word = [w for w in word_tokens if not w in stop_words]'''
word_tokens:['Hello', 'Mr.', 'Smith', ',', 'how', 'are', 'you', 'doing', 'today', '?','The', 'weather', 'is', 'great', ',', 'and', 'city', 'is', 'awesome', '.']
filtered_word:['Hello', 'Mr.', 'Smith', ',', 'today', '?', 'The', 'weather', 'great', ',', 'city', 'awesome', '.']
'''

3. 词汇规范化(Lexicon Normalization)

词汇规范化是指把词的各种派生形式转换为词根,在NLTK中存在两种抽取词干的方法porter和wordnet。

(1)词形还原(lemmatization)

     利用上下文语境和词性来确定相关单词的变化形式,根据词性来获取相关的词根,也叫lemma,结果是真实的单词

(2)词干提取(stem)

     从单词中删除词缀并返回词干,可能不是真正的单词

from nltk.stem.wordnet import WordNetLemmatizer  # from nltk.stem import WordNetLemmatizer
lem = WordNetLemmatizer()  # 词形还原from nltk.stem.porter import PorterStemmer   # from nltk.stem import PorterStemmer
stem = PorterStemmer()   # 词干提取word = "flying"
print("Lemmatized Word:",lem.lemmatize(word,"v"))
print("Stemmed Word:",stem.stem(word))'''
Lemmatized Word: fly
Stemmed Word: fli
'''

4. 词性标注

      词性(POS)标记的主要目标是识别给定单词的语法组,POS标记查找句子内的关系,并为该单词分配相应的标签。

sent = "Albert Einstein was born in Ulm, Germany in 1879."
tokens = nltk.word_tokenize(sent)tags = nltk.pos_tag(tokens)'''
[('Albert', 'NNP'), ('Einstein', 'NNP'), ('was', 'VBD'), ('born', 'VBN'), 
('in', 'IN'), ('Ulm', 'NNP'), (',', ','), ('Germany', 'NNP'), ('in', 'IN'), ('1879', 'CD'), ('.', '.')]
'''

5. 获取近义词

    查看一个单词的同义词集用synsets(); 它有一个参数pos,可以指定查找的词性。WordNet接口是面向语义的英语词典,类似于传统字典。它是NLTK语料库的一部分。

import nltk
nltk.download('wordnet')  # Downloading package wordnet to C:\Users\Administrator\AppData\Roaming\nltk_data...Unzipping corpora\wordnet.zip.from nltk.corpus import wordnetword = wordnet.synsets('spectacular')
print(word)
# [Synset('spectacular.n.01'), Synset('dramatic.s.02'), Synset('spectacular.s.02'), Synset('outstanding.s.02')]print(word[0].definition())
print(word[1].definition())
print(word[2].definition())
print(word[3].definition())'''
a lavishly produced performance
sensational in appearance or thrilling in effect
characteristic of spectacles or drama
having a quality that thrusts itself into attention
'''

 


http://chatgpt.dhexx.cn/article/sW1Fm7tn.shtml

相关文章

NLTK 基础知识总结

什么是 NLTK NLTK,全称Natural Language Toolkit,自然语言处理工具包,是NLP研究领域常用的一个Python库,由宾夕法尼亚大学的Steven Bird和Edward Loper在Python的基础上开发的一个模块,至今已有超过十万行的代码。这是…

自然语言处理NLTK(一):NLTK和语料库

对于文本的研究,对于语言主要是中文,英文的研究反而会少了很多,主要还是因为应用的问题,而现在对于海外的产品来说,英文的语言处理,会越来越显得重要,其实对英文语言处理资料会比中文的来得多&a…

NLTK库安装教程(详细版)

NLTK,Natural Language Toolkit(Python自然语言工具包) 安装步骤 1.打开cmd命令,输入: pip install nltk 运行安装 2.安装完成后,搜索IDLE打开python shell,输入 import nltk 引用该工具包&…

NLTK使用方法总结

目录 1. NLTK安装与功能描述 2. NLTK词频统计(Frequency) 3. NLTK去除停用词(stopwords) 4. NLTK分句和分词(tokenize) 5. NLTK词干提取 (Stemming) 6. NLTK词形还原&#xff0…

行人重识别reid数据集

有需要的人,请在评论区留下你的邮箱。 本人,双非学校小硕。研究方向行人重识别。收集了一些常用数据集。 Market-1501-v15.09.15 dukemtmc-reid 顺便附上一个根据相机id划分数据集的代码 import os import shutil import os.path as osp import numpy…

转化类操作符:map、mapTo和pluck

map介绍: import {Observable} from rxjs/Observable; import rxjs/add/observable/of; import rxjs/add/operator/map;// 第一种 const source$ Observable.of(3, 1, 4); const mapFunc function(value, index) { return ${value} ${this.separator} ${index}; …

VulnHub - Pluck靶机

VulnHub - Pluck靶机 arp-scan -l 探测靶机地址 nmap -sV -Pn -A x.x.x.230 dirb http://x.x.x.230 扫描目录 发现index.php 目录下存在文件包含漏洞 直接修改page参数,经几次修改,发现可读本地文件../../../etc/passwd 从上图看到passwd文件最下方有个b…

Pluck Cms文件上传结合命令执行复现

本漏洞影响 Pluck CMS Pluck CMS <4.7.10 部分解释来自零组文库 安装模版文件包含导致任意命令执行 很多CMS都会在安装模版的时候getshell&#xff0c;那么这里笔者也发现了类似的漏洞。 在阅读自己下载下来得源码之后看到 目录下有.htaccess文件&#xff0c;直接把php设置…

春秋云境:CVE-2022-26965(后台RCE)

目录 一、题目 二、 利用cms主题构造木马 一、题目 介绍&#xff1a; Pluck-CMS-Pluck-4.7.16 后台RCE 进入题目&#xff1a; cms页面 点击admin进行登录&#xff1a; 弱口令admin登录&#xff1a; 成功登录进去&#xff1a; 国产化一下&#xff1a; 选项---选择主题 点击…

春秋云境系列靶场记录(合集)-不再更新

春秋云境系列靶场记录 春秋云境系列靶场记录合集&#xff0c;不更新了哈~~~ 2023/1/17日记 感谢各位朋友的关注&#xff0c;2022年11月到12月&#xff0c;利用空闲时间做了春秋云镜的靶场&#xff0c;因为穷&#xff0c;所以也只能做免费的&#xff08;当然还有个原因就是我太…

春秋云境:CVE-2022-26965

春秋云境&#xff1a;CVE-2022-26965 文章合集&#xff1a;春秋云境系列靶场记录&#xff08;合集&#xff09; Pluck-CMS-Pluck-4.7.16 后台RCE&#xff1a;CVE-2022-26965 漏洞介绍 Pluck-CMS-Pluck-4.7.16 后台RCE 解题步骤 过弱口令登录&#xff1a;admin 登录之后按照…

什么是pickle?

什么是pickle? 学习《深度学习》鱼书的源码时&#xff0c;刚看到加载mnist数据集所用到的mnist.pkl文件&#xff0c;理所当然的以为pkg这样的package安装包文件。奇怪安装包为何被包含在代码目录中&#xff0c;结果发现 init_mnist函数还要加载它。 我们来看看这个神秘的mnis…

Laravel SQL查询中first, pluck与lists方法的使用

看到说明文档上面介绍&#xff0c;难免有些迷惑&#xff0c;还是亲自动手试试吧。 sql测试数据表 -- ---------------------------- -- Table structure for users -- ---------------------------- DROP TABLE IF EXISTS users; CREATE TABLE users (id int(10) unsigned NOT…

git chrry pickup

git chrry pickup 目录概述需求&#xff1a; 设计思路实现思路分析1.java2.转移分支3.git merge4.cherry pick. 切换到 master 分支Cherry pick 操作参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xf…

春秋云镜wp day1

春秋云镜wp day1 (qq.com) 建议关注公众号 websec.space&#xff0c;以后文章来csdn备份一份 今天看到之前买了内网渗透那本书&#xff0c;今天看到靶场上线了&#xff0c;打一天玩一下&#xff0c;总体cve的洞很好刷&#xff0c;比打CTF轻松多了。 CVE-2022-32991 首先登陆…

计算机网络谢希仁第七版 第四章 答案

计算机网络谢希仁第七版 第四章 网络层 计算机网络 第七版 谢希仁 答案 1.网络层向上提供的服务有哪两种?是比较其优缺点。网络层向运输层提供 “面向连接”虚电路(Virtual Circuit)服务或“无连接”数据报服务前者预约了双方通信所需的一切网络资源。优点是能提供服务质…

《计算机网络》谢希仁第七版知识点总结

1 概述1.1 网络的网络1.2 互联网的组成1.2.1 边缘部分1.2.2 核心部分 1.3 计算机网络的类别1.4 计算机网络的性能指标&#xff08;考点&#xff09;1.4.1 速率1.4.2 时延 1.5 计算机网络的体系结构1.5.1 协议与划分层次 1.6 各协议的体系结构1.6.1 各层功能概述1.6.2 主机H1向H…

计算机网络谢希仁第七版课后习题答案(第九章)

1.无线局域网都由哪几部分组成&#xff1f;无线局域网中的固定基础设施对网络的性能有何影响&#xff1f;接入点 AP 是否就是无线局域网中的固定具体设施&#xff1f; 无线局域网由无线网卡、无线接入点(AP)、计算机和有关设备组成&#xff0c;采用单元结构&#xff0c;将整个系…

计算机网络第四章课后答案(第七版谢希仁著)

计算机网络第四章课后答案简介&#xff1a; 平时老师布置的作业自己做的答案&#xff0c;仅是做参考&#xff0c;希望有帮助 还可以把全部的答案分享给大家&#xff1a;>完整答案< 第四章课后作业答案&#xff1a; 第一页&#xff1a; 第二页&#xff1a; 第三页&#…

计算机网络第七版 第四章课后答案

4-55.如图所示&#xff0c;网络145.13.0.0/16划分为四个子网N1,N2,N3和N4。这四个子网与路由器R连接的接口分别是m0&#xff0c;m1&#xff0c;m2和m3。路由器R的第五个接口m4连接到互联网。 有题目可以看出四个网络地址的地址掩码均为/18,故可以得出子网掩码均为255.255.192.0…