您当前的位置:首页 > 电脑百科 > 人工智能

NLTK 是不是机器学习必备库?

时间:2023-05-14 12:19:16  来源:今日头条  作者:你的老师父

什么是NLTK?

自然语言工具包(Natural Language Toolkit,简称NLTK)是一个Python/ target=_blank class=infotextkey>Python库,用于处理和分析自然语言数据。NLTK包含了各种工具,包括文本处理、词性标注、分词、语法分析、语义分析、情感分析等,可以帮助我们更好地理解和分析自然语言数据。

NLTK的安装和使用

在使用NLTK之前,我们需要安装NLTK库和相关数据。我们可以使用以下命令安装NLTK:

pip install nltk

安装完成后,我们需要下载NLTK的数据。可以使用以下代码下载所有数据:

import nltk

nltk.download('all')

或者,我们也可以只下载需要的数据。例如,使用以下代码下载英文停用词(stopwords):

import nltk

nltk.download('stopwords')

在下载完毕后,我们就可以开始使用NLTK库了。在使用NLTK库时,我们需要先导入NLTK库和需要使用的模块。例如,使用以下代码导入NLTK库和词性标注模块:

import nltk
from nltk import pos_tag

常用的NLTK API

在NLTK库中,常用的API包括:

  1. 分词(Tokenization):将文本分成单个的词或标记。常用的函数包括nltk.tokenize.word_tokenize和nltk.tokenize.sent_tokenize。其中,word_tokenize函数将文本分成单个的词,sent_tokenize函数将文本分成句子。
import nltk

text = "This is a sample sentence. It contAIns multiple sentences."
words = nltk.tokenize.word_tokenize(text)
sentences = nltk.tokenize.sent_tokenize(text)

print(words)
print(sentences)

输出结果:

['This', 'is', 'a', 'sample', 'sentence', '.', 'It', 'contains', 'multiple', 'sentences', '.']
['This is a sample sentence.', 'It contains multiple sentences.']
  1. 词性标注(Part-of-Speech Tagging):将文本中的每个单词标注为其词性。常用的函数包括nltk.pos_tag。
import nltk

text = "This is a sample sentence."
words = nltk.tokenize.word_tokenize(text)
tags = nltk.pos_tag(words)

print(tags)

输出结果:

