NLTK学习之一:简单文本分析

聊聊Python在自然语言处理方面的应用,包括NLTK、Spacy、Gensim等库的介绍和使用 Python成为了自然语言处理(NLP)领域最受欢迎的编程语言之一。它提供了许多强大的库和工具,使得开发人员可以轻松地分析文本数据、构建机器学习模型以及实现其他 NLP 任务。在本文中,我们将介绍一些常见的Python NLP 库,包括NLTK、Spacy和Gensim。 阅读详情

nltk的全称是natural language toolkit,是一套基于python的自然语言处理工具集。

1 NLTK的安装

nltk的安装十分便捷,只需要pip就可以。

pip install nltk

在nltk中集成了语料与模型等的包管理器,通过在python解释器中执行

>>> import nltk
>>> nltk.download()

便会弹出下面的包管理界面,在管理器中可以下载语料,预训练的模型等。
nltk_download

2 对文本进行简单的分析

2.1 Text类介绍

nltk.text.Text()类用于对文本进行初级的统计与分析,它接受一个词的列表作为参数。Text类提供了下列方法。

方法作用
Text(words)对象构造
concordance(word, width=79, lines=25)显示word出现的上下文
common_contexts(words)显示words出现的相同模式
similar(word)显示word的相似词
collocations(num=20, window_size=2)显示最常见的二词搭配
count(word)word出现的词数
dispersion_plot(words)绘制words中文档中出现的位置图
vocab()返回文章去重的词典

nltk.text.TextCollection类是Text的集合,提供下列方法

方法作用
nltk.text.TextCollection([text1,text2,])对象构造
idf(term)计算词term在语料库中的逆文档频率,即log总文章数文中出现term的文章数
tf(term,text)统计term在text中的词频
tf_idf(term,text)计算term在句子中的tf_idf,即tf*idf

2.2 示例

下面我们对青春爱情小说《被遗忘的时光》做下简单的分析。首先加载文本:

import ntlk
import jieba

raw=open('forgotten_times.txt').read()
text=nltk.text.Text(jieba.lcut(raw))

对于言情小说,先看下风花雪月这样的词出现的情况

print text.concordance(u'风花雪月')

输出如下:

>>> Displaying 2 of 2 matches:
彼时 校园 民谣 不复 大热 了 , 但 处身 校园 , 喜欢 吟唱 风花雪月 的 感性 青年 还是 喜欢 借此 抒怀 。 邵伊敏 平常 听 英语歌 较
的 眼睛 看 的 是 自己 , 迷恋 的 却 多半 只是 少女 心中 的 风花雪月 , 而 迷恋 过后 不可避免 不是 失望 就是 幻灭 。 他 将 目光

再看下作者对于某些同义词的使用习惯

print text.common_contexts([u'一起',u'一同'])

输出如下:

>>> 爷爷奶奶_生活 在_时

下面看下文章常用的二词搭配

text.collocations()

输出

出入境 管理处; 沃尔沃 XC90; 慢吞吞 爬起来; 没交过 男朋友; 邵伊敏 回头一看; 戴维凡 哭笑不得; 没想到 邵伊敏; 邵伊敏 第二天; 邵伊敏 没想到

查看关心的词在文中出现的位置

text.dispersion_plot([u'校园',u'大学'])

输出如下图:
nltk_disp_plot

3 对文档用词进行分布统计

3.1 FreqDist类介绍

这个类主要记录了每个词出现的次数,根据统计数据生成表格,或绘图。其结构很简单,用一个有序词典进行实现。所以dict类型的方法在此类也是适用的。如keys()等。

方法作用
B()返回词典的长度
plot(title,cumulative=False)绘制频率分布图,若cumu为True,则是累积频率分布图
tabulate()生成频率分布的表格形式
most_common()返回出现次数最频繁的词与频度
hapaxes()返回只出现过一次的词

3.2 示例

对歌曲《The day you went away》的歌词进行分析。

