(0)NLP的流程

一、NLP项目的Pipeline

  • 数据清洗(无用的标签、特殊的符号、停用词、大写转小写)

  • 分词

  • 标准化:

     - Stemming:还原的单词不一定存在词典中,不保证还原为一个有效的单词
     - Lemmazation:保证存在词典中
    
  • 特征提取:tf-idf、word2vec

    - 提取特征,特征工程决定了系统的上限,用模型去逼近这个上限。	
    
  • 建模:相似度算法、分类算法等

  • 评估:acc、精确率、召回率、f1

二、word segmentation

2.1 最大匹配算法(max matching)

最大匹配是一个基于匹配规则的贪心算法。

  • 前项最大匹配:max_len = 5(一般小于10,太大时间复杂度会很高),取百分比最多的词的长度,
  • 后向最大匹配

最大匹配的缺点:

  • 局部最优
  • 效率(max_len)
  • 歧义(不考虑语义),停留在单词阶段

2.2 Incorporate Semantic

  • 生成输入句子的所有可能的划分(根据词典),选择其中最好的作为最终的划分(比如LM)
  • 怎么解决效率问题:动态规划

三、文本表示

3.1 one-hot representation

  • boolean based

  • Count based

    - 并不是出现的越多就越重要
    - 并不是出现的越少,就越不重要 
    
  • tf-idf based

    - tf-idf(w) = tf(d,w) * idf(w)
    - tf(d,w):文档d中w的词频
    - idf(w):考虑单词的重要性,
    	- log(N/N(w)),如果词w出现在许多文档中,说明这个词不重要
    	- 不希望这个值太大,所以加上log
    	- N:语料库中的文档总数
    	- N(w):词语w出现在多少个文档中
    

缺点:

  • one-hot representation 无法表达单词之间的相似度(不能表达语义相似度)
  • Sparsity(稀疏性):向量大小是词典的大小

3.2 Distributed Representation

一般不超过300维。

  • 容量空间:

    - 100维的one-hot表示法最多表示多少单词?100个
    - 100维的分布式表示法最多表示多少单词?无穷个
    
  • 分布式的优点:

    - 分布式解决了稀疏性
    - one-hot无法表达单词的相似度,分布式可以(且可视化)
    
  • 句子向量怎么计算:平均法则

3.3 文本相似度

  • 欧式距离:没有考虑方向
  • 余弦相似度:考虑了方向

四、建模方法

4.1 Noisy channel Model

p(text|source) = p(source|text) * p(text)

应用场景:

  • 机器翻译:

    p(中文|英文) = p(英文|中文) * p(中文)

  • 拼写纠错

    p(正确的写法|错误的写法) = p(错|正) * p(正)

4.2 LM

  • 用来判断一句话是否在语法上通顺

  • 目标:p(s) = p(w1,w2,…,wn)

  • 马尔科夫假设

    - Unigram:不考虑,独立
    - Bigram:一阶马尔科夫假设
    - N-gram
    
  • 语言模型:就是训练这些条件概率

  • 一个短句包含很多单词时,概率很难计算且大部分为0

  • 字符串越长,在文章中找到相应字符串的次数(概率)就越小,统计结果不准确

  • 评估语言模型

    - perplexity = 2 ^ -x , x:average log likelihood
    - perplexity越小越好,x越大越好,x = log(p(w1)p(w2)...)
    

4.3 语料库没有出现的单词怎么办?

训练语料库没出现,不代表未来不会出现。

  • Add-K-smoothing

    - p(wi|wi-1) = c(wi-1,wi) / c(wi)
    - p(wi|wi-1) = c(wi-1,wi)+k / c(wi) +kv
    
  • Interpolation

    核心思路:在计算Trigram概率下时,同时考虑Ungram,Bigram,Trigram出现的频次。加权为1

  • Good-Turning Smoothing

    - 没有出现过的单词:P = 0 变为 P = N1 / N
    - 出现过的单词:P = c / N 变为 P = [(c+1) * N(c+1)] / [Nc * N]
    - Nc:出现c次单词的个数  
    

五、评价指标

  • 准确率acc

  • 精确率

    - precision = TP / (TP + FP)  选出的有多少是对的
    - recall = TP / (TP + FN) 选出来整体的多少
    
  • f1

    - f1 = 2*p*r / p+r
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值