标签(空格分隔): 王小草深度学习笔记
1. 自然语言处理(NLP)的常见任务
先来看看在工业界对于自然语言处理的一些常见需求与任务。
自动摘要
这个在搜索引擎中非常常用。指计算机能自动去阅读一篇文章然后取提取这篇文章的摘要。
指代消解
比如“小明放学了,妈妈去接他”这句话中的“他”指代为“小明”。这个计算机本身并不知道,而我们希望计算机能自己去识别这些指代的对象。
机器翻译
这个非常熟悉,比如中英文的互相翻译。我们希望计算机能自动地将一种语言翻译成另一种语言。
词性标注
即计算机能自动去标注出每个词的词性(动词,形容词,副词,名次等等)
分词
即为一个句子去断句,比如“小明/很/难过”,“大水沟/很/难/过”。在前一个句子中“难过”是一个词语,表示一种感情;后一个句子中“难过”表示“难以/通过”。我们人很容易去区分句子中的每个词,但是计算机本身是不知道哪两个字是词语的。另外,英文的分词可以通过空格,而中文却需要建立其他规则,这个为中文分词(日文韩文也是)增加了许多难度。
主题识别
即在一堆文章中去识别各个文章的主题。比如输入1000篇文章,通过某种算法可以知道有100篇文章是在讲同一个主题–“体育”。
文本分类
这是分类问题中的一种,只是现在是对“文本”进行分类,文本的特征不是自带与直观的,需要通过文本中的内容(词)来提取。在工业界(其实我不知道为啥要叫工业界,而不是商业界),经常需要去区分文章的情感类别是负面还是正面,或者区分文章是在属于哪个行业等等。
……
传统的NLP处理方法是基于规则的
现代的处理方法更倾向与统计机器学习,比如HMM,CRF,SVM.LDA,CNN等,”规则“是隐含在模型参数里的。
2. 词向量的传统方法介绍
任何一篇文本都是由“词”组成的。所以对大多数对文本问题的分析,其实最终还是归结于对“词”的分析。这里先不讨论如何“分词”的知识,假设我们已经成功地分好了词。要将自然语言的问题来运用机器学习或深度学习的模型来解决的话,就必须要将这些计算机本身不认识的“词”转化为“数字”,即通过“向量”的形式来表示。如此一来,我们就可以通过对向量的各种统计运算来解决问题了。(这个过程也可以看成是给“词”进行“编码”)
那么问题来了,如何对词进行编码才能更有效呢?
2.1 离散表示–One-hot
假设我们语料库中有以下两句话,按空格进行分词:
可以对每个词进行标注,形成词典,这样每个词都有它唯一和独有的编号或索引。
根据每个词在词典中的索引,可以用One-hot的形式如下表示,在一个向量中,只有在这个词所在的索引处的值为1,其他都为0。
这是一个比较传统的词向量表示法,在很多场景中都仍然被使用。使用这种词向量的缺点是,词在词典中的顺序和在句子中的顺序是没有关联的。而且词和词之间也是无法通过这种方式计算出相似性的。
2.2 离散表示–Bag of words
运用One-hot方法,将一整个文档映射成一个向量的时候可以将各个词的词向量表示加和。如下: