原文:http://blog.csdn.net/zzulp/article/details/76146947

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

1 NLTK的安装

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

pip install nltk

在nltk中集成了语料与模型等的包管理器,通过在python解释器中执行(在jupyter中运行时,不会跳出弹窗)

>>> import nltk
>>> 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 jiebaraw=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'一同'])

输出如下:

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

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

text.collocations()

输出

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

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

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

输出如下图: 

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进行处理。运行输出分布图如下: 

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'

nlp--使用NLTK进行简单文本分析相关推荐

  1. 重磅︱R+NLP:text2vec包——New 文本分析生态系统 No.1(一,简介)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 词向量的表示主流的有两种方式,一种当然是耳熟能 ...

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

    nltk的全称是natural language toolkit,是一套基于python的自然语言处理工具集. 1 NLTK的安装 nltk的安装十分便捷,只需要pip就可以. pip install ...

  3. NTLK1 :简单文本分析

    参考链接1 参考链接2 import nltk import jieba import numpy as np import pandas as pd import matplotlib.pyplot ...

  4. python情感分析预测模型_Python 使用 NLTK 实现简单情感分析--Twitter(推特)分析...

    一.环境搭建 1.安装第三方包nltk pip intall nltk==3.4.5 2.安装 nltk_data nltk_data 存放了很多语料数据, 包括大量的数据集,本文中就是用到了其中的  ...

  5. pythonnltk情感分析器_Python 使用 NLTK 实现简单情感分析--Twitter(推特)分析

    一.环境搭建 1.安装第三方包nltk pip intall nltk==3.4.5 2.安装 nltk_data nltk_data 存放了很多语料数据, 包括大量的数据集,本文中就是用到了其中的  ...

  6. R语言:对说唱歌词的简单文本分析

    这一阵公司的事情越来越忙,感觉光是应付工作就要耗费很大的精力,工作之外的越来越没有时间做了.再加上最近一直在搞落户的事情,耗费了很多精力,大概工作之后的状态都是这样吧.12月份因为报表的事情连续加了半 ...

  7. python实现情感分析_利用python实现简单情感分析

    最近选修的大数据挖掘课上需要做关于情感分析的pre,自己也做了一些准备工作,就像把准备的内容稍微整理一下写出来,下次再做类似项目的时候也有个参考. 情感分析是什么? 文本情感分析是指用自然语言处理(N ...

  8. NLP中的文本分析和特征工程

    语言检测,文本清理,长度测量,情绪分析,命名实体识别,n字频率,词向量,主题建模 前言 在本文中,我将使用NLP和Python解释如何分析文本数据并为机器学习模型提取特征. NLP(自然语言处理)是人 ...

  9. 自然语言处理(NLP)之使用LSTM进行文本情感分析

    情感分析简介 文本情感分析(Sentiment Analysis)是自然语言处理(NLP)方法中常见的应用,也是一个有趣的基本任务,尤其是以提炼文本情绪内容为目的的分类.它是对带有情感色彩的主观性文本 ...

  10. NLP文本分析(文本分类与句子评分)

    在线课堂质量评估文本分析 文本分析的任务是对一堂在线课的师生对话进行分析,得到问答.讲堂和纠错三个方面的定性评估. 更新 Apr 28, 2020 当前版本: 0.1.0, 初始版本. 目录 章节 内 ...

最新文章

  1. Cassandra 原理介绍
  2. 二叉搜索树中第K小的元素
  3. 瑞士科学家3D打印出5纳米厚的传感器
  4. QT实现绘制3D基本形状
  5. 归并排序(python实现)
  6. android流程化步骤样式,Android RecyclerView 解析之绘制流程篇
  7. 通俗易懂地搞懂决策树(Decision Tree)那些事儿
  8. JAVA比较两个List集合的方法
  9. Linux目录架构详解
  10. Function(洛谷-P1464)
  11. 已从事软件测试一年,感觉依然很菜,只会基础的功能测试,想进一步学习,有没有好的建议呢?
  12. ubuntu下用vagrant搭建集群环境
  13. c#目录以及子目录下图片批量缩放,像素不变,图像大小改变
  14. List中对象model的排序问题
  15. Android初级教程:对文件和字符串进行MD5加密工具类
  16. BP神经网络预测(python)
  17. Redis命令之hscan
  18. 手把手教你给电脑安装manjaroLinux操作系统
  19. JAVA中SSH框架
  20. 模拟太阳系的html,three.js模拟实现太阳系行星体系功能

热门文章

  1. MODIS(MCD12Q1,MCD12C1)土地覆盖数据链接
  2. 使用oschina的git服务器图文流程
  3. 我的世界斗罗大陆服务器,我的世界斗罗多人服务器
  4. 百度AI平台的重要性和优势,你知道多少?
  5. 元胞自动机-森林火灾(matlab代码记录)
  6. 牛的学术圈Ⅰ(贪心)
  7. 最优化:建模、算法与理论(典型优化问题
  8. iOS 程序转让(从A开发者账号转到B开发者账号)
  9. 笔记本电脑使用中四个原则
  10. mysql的方言_mySQL数据库的基本操作方言