nltk.data.load('tokenizers/punkt/english.pickle')详解

对于初学者,在kaggle上做电影评论情感文本分析的时候,会碰到这么一句nltk.data.load('tokenizers/punkt/english.pickle')

想看最后结果的,直接拉到页面最后。。。

从整个的函数,可以隐约感觉到,是对一段文本进行分句,分成各个句子组成的列表。

我们先看个例子:

import nltk.data
tokenizer = nltk.data.load('tokenizers/punkt/english.pickle')
data = 'Sadly, more downs than ups.The plot was pretty decent.'
for row in tokenizer.tokenize(data):
    print(row)

运行出的结果:

Sadly, more downs than ups.The plot was pretty decent.

这还是一段文本,说好的分成句子呢?

几经折磨,终于知道是为什么了。

再看一下:

import nltk.data
tokenizer = nltk.data.load('tokenizers/punkt/english.pickle')
data = 'Sadly, more downs than ups. The plot was pretty decent.'
for row in tokenizer.tokenize(data):
    print(row)

结果:

Sadly, more downs than ups.
The plot was pretty decent.

这又出现了正常的结果,瞪大眼睛,仔细瞧,终于发现,在句子结束后的‘.’之后要留空格。

也就是说句子结束的标点!. ?,在写下一句的时候,老外都留了一个空格,这是划分句子的一个依据。

nltk.data里面封装了好多训练好的模型,tokenizer = nltk.data.load('tokenizers/punkt/english.pickle')

这个是英文的模型。按照加载模型的路径,我找了其他的训练好的模型,如下图:


可以看到,里面有法国,德国,西班牙等训练好的模型。

然而没有中国的。。。

总结:

  1. nltk.data.load('tokenizers/punkt/english.pickle')加载英文的划分句子的模型
  2. 自己写的英文文本,没有出结果,因为在句子结束没有留空格,这是中英文书写习惯造成的
  3. tokenizers/punkt/ 这里面有好多训练好的模型,只能划分成句子,不能划分成单词

题外话:

老外写文字,单词之间都留空格,split()函数默认是空格,python是他们自己设计的,都是方便了他们。





  • 15
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值