文章目录
- NLP项目流程 Pipeline
- 分词
- 最大匹配
- 语义理解
- 维特比算法
- 拼写纠错
- 去除停用词
- Stemming: one way to normalize
- 文本表示
- One-hot 表示
- 文本相似度
- TF-IDF
- 词向量
- 语言模型
- Unigram
- Evaluation of Lauguage Model
- Smoothing
- Learnning
- Learnning
NLP项目流程 Pipeline
分词
- 基于匹配规则–最大匹配
- 基于概率统计方法–LM、HMM、CRF
最大匹配
- 前向最大匹配
从前向后匹配,尽量匹配更多字符,一般考虑词典中使用字符的长度来确定max_len,保证时间复杂度。 - 后向最大匹配
方向从后到前,其他类似前向,90%两者分词结果相同,某些场景存在不同情况 - 双向最大匹配
最大匹配缺点:(是一种贪心算法)
细分、局部最优、效率依赖max_len、不能考虑歧义、考虑不到上下文,不能解决语义问题
语义理解
通过语言模型Unigram LM选出可能分割中最好的结果来表示语义级的分割。
通过人工或者分词工具进行分词,统计词典库总字词数以及各词语出现的频率,计算句子中各独立词语频率的积作为该句子的符合语义的概率情况。
log换算,防止结果出现inf,效果上是等同的。
缺点:生成的分割可能太多,复杂度太高。
怎么解比算效率问题??
维特比算法
如图点线连接,每条带箭头直线代表一个单词,线上的绿色数字表示该字词出现概率的-log转换值,词典未出现设置初始,上图假定20;然后两两词共现情况,词典存在关联则连线并记录值。。。一次类推三个、四个等等。图中每一条连线路径可看作一次分词组合的情况,然后计算最短路径。
拼写纠错
编辑距离(Edit Distance) DP算法 add/delete/replace
缺点:需要遍历字典,复杂度高
- 生成 -> 通过replace/add/delete操作,生成编辑距离为1、2的字符串(编辑距离为1或者2便可覆盖99%的使用场景),优势是 不依赖于词典库大小
- 过滤 ->
去除停用词
- 停用词(需考虑应用场景)
- 出现频率低
Stemming: one way to normalize
通过规则还原复数、时态、动名词等原词形式
文本表示
One-hot 表示
- 稀疏表示
- 不能表示语义相似度
- 简单有效的方法论
Word Representation:One-Hot representation
Setence Representation:
- boolean 方法:按照词典库顺序对句子中的分词结果进行bool判断,存在为1,维度与词典库大小相同,不计算单词频率。
例如,
词典库为[我们,又,去, 爬山, 今天,你们,昨天,跑步]
句子表示:
我们 今天 去 爬山 -> (1,0,1,1,1,0,0,0)
你们 又 去 爬山 又 去 跑步 -> (0,1,1,1,0,1,0,1) - count-based 方法:同boolean方法,但是计算单词频率。
例如上述例子,第一句同,第二句为(0,2,2,1,0,1,0,1),表示向量中记录单词出现频率。但是,一句中并不是出现的越多就越重要,也并不是出现的越少就越不重要。
文本相似度
- 计算距离 欧式距离
- 计算相似度 余弦相似度 ,考虑方向跟大小
TF-IDF
TF-IDF 公式表达,词频与重要性的乘积共同表示词,log以防N/N(w)的乘积过大。
词向量
分布式表示方法 -> 词向量
语言模型
用来判断是否一句话先从语法上通顺。
Unigram
- Unigram
依赖Markov,假设各变量独立,不考虑单词顺序,
p(w1,w2,…,wn) = p(w1)p(w2)…p(wn) - Bigram
1st order markov,某种意义上可以考虑到单词顺序关系
p(w1,w2,…,wn) = p(w1)p(w2|w1)…p(wn|w(n-1)) - N-gram
N > 2时,higher order
N = 3, 公式体现为
p(w1,w2,w3,…,wn) = p(w1)p(w2|w1)p(w3|w1w2)…p(wn|w(n-2)w(n-1))
Evaluation of Lauguage Model
理想情况下:假设有两个语言模型AB,选定一个特定的任务比如拼写纠错,把两个模型AB都应用在此任务中,最后比较准确率,从而判断AB的表现。
问题:耗时,等
Perplexity
Smoothing
Add-one Smoothing (Laplace Smoothing)
当等于0时,分子加“1”分母加“V”进行smoothing,V表示词典大小,加“V”保证总概率和在分子加1后仍为1(同条件下)。
Add-K Smoothing
k 选择:将其 作为最优化问题,假设已有预训练模型,在验证集上计算perplexity,此时perplexity = f(k),求其最小化。
Interpolation
在计算Trigram概率时同时考虑Unigram、Bigram、Trigram出现的频次,进行加权平均。
Good-Turning Smoothing
未出现过得单词:,N1表示仅出现过一次的频次。
出现过的单词:
Learnning
- 专家系统:符号主义
虑Unigram、Bigram、Trigram出现的频次,进行加权平均。
Good-Turning Smoothing
未出现过得单词:,N1表示仅出现过一次的频次。
出现过的单词:
Learnning
- 专家系统:符号主义
- 基于概率的系统:连接主义–机器学习、深度学习