[('This', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('sample', 'JJ'), ('sentence', 'NN'), ('.', '.')]

在输出结果中,每个单词都被标注了其词性。

  1. 停用词(Stopwords):在自然语言处理中,停用词是指在处理文本时被忽略的常见词汇(例如“the”、“and”、“a”等)。常用的停用词列表可以通过nltk.corpus.stopwords.words函数获取。
import nltk

stopwords = nltk.corpus.stopwords.words('english')

print(stopwords)

输出结果:

['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']

在输出结果中,我们可以看到常用的英文停用词列表。

  1. 词干提取(Stemming):将单词转换为其基本形式,例如将“running”转换为“run”。常用的词干提取器包括Porter词干提取器和Snowball词干提取器。
import nltk

porter_stemmer = nltk.stem.PorterStemmer()
snowball_stemmer = nltk.stem.SnowballStemmer('english')

word = 'running'
porter_stem = porter_stemmer.stem(word)
snowball_stem = snowball_stemmer.stem(word)

print(porter_stem)
print(snowball_stem)

输出结果:

run
run

在上面的代码中,我们分别使用Porter词干提取器和Snowball词干提取器将单词“running”转换为其基本形式“run”。

  1. 词形还原(Lemmatization):将单词转换为其基本形式,并考虑其上下文和词性。例如,将“went”转换为“go”,将“was”转换为“be”。常用的词形还原器包括Wor.NET词形还原器。
import nltk

wn_lemmatizer = nltk.stem.WordNetLemmatizer()

word = 'went'
wn_lemma = wn_lemmatizer.lemmatize(word, 'v')

print(wn_lemma)

输出结果:

go

在上面的代码中,我们使用WordNet词形还原器将单词“went”转换为其基本形式“go”。

  1. 文本分类器(Text Classification):使用机器学习算法将文本分类到不同的类别中。NLTK库提供了多种文本分类器,包括朴素贝叶斯分类器、决策树分类器、最大熵分类器等。
import nltk

# 准备数据
documents = [
    ('This is the first document.', 'positive'),
    ('This is the second document.', 'positive'),
    ('This is the third document.', 'negative'),
    ('This is the fourth document.', 'negative'),
]

# 特征提取
all_words = set(word for doc in documents for word in nltk.tokenize.word_tokenize(doc[0]))
features = {word: (word in nltk.tokenize.word_tokenize(doc[0])) for doc in documents for word in all_words}

# 构造训练集和测试集
train_set = [(features, label) for (features, label) in documents[:2]]
test_set = [(features, label) for (features, label) in documents[2:]]

# 训练分类器
classifier = nltk.NaiveBayesClassifier.train(train_set)

# 预测分类
for features, label in test_set:
    print('{} -> {}'.format(features, classifier.classify(features)))

在上面的代码中,我们使用朴素贝叶斯分类器将文本分类为“positive”和“negative”两个类别。首先,我们准备了一些文档和它们的标签。然后,我们使用特征提取将每个单词转换为特征,并将它们与标签一起组成训练集和测试集。最后,我们使用朴素贝叶斯分类器训练模型,并使用测试集来评估模型的准确性。

  1. 语义分析(Semantic Analysis):用于理解文本的意义和语境。NLTK库提供了多种语义分析工具,包括词义消歧、命名实体识别、情感分析等。
import nltk

# 词义消歧
from nltk.wsd import lesk
s1 = 'I went to the bank to deposit some money.'
s2 = 'He sat on the bank of the river and watched the water flow.'
print(lesk(nltk.tokenize.word_tokenize(s1), 'bank'))
print(lesk(nltk.tokenize.word_tokenize(s2), 'bank'))

# 命名实体识别
from nltk import ne_chunk
text = "Barack Obama was born in Hawaii."
tags = nltk.pos_tag(nltk.tokenize.word_tokenize(text))
tree = ne_chunk(tags)
print(tree)

# 情感分析
from nltk.sentiment import SentimentIntensityAnalyzer
sia = SentimentIntensityAnalyzer()
sentiment = sia.polarity_scores('This is a positive sentence.')
print(sentiment)

在上面的代码中,我们分别使用了NLTK库中的词义消歧、命名实体识别和情感分析工具。在词义消歧中,我们使用lesk函数来判断“bank”在两个句子中的含义。在命名实体识别中,我们使用ne_chunk函数来识别文本中的命名实体。在情感分析中,我们使用
SentimentIntensityAnalyzer来分析文本的情感,并返回其积极性、消极性、中性等指标。

总结

以上是关于Python NLTK的详细介绍,包括NLTK的安装和使用、常用的API以及完整的代码示例。NLTK是一个功能强大的自然语言处理工具,可以帮助我们更好地处理和分析文本数据。通过学习NLTK,我们可以掌握自然语言处理的基本方法和技术,为文本数据分析和挖掘打下坚实的基础。



Tags:NLTK   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
自然语言处理NLTK库介绍
Natural Language Processing,简称NLP,涉及语言学、计算机科学和人工智能等。...【详细内容】
2024-01-02  Search: NLTK  点击:(41)  评论:(0)  加入收藏
NLTK 是不是机器学习必备库?
什么是NLTK?自然语言工具包(Natural Language Toolkit,简称NLTK)是一个Python库,用于处理和分析自然语言数据。NLTK包含了各种工具,包括文本处理、词性标注、分词、语法分析、语义...【详细内容】
2023-05-14  Search: NLTK  点击:(40)  评论:(0)  加入收藏
▌简易百科推荐
藏在AI背后的“吃电狂魔”
人工智能时代的能耗黑洞据估算,到2027年,人工智能行业每年将消耗85~134太瓦时的电力,相当于瑞典或荷兰一年的总用电量。马斯克判断,电力缺口最早可能会在2025年发生,“明年你会看...【详细内容】
2024-04-09    雪豹财经社  Tags:AI   点击:(1)  评论:(0)  加入收藏
OpenAI和谷歌再起纷争:AI的尽头是内容
日前,纽约时报的一篇报道称,人工智能公司 OpenAI为收集高质量训练数据而开发了一个语音转录模型Whisper。该模型主要用于转录 OpenAI 获取的超过 100 万小时的 YouTube 视频,也...【详细内容】
2024-04-09  小编也疯狂  新浪网  Tags:AI   点击:(1)  评论:(0)  加入收藏
AI产业的灰色暗面:OpenAI、谷歌、META如何搞训练语料
财联社4月7日讯(编辑 史正丞)种种迹象显示,目前站在全世界AI领域潮头浪尖的这些公司,早在几年前就已经陷入对训练语料的“绝望”追逐中——为此他们不惜修改政策条款...【详细内容】
2024-04-09    财联社  Tags:AI产业   点击:(1)  评论:(0)  加入收藏
和“数字人”交朋友,当心隐私被出卖......
在虚拟社交中如何在保护用户隐私和数据安全的同时提供高质量的社交体验?如何避免过度依赖虚拟社交找到虚拟与真实之间的平衡点?《中国消费者报》记者就此展开了调查APP里有个...【详细内容】
2024-04-09    中国消费者报  Tags:数字人   点击:(2)  评论:(0)  加入收藏
AI“复活”成产业链:成本可降至数百元
大模型应用落地,带火数字人(11.560, 0.29, 2.57%)赛道。文|《中国企业家》记者李艳艳 实习生 孙欣编辑|姚赟头图来源|《流浪地球2》电影画面截图清明节前,预估会有需求的庞立...【详细内容】
2024-04-09    中国企业家  Tags:AI“复活”   点击:(2)  评论:(0)  加入收藏
多方热议人工智能产业新机遇
编者按  从前沿科技展会到高层对话平台,从上海、重庆到博鳌,从线上到线下……一场场高规格、大规模的盛会中,人工智能正在成为各界热议的高频词。赋能千...【详细内容】
2024-04-08    中国家电网  Tags:人工智能   点击:(4)  评论:(0)  加入收藏
​人形机器人时代来了吗
日前,由中国人形机器人(11.080, -0.05, -0.45%)百人会主办的人形机器人大赛在北京经济技术开发区开赛。工作人员向参观者展示一款人形机器人。参观者与一款陪护型人形机器人...【详细内容】
2024-04-08    中国青年报  Tags:​人形机器人   点击:(5)  评论:(0)  加入收藏
AI重塑社交:腾讯与字节跳动的新赛场
文|新火种 一号编辑|美美最近,腾讯和字节跳动这两大互联网巨头几乎同步推出了各自的AI社交产品,尽管腾讯和字节跳动在前段时间刚刚“破冰”,但这一举措不仅意味着这两大巨头之...【详细内容】
2024-04-07    蓝鲸财经  Tags:AI   点击:(8)  评论:(0)  加入收藏
第一批用 Kimi 做内容的网红已经杀疯了
作者:王东东 文章来自:斗战圣佛小组技术信仰派 VS 市场信仰派 朱啸虎和月之暗面老板杨植麟在前几天有一场不算 battle 的 battle。battle 的争论点是:大模型有没有戏。技术派...【详细内容】
2024-04-04    斗战圣佛小组  Tags:Kimi   点击:(4)  评论:(0)  加入收藏
昆仑万维发布面向人工智能时代的六条人才宣言
过去的一年多,是人工智能取得非凡进步的一年。在这充满突破性技术飞跃和备受争议的一年里,我们见证了人工智能的快速发展和广泛的影响,人工智能已经迅速地融入了我们的生活,深刻...【详细内容】
2024-04-03    砍柴网  Tags:昆仑万维   点击:(7)  评论:(0)  加入收藏
相关文章
    无相关信息
站内最新
站内热门
站内头条