【NLP】NLTK工具集使用

本文涉及的产品
NLP 自学习平台,3个模型定制额度 1个月
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: NLTK提供了多种语料库(Corpora)和词典(Lexicon)资源,如WordNet等,以及常用工具集,如分句、标记解析(Tokenization)、词干提取(Stemming)、词性标注(POS Taggin)和句法分析(Syntactic Parsing)等,用于英文文本数据处理。关于nltk的下载还是很多坑的,如果直接import nltk和nltk.download()下载失败,可参考:

一、Natural Language Toolkit

NLTK提供了多种语料库(Corpora)和词典(Lexicon)资源,如WordNet等,以及常用工具集,如分句、标记解析(Tokenization)、词干提取(Stemming)、词性标注(POS Taggin)和句法分析(Syntactic Parsing)等,用于英文文本数据处理。

关于nltk的下载还是很多坑的,如果直接import nltk和nltk.download()下载失败,可参考:

(1)nltk安装失败:由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。

(2)直接下载github的nltk:https://github.com/nltk/nltk_data。我一开始就是一直报错For more information see: https://www.nltk.org/data.html. Attempted to load tokenizers/punkt/english.pickle,然而nltk_data确实已经解压了还放在正确的路径中了还不行,尝试了几个办法后报错OSError: No such file or directory: 'D:\\anaconda1\\envs\\tensorflow\\lib\\nltk_data\\tokenizers\\punkt\\PY3\\english.pickle'发现木有PY3文件,加了个PY3文件夹后还是不行,最后直接去github上重新下载一个nltk的punkt包直接解压就行了。。。

(3)如果还是不行,就绝对路径吧sent_detector = nltk.data.load('D:\local\Anaconda3\Lib\site-packages//nltk-data//tokenizers/punkt/english.pickle'),狗头滑稽。

注意:

nltk包放在的位置,可以通过如下代码查看:

import nltk
nltk.data.path

二、常用语料库和词典

常用语料库(文本数据集),如图书、电影评论和聊天记录等,分为未标注语料库和人工标注语料库。

NLP任务中可以将一些停用词(如冠词a、the,介词of、to等)删除,提升计算速度,它们含义也不太重要。英文的常用停用词:

from nltk.corpus import stopwords
print(stopwords.words('english'))
['i', 'me', 'my', 'myself', 'we', 'our', 'ours', 'ourselves', 'you', 'your', 
'yours', 'yourself', 'yourselves', 'he', 'him', 'his', 'himself', 'she', 'her', 
'hers', 'herself', 'it', 'its', 'itself', 'they', 'them', 'their', 'theirs', 
'themselves', 'what', 'which', 'who', 'whom', 'this', 'that', 'these', 'those', 'am', 'is', 'are', 'was', 'were', 'be', 'been', 'being', 'have', 'has', 'had', 'having', 'do', 'does', 'did', 'doing', 'a', 'an', 'the', 'and', 'but', 'if', 'or', 'because', 'as', 'until', 'while', 'of', 'at', 'by', 'for', 'with', 'about', 'against', 'between', 'into', 'through', 'during', 'before', 'after', 'above', 'below', 'to', 'from', 'up', 'down', 'in', 'out', 'on', 'off', 'over', 'under', 'again', 'further', 'then', 'once', 'here', 'there', 'when', 'where', 'why', 'how', 'all', 'any', 'both', 'each', 'few', 'more', 'most', 'other', 'some', 'such', 'no', 'nor', 'not', 'only', 'own', 'same', 'so', 'than', 'too', 'very', 's', 't', 'can', 'will', 'just', 'don', 'should', 'now']

三、常用NLP工具集

3.1 分句

分句:将较长的文档切分为若干句子。

一个句子结尾一般有明显标志(如句号、问好、感叹号等)。

也有特殊情况,在英文中,句号不仅作为句尾标志,还可以作为单词的一部分,如Mr.

# 分句
from nltk.corpus import gutenberg
from nltk.tokenize import sent_tokenize 
text = gutenberg.raw("austen-emma.txt")
sentences = sent_tokenize(text) # 对Emma小说全文分句
print(sentences[100]) # 显示其中一个句子

image.png

其中一句的分句的结果为:

Mr. Knightley loves to find fault with me, you know--
in a joke--it is all a joke.

也可以自己写的句子试试,然后进行分句:

from nltk.tokenize import sent_tokenize
mytext = "Hello Adam, how are you? I hope everything is going well. Today is a good day, see you dude."
print(sent_tokenize(mytext))

分句的结果为:

['Hello Adam, how are you?', 'I hope everything is going well.', 'Today is a good day, see you dude.']

3.2 标记解析

NLP最基本的输入单元:标记Token,它可以是一个词或标点符号。

任务如,将句子结尾标点符号和前面的单词进行拆分。

可以使用nltk.tokenize.word_tokenize

这里接着上面的一个句子sentences[100]进行标记解析:

# 标记解析
from nltk.tokenize import word_tokenize 
print(word_tokenize(sentences[100]))

得到的该句子的每个token标记:

['Mr.', 'Knightley', 'loves', 'to', 'find', 'fault', 'with', 'me', ',', 'you', 'know', '--', 'in', 'a', 'joke', '--',

3.3 词性标注

根据词语上下文,确定具体词性。

They sat by the fireThey fire a gun的fire意思不同,前者是名词,后者是动词。

# 词性标记
from nltk import pos_tag 
# 对句子标记解析后再进行词性标注
In [3]:pos_tag(word_tokenize("They sat by the fire."))
Out[3]: 
[('They', 'PRP'),
 ('sat', 'VBP'),
 ('by', 'IN'),
 ('the', 'DT'),
 ('fire', 'NN'),
 ('.', '.')]
In [4]:pos_tag(word_tokenize("They fire a gun."))
Out[4]: [('They', 'PRP'), 
('fire', 'VBP'), 
('a', 'DT'), 
('gun', 'NN'), 
('.', '.')]

从上面词性标注的结果看出,前者句子的fire被标注为名词(NN),后者被标注为动词(VBP),如果不知道词性单词的含义,可以help查询:

nltk.help.upenn_tagset('NN')
相关文章
|
自然语言处理 索引
【NLP】LTP中文工具集使用
一、中文分词 中文词语之间不像英语一样,没有空格进行分割,NLP一般以词为最小处理单位,需要对中文分词处理。
404 0
【NLP】LTP中文工具集使用
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
AI技术在自然语言处理中的应用与挑战
【10月更文挑战第3天】本文将探讨AI技术在自然语言处理(NLP)领域的应用及其面临的挑战。我们将分析NLP的基本原理,介绍AI技术如何推动NLP的发展,并讨论当前的挑战和未来的趋势。通过本文,读者将了解AI技术在NLP中的重要性,以及如何利用这些技术解决实际问题。
|
3月前
|
机器学习/深度学习 数据采集 自然语言处理
深度学习在自然语言处理中的应用与挑战
本文探讨了深度学习技术在自然语言处理(NLP)领域的应用,包括机器翻译、情感分析和文本生成等方面。同时,讨论了数据质量、模型复杂性和伦理问题等挑战,并提出了未来的研究方向和解决方案。通过综合分析,本文旨在为NLP领域的研究人员和从业者提供有价值的参考。
|
2月前
|
自然语言处理 算法 Python
自然语言处理(NLP)在文本分析中的应用:从「被动收集」到「主动分析」
【10月更文挑战第9天】自然语言处理(NLP)在文本分析中的应用:从「被动收集」到「主动分析」
50 4
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
探索AI在自然语言处理中的创新应用
【10月更文挑战第7天】本文将深入探讨人工智能在自然语言处理领域的最新进展,揭示AI技术如何改变我们与机器的互动方式,并展示通过实际代码示例实现的具体应用。
39 1
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
AI技术在自然语言处理中的应用
【9月更文挑战第17天】本文主要介绍了AI技术在自然语言处理(NLP)领域的应用,包括文本分类、情感分析、机器翻译和语音识别等方面。通过实例展示了AI技术如何帮助解决NLP中的挑战性问题,并讨论了未来发展趋势。
|
16天前
|
机器学习/深度学习 自然语言处理 监控
探索深度学习在自然语言处理中的应用与挑战
本文深入分析了深度学习技术在自然语言处理(NLP)领域的应用,并探讨了当前面临的主要挑战。通过案例研究,展示了如何利用神经网络模型解决文本分类、情感分析、机器翻译等任务。同时,文章也指出了数据稀疏性、模型泛化能力以及计算资源消耗等问题,并对未来的发展趋势进行了展望。
|
20天前
|
人工智能 自然语言处理 API
探索AI在自然语言处理中的应用
【10月更文挑战第34天】本文将深入探讨人工智能(AI)在自然语言处理(NLP)领域的应用,包括语音识别、机器翻译和情感分析等方面。我们将通过代码示例展示如何使用Python和相关库进行文本处理和分析,并讨论AI在NLP中的优势和挑战。
|
26天前
|
机器学习/深度学习 自然语言处理 知识图谱
GraphRAG在自然语言处理中的应用:从问答系统到文本生成
【10月更文挑战第28天】作为一名自然语言处理(NLP)和图神经网络(GNN)的研究者,我一直在探索如何将GraphRAG(Graph Retrieval-Augmented Generation)模型应用于各种NLP任务。GraphRAG结合了图检索和序列生成技术,能够有效地处理复杂的语言理解和生成任务。本文将从个人角度出发,探讨GraphRAG在构建问答系统、文本摘要、情感分析和自动文本生成等任务中的具体方法和案例研究。
52 5
|
6天前
|
机器学习/深度学习 自然语言处理 语音技术
探索深度学习中的Transformer模型及其在自然语言处理中的应用
探索深度学习中的Transformer模型及其在自然语言处理中的应用
21 0