资源
mantch的博客
NLP-LOVE/Introduction-NLP
stopwords
NLTK词性tag含义
NLTK modules Introduction

切分
- 将文章切分成句子
import nltk
from nltk.tokenize import sent_tokenize
sent_tokenize(text)
# 适用于大批量的句子切分
tokenizer=nltk.data.load('tokenizers/punkt/english.pickle')
tokenizer.tokenize(text)
# 其它语言
french_tokenizer=nltk.data.load('tokenizers/punkt/french.pickle')
french_tokenizer.tokenize(text)
BlanklineTokenizer() # 将文章以空行划分,空行是指不包含任何字符的行,空格 space 和制表符 tab 除外,相应的正则表达式为:'\s\n\s\n\s*'
- 句子切分为单词
nltk.word_tokenize(text), # 其中"isn't"被分割为"is"和"n't"
TreebankWordTokenizer # 同上等价
WordPunctTokenizer()# 单词标点分割,其中"isn't"被分割为"isn","'" 和“t"
WhitespaceTokenizer(), # 空格符号分割,"isn't"是一个整体。
PunktWordTokenizer() # 已弃用
WordPunctTokenizer() # 用正则表达式 “`\w+|[\w\s]+” 将字符串切分成字母和非字母字符
wordpunct_tokenize() # 同上
RegexpTokenizer("[\w]+") # 正则切分
SpaceTokenizer().tokenize(text) # 类似于split(' ')
WhitespaceTokenizer().span_tokenize(text) # 返回每个元素的起始位置和偏移量.空格包括space, tab, newline
word_tokenize,WordPunctTokenizer,TreebankWordTokenizer,WhitespaceTokenizer等CSDN博客
英文分词及词性标注_Python_journeyend的专栏-CSDN博客
标准化
主要涉及消除标点符号、将整个文本转换为大写或小写、数字转换成单词、扩展缩略词、文本的规范化等操作
替换和校正标识符
数据清洗的过程 例如, doesn’t 可以被替换为 does not
Zipf定律

这里 r 表示一个单词的出现频率的排名,P(r)表示排名为r的单词的出现频率.(单词频率分布中 C约等于0.1, a约等于1)
后人将这个分布称为齐夫分布(长尾分布),这个分布是一个统计型的经验规律,描述了这样一个定理:只有少数英文单词经常被使用,大部分的单词很少被使用。这个定理也在很多分布里面得到了验证,比如人们的收入,互联网的网站数量和访问比例,互联网内容和访问比例(其他分布两个常数有所不同,a越大,分布越密集,对于VOD来说某些时候符合双zipf分布)。
相似性度量
两个文本字符串要比较相似性,显然不太适合用欧式距离,因为文本不是具体可计算的数字。但还是有些比较相似度的方法。
- Jaccard similarity coefficient
向量的相似性度量 - Black_Knight - 博客园 - Levenshtein编辑距离
字符串相似性度量 - Smith Waterman算法
- 等等
网友评论