问答系统
1、分类;2、匹配;2、翻译;4、结构化预测;5、马尔可夫决策测过程。
NLP表示方法
one-hot vector:难以发现词之间的关系,维度灾难。
分布式表示:
- 基于矩阵
- 基于神经网络wordembedding
NLP的文本处理
1、文本数据的基本体征提取:
词汇数量、字符数量、平均字长、停用词数量、特殊字符数量、数字数量、大写字母数量
2、文本数据的基本预处理:
小写转换、去除标点符号、去除停用词、去除频现词、去除稀疏词、拼写校正、分词(tokenization)、词干提取(stemming)、词形还原(lemmatization)
3、高级文本处理:
词袋模型、N-grams、TF-IDF(词频-逆文档频率)、词嵌入、情感分析
词袋模型(Bag of Words):词索引(hashcode)放入词袋,会有维度灾难。
N-grams:引入马尔可夫假设(一个词的出现仅与它之前的若干个个词有关)p(S)=p(w1w2⋯wn)=p(w1)p(w2|w1)⋯p(wn|wn−1wn−2)。比如2-gram:P(A,B,C) = P(A)P(B|A)P(C|B)。应用场景:词性标注、垃圾短信分类、分词器、机器翻译和语音识别。稀疏问题:数据平滑(拉普拉斯平滑:分子分母分别做加法) 训练得到维度为N * K和K * N的两个权重矩阵之后,可以选择其中一个作为N个词的K维向量表示。)
TF-IDF:词频-逆文件频率 一个词语在一篇文章中出现次数越多, 同时在所有文档中出现次数越少, 越能够代表该文章。应用:tf-idf(词频-逆文档频率)是一种统计方法,用以评估一个单词在一个文档集合或语料库中的重要程度。经常被用作信息检索、文本挖掘以及用户模型的权重因素。tf-idf的值会随着单词在文档中出现的次数的增加而增大,也会随着单词在语料库中出现的次数的增多而减小。tf-idf是如今最流行的词频加权方案之一。
Word2Vec:原理:拥有差不多上下文的两个单词的意思往往是相近的。 优化:层次softmax和负采样
- Continuous Bag-of-Words(CBOW):通过上下文预测当前词出现的概率;Continuous Skip-gram:根据当前词预测上下文。
- CBOW和skip-gram都可以表示为有输入层、映射层、输出层组成的浅层神经网络。
- 输入层中每个单词是由独热编码表示。所有词均表示一个N维向量,N为词汇表中单词的总数。在向量中,每个单词对应的维度为1,其余维度为0。
- 在映射层中,K个隐含单元的值可以由N维输入向量以及连接输入和隐含单元的NK维权重矩阵计算得到。
- 输出层向量的值可以由隐含层向量(K维),以及连接隐含层和输出层之间的KN维权重矩阵计算得到。输出层也是一个N维向量,每一维与词汇表中的一个单词对应。最后对输出层向量应用Softmax函数,可以得到每个单词的生成概率。训练完成后第一个全连接层的参数就是word embedding。
- 接下来需要训练神经网络权重,使得所有单词的整体生成概率最大化。共有两大参数:从输入层到隐含层的一个维度为NK的权重矩阵,从隐含层到输出层的一个维度为KN的权重矩阵。学习权重可以使用BP算法实现。
情感分析:
CNN&RNN&LSTM
CNN一般会接收一个定长的向量作为输入,然后通过滑动窗口加池化的方法将原来的输入转换为一个固定长度的向量表示。这样做可以捕捉到文本中的一些局部特征,但是两个单词之间的长距离依赖关系难以学习。
RNN能够很好处理文本数据变长并且有序的输入序列。将前面阅读到的有用信息编码到状态变量中去,从而拥有了一定的记忆能力。
RNN有梯度消失和梯度爆炸问题,学习能力有限。LSTM可以对有价值的信息进行长期记忆,有广泛应用
LSTM:输入门控制当前计算的新状态以及以多大程度更新到记忆单元中;遗忘门控制前一步记忆单元中的信息以多大程度被遗忘掉;输出门控制当前的输出有多大程度取决于当前的记忆单元。
seq2seq
eq2seq由encoder和decoder组成。
encoder负责将输入序列压缩成指定长度的向量,这个向量就可以看成是这个序列的语义,这个过程称为编码,如下图,获取语义向量最简单的方式就是直接将最后一个输入的隐状态作为语义向量C。也可以对最后一个隐含状态做一个变换得到语义向量,还可以将输入序列的所有隐含状态做一个变换得到语义变量。
decoder则负责根据语义向量生成指定的序列,这个过程也称为解码。如下图,这是一种简单的seq2seq,最简单的方式是将encoder得到的语义变量作为初始状态输入到decoder的RNN中,得到输出序列。可以看到上一时刻的输出会作为当前时刻的输入,而且其中语义向量C只作为初始状态参与运算,后面的运算都与语义向量C无关。
序列标注问题包括自然语言处理中的分词,词性标注,命名实体识别,关键词抽取,词义角色标注等等。我们只要在做序列标注时给定特定的标签集合,就可以进行序列标注。
文本三种摘要方法
- 抽取式摘要:直接从原文中抽取已有的句子组成摘要。
- 压缩式摘要:抽取并简化原文中的重要句子构成文摘。
- 理解式摘要:改写或重新组织原文内容形成最终文摘。
新词发现原理:
- 新词识别主要包括以下两项任务:
(1)候选新词的提取
由于中文是由单个语素无间隔的组合形成,理论上来说,任意语素之间都有结合形成一个词或单语素成词的可能,因此词语边界的确定就成为一个问题,当然这也是需要中文分词的原因。
(2)候选新词的过滤
对于候选新词,用什么标准判断这是一个符合条件的词,即是候选字符串必须是“新”的且能称为一个“词”
- 参照前人的研究,新词主要可以分为以下三类:
(1)时间词和数量词
(2)命名实体
(3)普通新词
kmeans:
- K-Means主要最重要的缺陷——都和初始值有关:K是事先给定的,这个K值的选定是非常难以估计的。(ISODATA算法通过类的自动合并和分裂,得到较为合理的类型数目K);K-Means算法需要用初始随机种子点来搞,这个随机种子点太重要,不同的随机种子点会有得到完全不同的结果。(K-Means++算法可以用来解决这个问题,其可以有效地选择初始点)
- k-Mean局部收敛,不能处理非球形簇。
聚类怎么聚
让你做投诉里面投诉不是正品率怎么做
隐马尔可夫:隐马尔可夫模型(Hidden Markov Model,HMM)是统计模型,它用来描述一个含有隐含未知参数的马尔可夫过程。其难点是从可观察的参数中确定该过程的隐含参数。然后利用这些参数来作进一步的分析,例如模式识别。
分词算法有哪些?维特比知道吗:
- 基于字符串匹配的分词方法
-
基于理解的分词方法:其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义现象
-
基于统计的分词方法:N-gram模型思想; 隐马尔可夫模型(HMM);
-
维特比算法:维特比算法 (Viterbi algorithm) 是机器学习中应用非常广泛的动态规划算法,在求解隐马尔科夫、条件随机场的预测以及seq2seq模型概率计算等问题中均用到了该算法。
Word2Vec:原理:拥有差不多上下文的两个单词的意思往往是相近的。 优化:层次softmax和负采样
- Continuous Bag-of-Words(CBOW):通过上下文预测当前词出现的概率;Continuous Skip-gram:根据当前词预测上下文。
- CBOW和skip-gram都可以表示为有输入层、映射层、输出层组成的浅层神经网络。
- 输入层中每个单词是由独热编码表示。所有词均表示一个N维向量,N为词汇表中单词的总数。在向量中,每个单词对应的维度为1,其余维度为0。
- 在映射层中,K个隐含单元的值可以由N维输入向量以及连接输入和隐含单元的NK维权重矩阵计算得到。
- 输出层向量的值可以由隐含层向量(K维),以及连接隐含层和输出层之间的KN维权重矩阵计算得到。输出层也是一个N维向量,每一维与词汇表中的一个单词对应。最后对输出层向量应用Softmax函数,可以得到每个单词的生成概率。训练完成后第一个全连接层的参数就是word embedding。
- 接下来需要训练神经网络权重,使得所有单词的整体生成概率最大化。共有两大参数:从输入层到隐含层的一个维度为NK的权重矩阵,从隐含层到输出层的一个维度为KN的权重矩阵。学习权重可以使用BP算法实现。
快速排序,多种排序对比
LSTM 和GRU的区别:GRU作为LSTM的一种变体,将忘记门和输入门合成了一个单一的更新门。同样还混合了细胞状态和隐藏状态,加诸其他一些改动。最终的模型比标准的 LSTM 模型要简单,也是非常流行的变体。
一亿条文本,新的语句,判断最相似语句(哈夫曼编码判断,树结构解决)
如何比较文本的相似度?(协同过滤相似度,余弦相似度,tf-idf相似度,深度学习词向量计算)
GBDT:https://www.cnblogs.com/pinard/p/6140514.html
GBDT和XGboost区别
- GBDT是以CART为基分类器,但XGBoost在此基础上还支持线性分类器,此时XGBoost相当于带和正则化项的Logistics回归(分类问题)或者线性回归(回归问题)
- XGBoost在目标函数里加入了正则项,用于控制模型的复杂度。正则项里包含了树的叶子节点个数和每棵树叶子节点上面输出分数的模平方。从偏差方差权衡的角度来讲,正则项降低了模型的variance,使学习出来的模型更加简单,防止过拟合
- 传统的GBDT在优化时只用到一阶导数,XGBoost则对目标函数进行了二阶泰勒展开,同时用到了一阶和二阶导数。(顺便提一下,XGBoost工具支持自定义代价函数,只要函数可一阶和二阶求导)