专栏名称: 人工智能头条
专注人工智能技术前沿、实战技巧及大牛心得。
目录
相关文章推荐
爱可可-爱生活  ·  【[53星]A-Comprehensive- ... ·  10 小时前  
道与术抓妖  ·  二波一定需要一个龙头打高度的——3.11 ·  昨天  
道与术抓妖  ·  二波一定需要一个龙头打高度的——3.11 ·  昨天  
爱可可-爱生活  ·  -20250310221422 ·  2 天前  
51好读  ›  专栏  ›  人工智能头条

初学者不能不会的NLTK

人工智能头条  · 公众号  · AI  · 2019-10-16 08:20

正文

本文简绍了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:UsersyuquanleAppDataRoaming
ltk_data...
[nltk_data]   Unzipping chunkersmaxent_ne_chunker.zip.
True

nltk.download('words')
[nltk_data] Downloading package words to
[nltk_data]     C:UsersyuquanleAppDataRoaming
ltk_data...
[nltk_data]   Unzipping corporawords.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:UsersyuquanleAppDataRoaming
ltk_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:UsersyuquanleAppDataRoaming
ltk_data...
[nltk_data]   Unzipping corporasentiwordnet.zip.
True

# SentiSynsets: synsets(同义词集)的情感值
from nltk.corpus import sentiwordnet as






请到「今天看啥」查看全文