0%

NLP学习之路

NLP = NLU + NLG

  • NLU: 语音/文本 -> 意思
  • NLG: 意思-> 文本

机器翻译系统实现

Decoding Algarithm
Viterb

NLP 应用案例

  • Question Answering问答系统(IBM)
  • Sentiment Analysis情感分析
  • Machine Translation 机器翻译
  • Text Summarization 自动摘要
  • Chatbot 聊天机器人
  • Information Extraction 信息抽取

自然语言处理技术的四个维度

  • Semantic 语义
  • Syntax 句子结构
  • Morphology 单词 NER 命名实体识别
  • Phonetics 声音

NLP关键技术

  • Word Segmentation (分词)
  • Part-of-Speech 词性
  • Named Entity Recognition 命名实体识别
  • Dependency Parsing 依存分析
  • Relation Extraction 关系抽取

文本处理过程

原始文本 -> 分词(Segmentation) -> 清洗(Cleaning)(无用的标签, 特殊符号,停用词,大小写转换) -> 标准化(Normalization) -> 特征提取 -> 建模 -> 评估

  1. Word Segmentation
  2. Spell Correction
  3. Filtering Words Stop Words Removal
  4. Stemming

Word Segmentation Tools

  • Jieba分词
  • SnowNLP
  • LTP
  • HanNLP

分词工具实现:

  • 基于匹配规则的方法
    最大匹配(Max Matching) 前向最大匹配(forward-max matching) 后向最大匹配(backward-max matching)
  • 基于概率统计的方法
    Incorporate Semantic(考虑语义)
    language model 维特比算法
    LM,HMM,CRF

Spell Correction(拼写错误纠正)
计算编辑距离 insert delete replace

Flitering Words
把停用词和出现频率低的词过滤

Stemming/lemmatization 相同含义单词合并
Porter Stemmer 算法

文本表示 Word Representation
词表示 one-hot representation
句子表示 Boolean representation
Count-based representation
tfidf(w) = tf(d, w) * idf(w)
tf(d,w)表示文档d中w的词频
idf(w)考虑单词的重要性 logN/N(w) N语料库中的文档总数 N(w)词语w出现在多少个文档
句子相似度 Sentence Similarity
欧式距离: d = |s1 - s2|
余弦相似度: d = (s1 * s2)/(|s1| * |s2|)

one-hot representation 缺点
没办法表示单词间语义的相似度
Sparsity 稀疏性

分布式表示法 Distributed Representation
词向量(word vectors)

词向量表达句子向量

  1. 平均法则
  2. LSTM/RNN

训练词向量的常用模型
Skip-Gram
G-lone
CBow
RNN/LSTM
MF

Noisy Channel Model
p(text|source) 等比 p(source|text)p(text)
应用场景
语音识别 P(文本|语音信号) 等比 P(语音信号|文本) * P(文本)
机器翻译 P(中文|英文) 等比 P(英文|中文) * P(中文)
拼写纠错 P(正确写法|错误写法) 等比 P(错误写法|正确写法) * P(正确写法)
OCR
密码破译 P(明文|暗文) 等比 P(暗文|明文) * P(明文)

语言模型 Language Model
作用:是否一句话从语法上是通顺的

Chain Rule
p(w1,w2, w3,w4,w5,…wn) = p(w1) * p(w2|w1) * p(w3|w1w2)….p(wn|w1w2…wn_1)

Markov Assumption 马尔可夫假设 解决稀疏问题
1st order | 2st order | 3rd order

语言模型分类:
Unigram: 每个单词是独立个体,相互独立 P(w1, w2, w3, w4 … wn) = p(w1) * p(w2) * p(w3) … p(wn)
Bigran: 1st order Markov Assumption P(w1, w2, w3, w4 … wn) = p(w1) * p(w2|w1) * p(w3|w2) … p(wn|wn_1)
N-gram:

使用Estimating Probability 计算每个单词的概率,但是会出现概率0项,可做平滑

如何评估语言模型
$ Perplexity = 2^{-(x)} $

处理未出现在字典中的词

  1. Add-one Smoothing (Laplace Smoothing)
    $ P_{ADD-1}(w_i|w_{i-1}) = \frac{c(w_{i-1}, w_i) + 1}{c(w_i) + V} $
  2. Add-k Smoothing
    $ P_{ADD-1}(w_i|w_{i-1}) = \frac{c(w_{i-1}, w_i) + k}{c(w_i) + kV} $
    如何选择k
    1. k = 1,2,3尝试
    2. 优化 f(k) 使用Preplexity优化
  3. Interpolation
    $p(w_n|w_{n-1}, w_{n-1}) = \lambda_1 p(w_n| w_{n-1}, w_{n-2}) + \lambda_2 p(w_n| w_{n-1} + \lambda_3 p(w_n)$
    $ \lambda_1 + \lambda_2 + \lambda_3 = 1$
  4. Good-Turning Smoothing
    缺点:

语言模型

pandas

贪心算法 每次选择当前最好的 局部最优
DP 全局最优