nlp基础描述

解决nlp问题的一般思路

这个问题人类可以做好吗?

  • 可以 -> 记录自己的思路 -> 设计流程让机器完成你的思路
  • 很难 -> 尝试从计算机的角度来思考问题

    nlp的历史进程

    1.正则表达式/自动机
    2.规则是固定的
    搜索引擎
    xx 用英语怎么说? -> translate(XX,english);
    我饿死了 -> recommend(饭店,地址);

可以用概率系统
一般的工作方式
预处理 -> 特征工程 -> 分类器(机器学习的算法) -> 预测
最重要的部分:数据收集,预处理和特征工程
任务:
“豆瓣酱用英语怎么说” => translate(豆瓣酱,Eng)

流程设计(序列标注):
子任务1: 找出目标语言 “豆瓣酱用 英语 怎么说”
子任务2: 找出翻译目标 “ 豆瓣酱 用英语怎么说”

收集训练数据:
(子任务1)
“豆瓣酱用英语怎么说”
“茄子用英语怎么说”
“黄瓜怎么翻译成英语”

预处理:
分词:“豆瓣酱 用 英语 怎么说”

抽取特征:
(前后各一个词)
0 茄子: < _ 用
0 用: 豆瓣酱 _ 英语
1 英语: 用 _ 怎么说
0 怎么说: 英语 _ >

分类器:
SVM/CRF/HMM/RNN

预测:
0.1 茄子: < _ 用
0.1 用: 豆瓣酱 _ 英语
0.7 英语: 用 _ 怎么说
0.1 怎么说: 英语 _ >

评价:
准确率
大部分自然语言问题都可以使用seq2seq模型来解决

seq2seq的模型将在后面进行介绍

评价机制

在信息论中,perplexity用于度量一个概率分布或概率模型预测样本的好坏程度
各种数学公式 在这里不做展开
机器翻译的评价指标-BLEU

语言模型
如果能使用某个方法对XX打分(Score),那么就可以把这个方法称之为XX模型。
例如篮球明星模型:Score(库里),Score(詹姆斯)
话题模型-对一段话是否在谈论某一个话题打分
Score(NLP | “什么是语言模型?”) –> 0.8
Score(ACM | “什么是语言模型?”) –> 0.05

可用的概率语言模型
统计语言模型实际上是一个概率模型,所以常见的概率模型通常用于求这些参数
常见的概率模型有:N-gram模型,决策时,最大熵模型,隐马尔科夫模型,条件随机场,神经网络
目前常用于语言模型的是 N-gram 模型和神经语言模型(下面介绍)

专题-句嵌入

基于统计的词袋模型(Bow)
单个词的One-Hot表示
基于频数的词袋模型
基于TF-IDF的词袋模型

词向量

词向量:是一个固定长度的实值向量
词向量是神经语言模型的副产品
词向量是针对”词”提出的,事实上,也可以针对更细或者更广的粗度来进行推广——比如字向量、句向量、文档向量等
nlp任务中,机器无法直接理解自然语言问题,所以首先要做的就是将语言数学化,词向量就是一种将自然语言数学化的方法。**将词转化成稠密向量,并且对于相似的词,其对应的词向量也相对接近。
word2vec提供了2套模型 CBOW和skip-gram模型
CBOW:在已知context(w)的情况下,预测w
SKIP_GRAM模型:在已知w的情况下预测context(w)

词的表示

词的表示通常有2种表示方法 one-hot representation和distribution representation。
1.1离散表示(one-hot representation)
传统的基于规则或基于统计的自然语义处理方法将单词看作一个原子符号
one-hot representation把每个词表示成一个长向量,这个向量的维度是词表的大小,向量中只有一个维度为1,其余的维度为0,这个维度就代表了当前的词。
例如:苹果:苹果 [0,0,0,1,0,0,0,0,0,……]
one-hot representation相当于给每个词分配一个id,这就导致这种表示方式不能展示词与词之间的关系。另外,one-hot representation将会导致特征空间非常大,但也带来一个好处,就是在高维空间中,很多应用任务线性可分。
1.2 分布式表示(distribution representation)
词转化成一种分布式表示,又称词向量。分布式表示将词表示成一个定长的连续的稠密向量。
分布式表示优点:
(1)词之间存在相似关系:
是词之间存在“距离”概念,这对很多自然语言处理的任务非常有帮助。
(2)包含更多信息:
词向量能够包含更多信息,并且每一维都有特定的含义。在采用one-hot特征时,可以对特征向量进行删减,词向量则不能。
生成词向量:任何一个词的含义都可以用它的周边词来进行表示。方式有基于统计的方法和基于语言模型的方法。
CBOW模型是预测上下文已知的情况下,当前词出现的概率。上下文的选取采用窗口方式,即只将当前词窗口范围内的词作为上下文。中心词概率公式如下:
P(wt|wt-k,wt-(k-1)…,wt-1,wt+1,wt+2…,wt+k)= P(wt|context)
CBOW采用了一种层次化softmax技术,利用哈夫曼树对词表进行分类,用一连串的二分类来表示多分类。
参考链接
词向量使用