NLTK 基本操作
一、标识化处理(分词/分句)
标识化处理:将原生字符串分割为一系列有意义的分词。
机器要理解的最小处理单位为单词。所以标识化处理外,不适合再做进一步的操作。
标识器(tokenizer):
1、split() 分割;
2、正则;
3、NLTK 内置方法:nltk.tokenize.word_tokenize() 分词,nltk.tokenize.sent_tokenize() 分句;regex_tokenize() 用户可自定义的标识器。
4、其他大部分标识器 都可以通过 继承正则表达式 的标识器实现,也可以利用不同模式 来构建一个 具体的标识器。
word_tokenize 和 split 的优势;
word_tokenize 更通用、可面向所有类型语料库。
以上是 NLTK 内置的 语句边界检测算法;
nltk 更适合处理英文,英文使用空格将一个个单词分开;
from nltk.tokenize import word_tokenize, sent_tokenize
str = 'arXiv is a free distribution service and an open-access archive for 1,812,439 scholarly articles. Materials on this site are not peer-reviewed by arXiv.'
# tokens = word_tokenize(str)
# 一般转化为小写来分析
tokens = [word.lower() for word in tokens]
tokens
'''
['arXiv',
'is',
'a',
'free',
'distribution',
'service',
'and',
'an',
'open-access',
'archive',
'for',
'1,812,439',
'scholarly',
'articles',
'.',
'materials',
'on',
'this',
'site',
'are',
'not',
'peer-reviewed',
'by',
'arXiv',
'.']
'''
# 分句
param = str
sents = sent_tokenize(param)
'''
['arXiv is a free distribution service and an open-access archive for 1,812,439 scholarly articles.',
'Materials on this site are not peer-reviewed by arXiv.']
'''
type(sents) # list
自定义语句分离
from nltk.tokenize import punkt
tokenizer = punkt.PunktSentenceTokenizer()
该预置语句分离器支持 17 种语言;
我们只需要为其指定相关配方对象即可。
一般而言,只要提供一个相关种类的文本语料。
二、Text 对象
import nltk
from nltk.text import Text # Text 模块
# 查看 Text 对象帮助
help(nltk.text)
# 创建 Text 对象
t = Text(tokens)
# 查看某个词的个数
t.count('code') # 1
# 查看位置索引
t.index('code') # 10
%matplotlib inline
t.plot(8) # 查看最常见的 词频 分布