博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NLTK的使用
阅读量:5325 次
发布时间:2019-06-14

本文共 1705 字,大约阅读时间需要 5 分钟。

安装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 nltktext = '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进行词性标注

用到的函数:

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

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

 执行结果:

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

用到的函数:

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

#!/usr/bin/python# -*- coding: UTF-8 -*-print('nlp3 test')import nltktext = '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)

执行结果:

 

上例中,有两个命名实体,一个是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()

 执行结果:

 

转载于:https://www.cnblogs.com/kylinsblog/p/7762675.html

你可能感兴趣的文章
RxJS & Angular
查看>>
面向对象(多异常的声明与处理)
查看>>
MTK笔记
查看>>
ERROR: duplicate key value violates unique constraint "xxx"
查看>>
激活office 365 的启动文件
查看>>
无法根据中文查找
查看>>
[简讯]phpMyAdmin项目已迁移至GitHub
查看>>
转载 python多重继承C3算法
查看>>
【题解】 bzoj1597: [Usaco2008 Mar]土地购买 (动态规划+斜率优化)
查看>>
css文本溢出显示省略号
查看>>
git安装和简单配置
查看>>
面向对象:反射,双下方法
查看>>
鼠标悬停提示文本消息最简单的做法
查看>>
课后作业-阅读任务-阅读提问-2
查看>>
面向对象设计中private,public,protected的访问控制原则及静态代码块的初始化顺序...
查看>>
fat32转ntfs ,Win7系统提示对于目标文件系统文件过大解决教程
查看>>
Awesome Adb——一份超全超详细的 ADB 用法大全
查看>>
shell cat 合并文件,合并数据库sql文件
查看>>
Android 将drawable下的图片转换成bitmap、Drawable
查看>>
介绍Win7 win8 上Java环境的配置
查看>>