前言:BERT模型的出现,使NLP技术进入新的时代。由此机会窥探NLP技术全貌,学习了解NLP相关技术与算法模型。
一、基本概念
词向量(Word Embedding):
词向量主要用于将自然语言中的词符号数学化,这样才能作为机器学习问题的输入。
数学化表示词的方式很多,最简单的有独热编码,即“足球”=[0,0,1,0,0,0,0,…],“篮球”=[0,0,0,0,0,1,0,…],向量的长度为总词数。显然,独热编码有以下缺点:1.可能导致维数过大,对深度学习来说复杂度过高。2.两个词的相似程度无法表示。
词向量与独热编码不同,一般是以下形式:[0.2333,0.4324,0.6666,-0.9527,….],维数以50维和100维比较常见。词向量解决了维度过大的问题,且两个词的相似度可以用欧几里得距离,余弦相似度等方法求得。
语言模型:
语言模型形式化的描述就是,给定一个字符串,看它是自然语言的概率P(w1,w2,…,wt),其中wi表示这句话中的各个词。有个很简单的推论,(语言模型就是用来计算一个句子的概率的模型):
P(w1,w2,…,wt)=P(w1)×P(w2|w1)×P(w3|w1,w2)×…×P(wt|w1,w2,…,wt−1)(条件概率公式)
而事实上,常用的语言模型都是在近似地求P(wt|w1,w2,…,wt-1),语言模型后续介绍,谷歌的BERT模型也属于语言模型(预训练类)。
分类衡量指标:
以信息检索为例,总共50篇文献,其中20篇是我感兴趣的目标文献。输入特定检索条件返回10篇文献,其中5篇是我要的文献。则
精确率(Precision) = 查出的文章中有多少是正确目标 = 5/10
召回率(Recall) = 总共正确的文章中有多少被正确查出 = 5/20
两种值都是我们想要提高的,但不能两全其美:想要精确率为1,最好的结果就是一篇文献也没搜到,返回的结果肯定没有分类错误,但这样也没有意义;想要召回率为1,最好的情况就是50篇 返回,这样搜索本身也失去了意义。
定义F1分数为精确率与召回率的调和平均数:
这样可以避免出现精确率和召回率一个为1一个为0的极端情况出现
还可以根据对精确率/召回率的不同偏好设置F_beta分数
另一个角度来看这个问题。假设我们现在要判断一个用户是好人还是坏人,定义:TP(True Positive)为预测正确的好人的个数,FP(False