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)  # 查看最常见的 词频 分布

output_19_0.png


posted @ 2021-02-04 09:53  月思  阅读(489)  评论(0编辑  收藏  举报