环境:
1.安装nltk:pip install nltk 注:windows如果提示需要安装依赖包msgpack pip install msgpack
2.nltk_data的下载
交互模式:
import nltk
nltk.download() 【windows:nltk.download_shell()】
输入:d 进入下载器
输入:all 开始下载
下载完成之后 交互模式 :from nltk import * 测试是否安装成功
nltk.tokenize模块下构造了各种分词器的类
基本上每一个分词器的类相对应的都有一个构建好的分词方法
开发者已经把这些工具导入到nltk下的__init__文件中
Ⅰ 、将文本切分为语句
1.sent_tekenize方法 将文本切分为独立的句子
from nltk.tokenize import sent_tokenize
text = "To the world you may be just one person. To the person you may be the whole world. "
# sent_tokenize会根据标点符号将文本按句子分割
result = sent_tokenize(text)
print(result)
# ['To the world you may be just one person.', 'To the person you may be the whole world.']
print len(result)
# 2
2.其他语言的句子分割
nltk默认是对英文进行操作 我们要对其他语言进行切分的时候我们可以通过加载其他语言的语言包来创建分词器
# 对法语进行切分
import nltk
# 创建法语的分词器
tokenizer_french = nltk.data.load('tokenizers/punkt/french.pickle')
text = "Les rencontres dans la vie sont comme le vent. Certaines vous effleurent juste la peau, d’autres vous renversent."
# 使用分词器的tokenize方法进行分词
result = tokenizer_french.tokenize(text)
print(result)
# ['Les rencontres dans la vie sont comme le vent.', 'Certaines vous effleurent juste la peau, d\xe2\x80\x99autres vous renversent.']
Ⅱ 将句子切分单词
1.TreebankWordTokenizer类
TreebankWordTokenizer依据Penn Treebank的语料库得而约定 通过分离缩略词来实现切分
from nltk.tokenize import TreebankWordTokenizer
# 实例化TreebankWordTokenizer
tokenizer_twt = TreebankWordTokenizer()
# 对文本进行切分
print(tokenizer_twt.tokenize(sentence))
# ['There', "'s", 'a', 'difference', 'between', 'love', 'and', 'like.', 'If', 'you', 'like', 'a', 'flower', 'you', 'will', 'pick', 'it', ',', 'but', 'if', 'you', '.']
2.word_tokenize方法
from nltk import word_tokenize
sentence = "There's a difference between love and like. If you like a flower you will pick it, but if you."
# nltk.word_tokenize方法将句子分割为独立的单词,函数内部使用TreebankWordTokenizer的对象进行分词
# 如果是大文本可以指定preserve_line=True 先断句再分词
print(word_tokenize(sentence))
# ['There', "'s", 'a', 'difference', 'between', 'love', 'and', 'like', '.', 'If', 'you', 'like', 'a', 'flower', 'you', 'will', 'pick', 'it', ',', 'but', 'if', 'you', '.']
3.WordPunctTokenizer
WordPunctTokenizer通过分离标点来实现切分 会将标点转化为一个新的标识符(我们通常需要的分词形式)
from nltk.tokenize import WordPunctTokenizer
sentence = "There's a difference between love and like. If you like a flower you will pick it, but if you."
# 实例化WordPunctTokenizer
tokenizer_wpt = WordPunctTokenizer()
# 将句子分离为独立的单词,
print(tokenizer_wpt.tokenize(sentence))
# ['There', "'", 's', 'a', 'difference', 'between', 'love', 'and', 'like', '.', 'If', 'you', 'like', 'a', 'flower', 'you', 'will', 'pick', 'it', ',', 'but', 'if', 'you', '.']