NLP分类方法历史
词袋模型(1954)
相关文章:词袋模型简要概述和发展史
使用向量表示文章/句子,向量中每一个维度表示一个单词。
One-hot
性别特征:[“男”,“女”],(这里只有两个特征,所以N=2):
男 => 10
女 => 01
祖国特征:[“中国”,"美国,“法国”](这里N=3):
中国 => 100
美国 => 010
法国 => 001
运动特征:[“足球”,“篮球”,“羽毛球”,“乒乓球”](这里N=4):
足球 => 1000
篮球 => 0100
羽毛球 => 0010
乒乓球 => 0001
所以,当一个样本为[“男”,“中国”,“乒乓球”]的时候,完整的特征数字化的结果为:
[1,0,1,0,0,0,0,0,1]
TF-IDF
term frequency-inverse document frequency(词频-逆向文件频率 )
TF:单词出现次数 / 总单词数
IDF:单词t在文档d上的特殊性 log(文章总数 / 包含单词t的文章总数 + 1)
N-gram
N-Gram,N 值一般取2或者3。
以 N = 2 为例对字符串Gorbachev和Gorbechyov进行分段,可得如下结果(我们用下画线标出了其中的公共子串)。
两个字符串之间的距离是8 + 9 − 2 × 4 = 9
(8,9个分段 - 2 * 4个相同的分段)
显然,字符串之间的距离越小,它们就越接近。当两个字符串完全相等的时候,它们之间的距离就是0。
主题模型(1998)
词袋模型最大的不足是无法解决近义词和一词多义问题
主题模型:以非监督学习的方式对文集的隐含语义结构进行聚类的统计模型。
主题:具有相同意义单词的簇。
一个文本含有若干个主题,主题数远远小于单词个数且主题数为超参数。如果两个文本的主题相似,那么文本语义就应该相似。主题可以由若干个语义相似的单词表示,同义词(如“快乐”和“高兴”)可以表示同一个主题,而多义词如(“苹果”,苹果公司或者水果)可以表示不同的主题。
LSA
潜在语义分析LSA/LSI(Latent Semantic Analysis/Indexing)
假设一共有n个文本 ,n个文本中共出现m个单词,假设所有文本共含有k个主题。
行向量表示有m个单词,列向量表示有k个主题。
构建单词 - 主题矩阵。
行向量表示有k个主题,列向量表示有n个文章。
构建主题 - 文章矩阵。
利用上述两个矩阵T和Y的乘积可以构建单词 - 文章矩阵
pLSA
和LSA最大的不同是pLSA是基于概率的模型。
假设一共有m个单词,n个文本,k个主题。
P(d)表示生成文本d的概率,P(z|d)表示文本d生成主题z的概率,P(w|z)表示主题z生成单词w的概率。
根据上述三个概率,得出一个单词在一个文本里出现的次数。其中利用了极大似然估计。
LDA
LDA是pLSA的拓展,于2002年提出,为了解决pLSA的过拟合问题。
不再使用极大似然估计得到概率,采用了贝叶斯模型。
词嵌入(word embedding)
将每个单词用一个向量表示,向量之间的余弦值表示单词之间的相似度。此外,还可以根据向量做类比和推理,使得机器可以“理解”单词。
word2vec(2013)
其核心思想就是基于上下文,先用向量代表各个词,利用一个预测目标函数学习词向量的参数。Word2Vec 的网络主体是一种单隐层前馈神经网络,网络的输入和输出均为词向量。
Skip-gram
将词本身作为输入,将词所在上下文中的词作为输出。,也就是说,给出一个词,希望预测可能出现的上下文的词,2-gram比较常用。
Cbow
CBOW将一个词所在的上下文中的词作为输入,而那个词本身作为输出,也就是说,看到一个上下文,希望大概能猜出这个词和它的意思。
Glove
有效学习词向量的算法,结合了LSA的全局统计与word2vec中的基于局部语境学习。