专栏首页AI小白入门初学者|不能不会的NLTK

初学者|不能不会的NLTK

点击上方蓝色字体,关注AI小白入门哟

跟着博主的脚步,每天进步一点点

本文简绍了NLTK的使用方法,这是一个被称为“使用Python进行计算语言学教学和工作的绝佳工具”。

简介

NLTK被称为“使用Python进行计算语言学教学和工作的绝佳工具”。它为50多种语料库和词汇资源(如WordNet)提供了易于使用的界面,还提供了一套用于分类,标记化,词干化,标记,解析和语义推理的文本处理库。接下来然我们一起来实战学习一波~~

官网地址:http://www.nltk.org/

Github地址:https://github.com/nltk/nltk

实战

1.Tokenize

# 安装:pip install nltk
import nltk
sentence = 'I love natural language processing!'
tokens = nltk.word_tokenize(sentence)
print(tokens)

['I', 'love', 'natural', 'language', 'processing', '!']

2.词性标注

tagged = nltk.pos_tag(tokens)
print(tagged)

[('I', 'PRP'), ('love', 'VBP'), ('natural', 'JJ'), ('language', 'NN'), ('processing', 'NN'), ('!', '.')]

3.命名实体识别

# 下载模型:nltk.download('maxent_ne_chunker')
nltk.download('maxent_ne_chunker')
[nltk_data] Downloading package maxent_ne_chunker to
[nltk_data]     C:\Users\yuquanle\AppData\Roaming\nltk_data...
[nltk_data]   Unzipping chunkers\maxent_ne_chunker.zip.
True

nltk.download('words')
[nltk_data] Downloading package words to
[nltk_data]     C:\Users\yuquanle\AppData\Roaming\nltk_data...
[nltk_data]   Unzipping corpora\words.zip.
True

entities = nltk.chunk.ne_chunk(tagged)
print(entities)

(S I/PRP love/VBP natural/JJ language/NN processing/NN !/.)

4.下载语料库

# 例如:下载brown
# 更多语料库:http://www.nltk.org/howto/corpus.html
nltk.download('brown')
[nltk_data] Downloading package brown to
[nltk_data]     C:\Users\yuquanle\AppData\Roaming\nltk_data...
[nltk_data]   Package brown is already up-to-date!
True

from nltk.corpus import brown
brown.words()

['The', 'Fulton', 'County', 'Grand', 'Jury', 'said', ...]

5.度量

# percision:正确率
# recall:召回率
# f_measure
from nltk.metrics import precision, recall, f_measure
reference = 'DET NN VB DET JJ NN NN IN DET NN'.split()
test = 'DET VB VB DET NN NN NN IN DET NN'.split()
reference_set = set(reference)
test_set = set(test)
print("precision:" + str(precision(reference_set, test_set)))
print("recall:" + str(recall(reference_set, test_set)))
print("f_measure:" + str(f_measure(reference_set,
test_set)))

precision:1.0
recall:0.8
f_measure:0.8888888888888888

6.词干提取(Stemmers)

# Porter stemmer
from nltk.stem.porter import *
# 创建词干提取器
stemmer = PorterStemmer()
plurals = ['caresses', 'flies', 'dies', 'mules', 'denied']
singles = [stemmer.stem(plural) for plural in plurals]
print(' '.join(singles))

caress fli die mule deni

# Snowball stemmer
from nltk.stem.snowball import SnowballStemmer
print(" ".join(SnowballStemmer.languages))
arabic danish dutch english finnish french german hungarian italian norwegian porter portuguese romanian russian spanish swedish
# 指定语言
stemmer = SnowballStemmer("english")
print(stemmer.stem("running"))

run

7.SentiWordNet接口

# 下载sentiwordnet词典
import nltk
nltk.download('sentiwordnet')
[nltk_data] Downloading package sentiwordnet to
[nltk_data]     C:\Users\yuquanle\AppData\Roaming\nltk_data...
[nltk_data]   Unzipping corpora\sentiwordnet.zip.
True

# SentiSynsets: synsets(同义词集)的情感值
from nltk.corpus import sentiwordnet as swn
breakdown = swn.senti_synset('breakdown.n.03')
print(breakdown)
print(breakdown.pos_score())
print(breakdown.neg_score())
print(breakdown.obj_score())

<breakdown.n.03: PosScore=0.0 NegScore=0.25>
0.0
0.25
0.75

# Lookup(查看)
print(list(swn.senti_synsets('slow')))
[SentiSynset('decelerate.v.01'), SentiSynset('slow.v.02'), SentiSynset('slow.v.03'), SentiSynset('slow.a.01'), SentiSynset('slow.a.02'), SentiSynset('dense.s.04'), SentiSynset('slow.a.04'), SentiSynset('boring.s.01'), SentiSynset('dull.s.08'), SentiSynset('slowly.r.01'), SentiSynset('behind.r.03')]
happy = swn.senti_synsets('happy', 'a')
print(list(happy))

[SentiSynset('happy.a.01'), SentiSynset('felicitous.s.02'), SentiSynset('glad.s.02'), SentiSynset('happy.s.04')]

更多用法:http://www.nltk.org/howto/index.html

代码已上传:

https://github.com/yuquanle/StudyForNLP/blob/master/NLPtools/NLTKDemo.ipynb

The End

本文分享自微信公众号 - AI小白入门(StudyForAI),作者:yuquanle

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【综述】卷积神经网络(CNN)综述

    人工神经网络(Artificial Neural Networks,ANN)是一种模拟生物神经系统的结构和行为,进行分布式并行信息处理的算法数学模型。ANN通过...

    yuquanle
  • 【DL】一文读懂深度学习中的N种卷积

    如果你听说过深度学习中不同种类的卷积(比如 2D / 3D / 1x1 /转置/扩张(Atrous)/空间可分/深度可分/平展/分组/混洗分组卷积),并且搞不清...

    yuquanle
  • 【干货】NumPy入门深度好文 (下篇)

    重塑 (reshape) 和打平 (ravel, flatten) 这两个操作仅仅只改变数组的维度

    yuquanle
  • windows环境下搭建python+nltk开发环境

    nltk(Natural Language Tookit)实际上是python的一个开发包。对于自然语言处理任务非常有用。 ==================...

    NateHuang
  • python进行词性分析

    表示python的nltk包真的很好用,本来想着自己从字典里面抓数据的,后来师兄建议用nltk包,

    py3study
  • 安装和使用NLTK分词和去停词

    安装NLTK可能出现的问题: 1. pip install ntlk 2. 如果遇到缺少stopwords报错如下:(http://johnlaudun.org...

    MachineLP
  • 学习笔记CB002:词干提取、词性标注、中文切词、文档分类

    英文词干提取器,import nltk,porter = nltk.PorterStemmer(),porter.stem('lying') 。

    利炳根
  • Python+ipython的安装使用-

    安装思路: 1.环境准备(系统环境,相关软件); 2.编译安装;(软件编译安装); 3.启动服务; 4.测试结果。 安装开始: 一.环境准备 ...

    py3study
  • 玩转Elasticsearch源码-一张图看懂ES启动流程

    上图中虚线表示进入具体流程,实线表示下一步,为了后面讲解方便每个步骤都加了编号。 先简单介绍下启动流程主要涉及的类:

    左手java右手go
  • linux中samba共享文件-cyl

     说明: comment:提示,在windows的网络邻居上显示为备注。 path:linux上共享目录 valid users: 允许访问...

    柴银磊

扫码关注云+社区

领取腾讯云代金券