NLTK的使用

摘要:
以下是如何使用NLTK快速完成NLP的基本任务。首先,用于NLTK分词的函数:NLTK.sent _ Tokenize#根据句子分割文本NLTK.word _ Tokeniize#分词#!

安装nltk.参考:http://www.cnblogs.com/kylinsblog/p/7755843.html

NLTK是Python很强大的第三方库,可以很方便的完成很多自然语言处理(NLP)的任务,包括分词、词性标注、命名实体识别(NER)及句法分析。

下面介绍如何利用NLTK快速完成NLP基本任务

一、NLTK进行分词

用到的函数:

nltk.sent_tokenize(text) #对文本按照句子进行分割

nltk.word_tokenize(sent) #对句子进行分词

#!/usr/bin/python
# -*- coding: UTF-8 -*-
print('nlp2 test')
import nltk
text = 'PathonTip.com is a very good website. We can learn a lot from it.'
#将文本拆分成句子列表
sens = nltk.sent_tokenize(text)
print(sens)
#将句子进行分词,nltk的分词是句子级的,因此要先分句,再逐句分词,否则效果会很差.
words = []
for sent in sens:
    words.append(nltk.word_tokenize(sent))
print(words)

执行结果:

NLTK的使用第1张

二、NLTK进行词性标注

用到的函数:

nltk.pos_tag(tokens)#tokens是句子分词后的结果,同样是句子级的标注

tags = []
#词性标注要利用上一步分词的结果
for tokens in words:
    tags.append(nltk.pos_tag(tokens))
print(tags)

 执行结果:

NLTK的使用第2张

三、NLTK进行命名实体识别(NER)

用到的函数:

nltk.ne_chunk(tags)#tags是句子词性标注后的结果,同样是句子级

#!/usr/bin/python
# -*- coding: UTF-8 -*-
print('nlp3 test')
import nltk
text = 'Xi is the chairman of China in the year 2013.'
#分词
tokens = nltk.word_tokenize(text)
#词性标注
tags = nltk.pos_tag(tokens)
print(tags)
#NER需要利用词性标注的结果
ners = nltk.ne_chunk(tags)
#print('%s---%s' % (str(ners),str(ners.node))) #报错,无解
#还是直接打印tree吧
print(ners)

执行结果:

NLTK的使用第3张

上例中,有两个命名实体,一个是Xi,这个应该是PER,被错误识别为GPE了; 另一个事China,被正确识别为GPE。

四、句法分析

nltk没有好的parser,推荐使用stanfordparser
但是nltk有很好的树类,该类用list实现
可以利用stanfordparser的输出构建一棵python的句法树
#报错,无解
#tparse = nltk.tree.Tree.parse
#修改
#tree = tparse('(NP (DT the) (JJ fat) (NN man))')
#tree = nltk.Tree('NP','DT')
#for subtree in tree:
#    print(subtree,'---',subtree.node)
tree1 = nltk.Tree('NP',['Alick'])
print(tree1)
tree2 = nltk.Tree('N',['Alick','Rabbit'])
print(tree2)
tree3 = nltk.Tree('S',[tree1,tree2])
print(tree3.label()) #查看树的结点
tree3.draw()

 执行结果:

NLTK的使用第4张

免责声明:文章转载自《NLTK的使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇WPF 实现已绑定集合项目的移除时动画过渡【微信小程序】引用FontAwesome字体下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用马尔可夫模型自动生成文章

使用马尔可夫模型自动生成文章 马尔可夫链是一个随机过程,在这个过程中,我们假设前一个或前几个状态对预测下一个状态起决定性作用。和抛硬币不同,这些事件之间不是相互独立的。通过一个例子更容易理解。 想象一下天气只能是下雨天或者晴天。也就是说,状态空间是雨天或者晴天。我们可以将马尔可夫模型表示为一个转移矩阵,矩阵的每一行代表一个状态,每一列代表该状态转移到另外...

关于英语作文AI批改的思考(含定向高分方案)

在科技高速发展的今天,借助于AI,我们的老师终于能摆脱繁重的作业批改任务,从而把时间投入到更高效的教学工作中去。然而,我在多次的体验中,越来越发现AI批改英语作文的弊病。 有时候自己认真敲出来的作文,甚至还没有别人随便一篇中文翻译出来的分数高。 自己的语法明明正确,但是却一直报错。 自己不甘80分的命运,疯狂输入大量优美句子,然而分数仍然不涨。 在看到别...

文本分类(六):使用fastText对文本进行分类--小插曲

http://blog.csdn.net/lxg0807/article/details/52960072 环境说明:python2.7、linux 自己打自己脸,目前官方的包只能在linux,mac环境下使用。误导大家了,对不起。 测试facebook开源的基于深度学习的对文本分类的fastText模型 fasttext python包的安装: pip...

自然语言处理中的分词问题总结

众所周知,英文是以词为单位的,词和词之间是靠空格隔开,而中文是以字为单位,句子中所有的字连起来才能描述一个意思。把中文的汉字序列切分成有意义的词,就是中文分词,有些人也称为切词。本文转载自明略研究院的技术经理牟小峰老师讲授的语言处理中的分词问题。 如何界定分词   中文分词指的是将一个汉字序列切分成一个一个单独的词。分词就是将连续的字序列按照一定的规范重新...

nltk安装配置以及语料库的安装配置

一 nltk的安装   nltk的安装个人推荐使用pip安装 直接在pycharm的Termial中安装即可    其中 安装语句为 pip3 install nltk (如有python版本不同 可尝试pip install nltk)   此处我的已经安装过所以显示的是安装位置  在安装时如果很慢 可以使用其他的源路径 如 阿里云 :-i http:...

【自然语言处理】利用朴素贝叶斯进行新闻分类(自己处理数据)

读完这篇博文,你能够收获什么? 从数据处理到利用朴素贝叶斯进行分类的整个过程 本文更关注于数据处理阶段,朴素贝叶斯模型直接使用sklearn库中自带的 先给出整个算法的流程:  采用的是sogou语料库的部分数据,每个C开头的文件各代表一类,里面包含着若干篇txt类型的文章,具体类别如下: 1.数据审视阶段(查看是否有不符合规范或异常的数据),由于...