text = open('corpus/the_day_you_went_away.txt').read()
fdist = nltk.FreqDist(nltk.word_tokenize(text))
fdist.plot(30,cumulative=True)

代码第二行调用了word_tokenize()函数,此函数的作用是基于空格/标点等对文本进行分词,返回分词后的列表。如果要处理中文,需要三方的分词器先处理,之后才能使用nltk进行处理。运行输出分布图如下:
nltk_word_dist

4 nltk自带的语料库

在nltk.corpus包下,提供了几类标注好的语料库。见下表:

语料库说明
gutenberg一个有若干万部的小说语料库,多是古典作品
webtext收集的网络广告等内容
nps_chat有上万条聊天消息语料库,即时聊天消息为主
brown一个百万词级的英语语料库,按文体进行分类
reuters路透社语料库,上万篇新闻方档,约有1百万字,分90个主题,并分为训练集和测试集两组
inaugural演讲语料库,几十个文本,都是总统演说

更多语料库,可以用nltk.download()在下载管理器中查看corpus。

4.1语料库处理

方法明说明
fileids()返回语料库中文件名列表
fileids[categories]返回指定类别的文件名列表
raw(fid=[c1,c2])返回指定文件名的文本字符串
raw(catergories=[])返回指定分类的原始文本
sents(fid=[c1,c2])返回指定文件名的语句列表
sents(catergories=[c1,c2])按分类返回语句列表
words(filename)返回指定文件名的单词列表
words(catogories=[])返回指定分类的单词列表

5 文本预处理

NLP在获取语料之后,通常要进行文本预处理。英文的预处理包括:分词,去停词,提取词干等步骤。中文的分词相对于英文更复杂一些,也需要去停词。但没有提取词干的需要。
对于英文去停词的支持,在corpus下包含了一个stopword的停词库。
对于提取词词干,提供了Porter和Lancaster两个stemer。另个还提供了一个WordNetLemmatizer做词形归并。Stem通常基于语法规则使用正则表达式来实现,处理的范围广,但过于死板。而Lemmatizer实现采用基于词典的方式来解决,因而更慢一些,处理的范围和词典的大小有关。

porter = nltk.PorterStemmer()
porter.stem('lying') #'lie'

lema=nltk.WordNetLemmatizer()
lema.lemmatize('women')   #'woman'
Python自然语言处理 nltk.text模块下Text对象的各个函数(入门函数)用法分享 此文章是个人在学习nltk.text模块的过程中的一个总结,难免有瑕疵的地方,欢迎大家参与讨论,感谢你的善良。 1.collocation_list ####这一段为模板代码下面的函数就省略了 import nltk.corpus from nltk.text import Text mytext = Text(nltk.corpus.gutenberg.words('melville-moby_... 阅读详情

相关推荐

机器学习:利用NLTK进行简单文本分析

利用机器学习算法进行文本分类利用机器学习算法进行文本分类 一监督式分类建立在训练语料基础上的分类 特征提取器和朴素贝叶斯分类器 过拟合当特征过多 错误分析 二实例文本分类和词性标注 文本分类 词性标注决策树分类器 三更近一步的连续分类或贪婪序列分类在朴素贝叶斯和决策树之后 四评估 五三种分类器的总结 六后记 关于分类文本,有三个问题 1. 怎么识别出文本中用于明显分类的特征 2. 怎么构建自动分

GodBMW的博客 3255

Python自然语言处理:NLTK入门指南

自然语言处理(Natural Language Processing,NLP)是指计算机处理人类语言的领域。它是一门多学科交叉的学科,将计算机科学、人工智能、语言学等诸多学科的理论和方法融合在一起,将人类语言转化为计算机所能理解的形式,实现对人类语言的自动处理、理解和生成。NLP可以应用到很多方面,比如语音识别、机器翻译、情感分析、智能客服等等。NLTK是Natural Language Toolkit的缩写,是Python自然语言处理领域中最流行的一款工具包。

BXA 1万+

Python中文词频统计实战:从jieba到NLTK的四种方法详解

词频统计是自然语言处理的基础任务,通过统计文本中词语的出现频率来揭示文本特征。其核心原理在于将文本切分为有意义的词汇单元后进行计数,这一过程对于后续的文本挖掘、情感分析和主题建模至关重要。在技术实现上,中文分词是首要挑战,因为中文缺乏天然分隔符,需要借助分词工具如jieba进行准确切分。Python生态提供了多种高效工具组合,例如使用collections.Counter可以大幅提升计数效率,而pandas则便于进行结构化分析和可视化。这些方法广泛应用于舆情分析、用户评论挖掘和文献摘要处理等场景,帮助从业者

weixin_34314962的博客 444

自然语言处理库——NLTK

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

满腹的小不甘 7925

文本分析-预处理:Python文本分析工具NLTK

文本分析-预处理:Python文本分析工具NLTK NLP领域中最常用的一个Python库

KG 2896

用NLTK进行文本分析

句子放进去就是字符串;一、英文分词:利用空格;中文分词:启发式分词,用长度优先的方式,最长的在字典中出现的词;机器学习分词法:HMM、CRF结巴分词的GitHub主页:https://github.com/fxsjy/jieba基于python的中文分词的实现及应用:http://www.cnblogs.com/appler/archive/2012/02/02/2335834.html对pyth...

siyuchen的博客 1458

【深度学习】NLTK入门与实战:文本分析与自然语言处理

NLTK是一个强大的Python库,用于处理人类语言数据。它提供了易于使用的接口,以支持多种任务,如分词、词性标注、命名实体识别、情感分析和文本分类等。通过NLTK,我们可以更好地分析和理解自然语言数据,从而为数据科学家、研究人员和开发人员提供有价值的见解。本文简要介绍了NLTK的基本概念和功能,并通过一系列代码实例展示了如何使用NLTK进行文本分析和自然语言处理。希望通过本文,您能够更好地理解和学习NLTK,并在实际应用中取得成功。

qq_33578950的博客 3515

Python与自然语言处理库NLTK

5.2 基于统计的命名实体识别器 基于统计的命名实体识别器是根据已标注的语料库学习实体和实体类型之间的映射关系,并将其应用于新的文本中。4.3 基于统计的词性标注器 基于统计的词性标注器是根据已标注的语料库学习单词和词性之间的映射关系,并将其应用于新的文本中。5.1 基于规则的命名实体识别器 基于规则的命名实体识别器是根据预定义的规则将文本中的实体识别出来的识别器。4.2 基于规则的词性标注器 基于规则的词性标注器是根据预定义的规则将单词标注为其所属的词性的标注器。也可以只下载需要使用的数据集和模型。

吃不胖. 757

NLTK学习笔记(六)机器学习:利用NLTK进行简单文本分析

版权声明:更多原创文章请访问: http://yuanxin.me/ https://blog.youkuaiyun.com/AsuraDong/article/details/73302999 ​​​​​​​关于分类文本,有三个问题  1. 怎么识别出文本中用于明显分类的特征  2. 怎么构建自动分类文本的模型  3. 相关的语言知识 按照这个思路,进行了艰苦学习(手动捂脸)。 一、监督式分类:建立...

qq_34504481的博客 993

文本分析与情感分析:NLTK库的探索之旅

本章节介绍了文本分析中的一些基本概念和技术,包括二元组和三元组的使用,文本预处理的重要步骤,以及如何利用NLTK库进行文本的情感分析。通过实例展示了如何处理文本数据,进行频率分析,以及如何构建训练集和测试集来训练情感分析模型。本章内容涵盖了从基础的文本处理到更高级的文本挖掘技术,为读者提供了进入文本分析世界的一扇窗口。

weixin_42443533的博客 463

cartographer基于3d地图的纯定位模式

