NLTK

英文分词与词性标注

我们最熟悉的nltk大概就是上面这样,而且因为适用场景主要是外文数据。所以没怎么碰nltk,这阵子又重新翻看了《用python做自然语言处理》一书(一年前看的时候因为不能处理中文,就没怎么学),发现稍微处理下中文数据,也是可以用强大的nltk实现的。下面我们开始尝试用nltk对中文数据进行分析,看看能做哪些东西。

一、搜索词语

这一章节,可以让你了解词语上下文查找、相似词语查找、统计词频、制作离散图。

实现上面的功能需要先将文本处理成nltk容易处理的Text类,方便进行文本搜索及计算。

1.1以三体小说为例,初始化Text类

1.2word的上下文

词语word在text中的上下文

1.3word的上下文中最相似的10个词

1.4多个词的上下文

1.5 统计词语频数

1.6离散图

1.7 按照已有风格,随机生成文本

根据text文本风格,按照给定的words随机生成一串文本。

但是不知道为啥,这里我没运行出来。 网上查了下,说可能跟nltk版本有关,待考证。

二、计算词语相似度

计算某个词与其他所有词的相似度这个功能,首先要将数据初始化为ContextIndex类。

三、计算TF-IDF

TF-IDF值反映了一个词代表某类文本的代表性的程度。比如金融类文本中,“股票”具有很强的代表性,相反“美食”几乎不具有代表性。

tf-idf值越大,说明这个词对于这类文本越具有代表性。

3.1 tf-idf学习

TF-IDF,最开始用于信息检索,在信息检索中其计算过程如下

TF-IDF模型的主要思想是:如果词w在一篇文档d中出现的频率高,并且在其他文档中很少出现,则认为词w具有很好的区分能力,适合用来把文章d和其他文章区分开来。该模型主要包含了两个因素:TF,IDF

词频TF(Term Frequency):词w在文档d中出现次数count(w, d)和文档d中总词数size(d)的比值:

逆向文档频率IDF(Inverse Document Frequency):文档总数n与词w所出现文件数docs(w, D)比值的对数:

TF-IDF= TF * IDF =(词频*词权)

TF-IDF与一个词在文档中的出现次数成正比,与该词在整个语言中的出现次数成反比。所以,自动提取关键词的算法就很清楚了,就是计算出文档的每个词的TF-IDF值,然后按降序排列,取排在最前面的几个词。

3.2 实战

先将数据初始化为TextCollection类

3.2.1 计算tf

3.2.2 计算idf

3.2.3 计算tf-idf

可见,词语“金融”很能代表 财经类文本,可以作为财经类文本的关键词。

四、Ngrams的实现

nltk.util模块可以帮助我们快速实现Ngrams

4.1 bigrams/trigrams

4.2 ngrams(sequence, n)

将序列生成n连词组序列

4.3 skipgrams(sequence, n, k)

五、probability模块

probability模块中有两个比较好用的类,一个是FreqDist,另一个是ConditionFreqDist类。

FreqDist可以实现词频计算,并制图

ConditionFreqDist可以实现带条件的词频计算,并制图。

5.1 FreqDist类

5.1.1初始化词语列表为FreqDist对象

5.1.2 打印词语列表

5.1.3 打印词语与频数对

5.1.4 词语总数

5.1.5 打印出现次数最多的词语

5.1.6 输出某个词的出现次数

5.1.7 计算词频

5.1.8 绘制前20个词频数累计图

5.2 ConditionFreqDist类

带条件的频率分布类

条件和事件频率分布计算观察到的事件,如文本中出现的词汇。条件频率分布需要事件关联一个条件,所以不是处理一个词序列,而是配对的序列。

每对的形式:(条件,事件)。

六、文本分类之朴素贝叶斯

这里使用nltk提供的数据 male.txt female.txt做为训练出一个模型,输入一个名字,预测一个人名的性别。

训练模型需要使用特征,这里我们假定使用名字最后一个字母作为特征。这里类比一下,比如中文中出现"亭"/"芳",很大的可能性是女名。而“国”、“帅”、"凯"极大的可能性是男名。

转载自http://baijiahao.baidu.com/s?id=1583312644254650521&wfr=spider&for=pc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值