数据分析与NLP

1. 判断句子的相似度:
独热编码可以将单词向量化,而如果能够做到句子的向量化,就可以通过判断两个向量的余弦,来评估相似度:余弦越接近1,越相近,相反接近0则相背离
很容易想到,可以将独热编码后的每个单词的向量做为一个元素,去组成句子从而完成句子的向量化,但是问题在于,繁复的编码会造成存储空间的要求大,在一定程度上会影响性能。
我们考虑将独热编码改为数字编码,如此一来,我们可以成功地将语句进行一个不太耗费存储空间的编码和映射。但对于不同的语句,显然可以看出,他们的转换标准不统一,需要将他们映射到同一维度上才可以比较。
我们认为,当一个单词在一句话中反复出现多次时,对于这个句子,这个词可能比较重要。那么,当两个句子的关键词,也就是重复次数多的词都比较一致时,就可以大致判定两个句子语义近似。

image.png
2. TF-IDF算法
如果一个字或者单词在某个语句或者文章中出现的频率高,而在其他文章中很少出现,就可以认为这个字或者单词对该语句或者文章很重要,也可以说这个字或者单词具有很好的区分能力,反之则无关紧要。
TF:(词频)一个词在一句话中出现的频率

TF=某词出现次数/总词汇数

IDF:逆向文件频率,衡量词语在整个语料库中普遍程度的指标
如果在整个语料库中包含某个单词的文章越少,就说明该单词在整个语料库中具有很好的区分能力,这个单词的IDF指标就越大。

IDF=Log(语料库中的文章总数/1+出现该单词的文章数)

最终,TF-IDF的值就是TF*IDF
我们可以利用TF-IDF算法与余弦相似度相结合计算出文本相似度,帮助优化算法。
语义理解

  • 单向预测:一句话中mask掉一部分然后从前向后或是从后向前进行预测
  • 双向预测:为了更完整地理解语句的予以,把从前向后和从后向前两个预测拼接到一起
  • 上下文预测:【全向预测】--Transformer 模型-核心为聚焦机制,对于一个语句可以同时启用多个聚焦点,不必局限于是从前向后还是从后向前
    BERT: pre-training of deep bidirectional transformers for language understanding【联合调节所有层中的上下文来预先训练深度双向表示】
  • 预训练:
    image.png
    BERT 用了两个步骤,试图去正确地训练模型的参数:第一个步骤是把一篇文章中,15% 的词汇遮盖,让模型根据上下文全向地预测被遮盖的词。假如有 1 万篇文章,每篇文章平均有 100 个词汇,随机遮盖 15% 的词汇,模型的任务是正确地预测这 15 万个被遮盖的词汇。通过全向预测被遮盖住的词汇,来初步训练 Transformer 模型的参数。第二个步骤继续训练模型的参数:譬如从上述 1 万篇文章中,挑选 20 万对语句,总共 40 万条语句。挑选语句对的时候,其中 210 万对语句,是连续的两条上下文语句,另外 210 万对语句,不是连续的语句。然后让 Transformer 模型来识别这 20 万对语句,哪些是连续的,哪些不连续。
    特征分析
  • 数据预处理:解决不属于同一量纲、信息冗余、等性特征不能直接使用、存在缺失、信息利用率低等问题
  • 特征选择:
    考虑特征是否发散:如果一个特征不发散-比如说方差接近于0,那么这个样本在这个特征上基本没有差异,所以这个特征对样本的区分也没有什么用
    特征与目标的相关性:与目标相关性高的特征,应当优先选择
  • 特征选择的方法:
    过滤法filter:按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征。
    包装发wrapper:根据目标函数-通常是预测效果评分,每次选择若干特征,或者排除若干特征。
    潜入发embedded:先使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据系数从大到小选择特征。
  • 降维
    由于特征矩阵可能过大,导致计算量大,训练时间长的问题,因此降低特征矩阵维度也是必不可少的。常见的降维方法:主成分分析法(PCA)和线性判别分析(LDA)。
    PCA和LDA有很多的相似点,其本质是要将原始的样本映射到维度更低的样本空间中,但是PCA和LDA的映射目标不一样:PCA是为了让映射后的样本具有最大的发散性;而LDA是为了让映射后的样本有最好的分类性能。所以说PCA是一种无监督的降维方法,而LDA是一种有监督的降维方法。
参考资料

[1][NLP自然语言处理]谷歌BERT模型深度解析
[2]机器学习中,有哪些特征选择的工程方法?

你可能感兴趣的:(数据分析与NLP)