关于纯定位模式呢,本人试过2d和3d,怎么说呢,有条件的话,建议直接上3d,因为博主当初在做定位时针对室内和室外都尝试过,2d只在室内环境下效果会很棒,但是在室外就呵呵啦!所以这里直接讲解3d室外定位(建图篇请自己查看我之前的博客:[3d建图](https://blog.youkuaiyun.com/qq_40216084/article/details/105531983) 看了我之前的博客大概知道配置文件和源文件路径了,我这里就不把路径写出来了,挺麻烦的。直接讲怎么做把,有不懂的留言,看到了我一定知无不言。 **首

qq_40216084的博客 5552

Python文本分析:朴素贝叶斯分类NLTK(学习笔记)

import nltk import string import random sw=set(nltk.corpus.stopwords.words('english'))#加载停用词 punctuation=set(string.punctuation)#加载标点符号 '''提取单词长度作为特征''' def word_features(word): return {'len':le...

Monica 753

cartographer错误终结者 ordered_multi_queue.cc:155 Queue waiting for data

错误描述 错误提示的感应器数据可能是: Queue waiting for data:(0, points2) Queue waiting for data:(0, odom) 说明在提供给cartographter的传感器数据出现了问题,没有被成功解析。 原因分析 小编是使用自己编写的odom话题发布时,cartographer爆出了该错误。 于是设想传感器数据相关的tf或lua配置或数据本身存在错误。 于是逐个排查,最终发现了错误原因。 排查可能原因:tf错误 小编之前已处理过tf与lua配置的问题 参

人工智能机器人 4157

【Python 文本分析】零基础也能轻松掌握的学习路线与参考资料

它包括了很多经典的文本分析算法,如词频统计、词性标注、命名实体识别、情感分析等。TextBlob 是一个基于 NLTK 的简单易用的文本处理工具,它能够进行分句、分词、词性标注、情感分析等。NLTK 基于 Python 实现,并且涉及了很多基本的自然语言处理原理,包括分词、词性标注、命名实体识别、关键词提取、情感分析等。TextBlob 基于 NLTK 实现,所以它通过了解分词、词性标注、情感分析等基本原理,来更加深入了解 TextBlob 的使用方法。(2)NLTK 下载。

weixin_50409347的博客 499

Labview 机器视觉(4)之 图像处理进阶 - 动态ROI与批量保存

本文深入探讨了LabVIEW机器视觉中动态ROI与批量保存两大进阶技术。动态ROI通过模式匹配或粒子分析实现检测区域的自动追踪,解决了产品位置变化带来的挑战。同时,文章详细介绍了如何设计高效的文件命名规则与异步保存机制,以实现海量图像数据的批量保存与管理,从而构建稳定、高效的工业自动化检测系统。

weixin_29234423的博客 219

机械工程师如何用Codex实现CAD自动化:从重复劳动到智能设计

在机械设计领域,CAD二次开发长期面临学习门槛高、维护成本大的难题。随着AI编程助手如Codex的出现,通过自然语言生成可执行代码,工程师无需精通编程即可实现图纸批量处理、BOM表自动生成、参数化建模等任务。这种技术将重复性操作自动化,显著提升设计效率,让工程师聚焦于核心创新。应用场景涵盖批量修改图纸属性、跨软件数据流转、自动打印等。本文分享机械工程师利用Codex落地自动化的实战经验与避坑指南。

weixin_32296621的博客 357

(1 NLTK学习笔记

NLTK学习笔记 (1 NLTK学习笔记 1 布朗语料库 导入: Import nltk From nltk.corpus import brown 调用语料库中所有的类别: Print(brown.categories()) 在所有的类别中挑选出某几种类别: Genres=[‘’] Whwords=[‘’] 使用for循环来进行迭代并优化代码行数: for I in range(0,len...

chujiu0的博客 225

从 QQ 聊天到 AI Agent:AstrBot + NapCat 接入 DeepSeek

<think>我们根据要求,根据提供的内容生成≤150字的文章摘要。内容是关于在Windows上使用Docker部署AstrBot+NaPCat,配置DeepSeek,实现QQ AI机器人。摘要需简洁概括主要步骤和结论。注意字数。</think>在Windows 11上通过Docker一键部署AstrBot与NapCat,实现QQ机器人。NapCat扫码登录QQ,AstrBot接入并配置DeepSeek API,完成AI对话。后续可扩展人格、插件及MCP工具,并通过cpolar提供公网管理入口,打造可扩展的

天道酬勤 1万+

Python文本分析工具库大比拼:NLTK vs. spaCy vs. Gensim

本文深入比较了Python三大文本分析工具库NLTK、spaCy和Gensim的核心功能与适用场景。通过实例代码展示了各库在文本预处理、实体识别和主题建模等任务中的表现差异,帮助开发者根据项目需求选择最佳工具。NLTK适合教学研究,spaCy专精工业级应用,Gensim则擅长大规模文本数据分析。

weixin_29099217的博客 703

【知识分享】单端到混合S参数转换指南

信号完整性(SI)工程师几乎总是必须使用S参数,因为许多的高速接口和行业标准都正在转向串行链路架构,并使用基于S参数测量的频域限制指标,了解其工作过程将会很有意义。

一只豌豆象的博客 1578

环境配置与基础教程:2026大厂标准:使用 DVC (Data Version Control) 实现 YOLO 数据集版本控制全链路管理

本文介绍了使用DVC 3.0对YOLO数据集进行全链路版本控制的方法。主要内容包括: DVC 3.0的核心增强:内容块级缓存去重、并行云传输、AI智能体元数据跟踪等新特性,可显著提升YOLO数据集管理效率。 环境配置:详细说明DVC 3.0的安装步骤、项目初始化方法以及远程存储配置方案(支持S3、GCS、Azure等多种存储后端)。 目录结构规范:提供符合大厂MLOps标准的项目目录结构设计。 实战操作: 原始数据版本化 多格式标注数据版本控制 版本切换方法 优势说明:DVC通过哈希指针机制管理大型数据集,

ZXSXJ的博客 148

自然语言处理:使用NLTK库进行文本分析

Python的NLTK(Natural Language Toolkit)库为语言处理提供了强大的工具和资源。本学习笔记将通过一个实际的例子,介绍如何使用NLTK进行基本的文本分析任务。NLTK作为一个功能强大的语言处理工具,为我们提供了探索语言的丰富资源和方法。随着技术的深入,我们期待解锁更多自然语言处理的秘密,开启语言和计算机之间更深层次的交流。

HUSTGO的博客 1554

【Scratch考级100图】图01-等级考试scratch绘 画正方形

一、案例介绍 小朋友们应该在数学课或者平时生活中有了解过正方形,正方形在我们生活中到处可见,那我们如果通过Scratch软件来绘制一个正方形呢,我们一起来学习一下吧,在舞台正中央绘制一个边长为200的正方形,要求: 1、围绕舞台中心绘制正多边形,均匀分布在四个象限中 2、正方形边长为200个单位,线条粗细、颜色自定 3、利用画笔绘制正方形,不能有多余的线条 二、案例演示 【Scratch案例演示】Scratch图1-画正方形 三、案例分析 当我们点击小绿旗启动程序后,舞台上会出现一个画

青少年编程学习指导 2669

nltk停用词资源下载:简化文本分析,提升NLP效率

nltk停用词资源下载:简化文本分析,提升NLP效率 【下载地址】nltk停用词资源下载 该项目提供nltk库的停用词列表资源,为自然语言处理(NLP)学习提供了重要支持。停用词是文本处理中常用的无意义词汇,过滤它们可以显著提升文本分析的效果。该资源以zip格式压缩,下载后解压即可使用,适用于使用nltk库进行文本处理的...

gitblog_06715的博客 899

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: Keras学习之六:训练辅助及优化工具
下一篇: NLTK学习之二:建构词性标注器
zzulp
博客等级 码龄19年 464粉丝 176原创
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值