学习纲要
0. 简单总结:
在这篇文章开始之前,我们从2020/11/17到2020/12/9这段时间进行了一部分知识的学习,详细记录在《自然语言处理学习与实战(基础篇)》中。下面在此简单进行一个提取:
TF向量(词项频率向量)
TF-IDF向量(词项频率-逆文档频率向量)
用LDA(线性判别分析)对TF-IDF矩阵(词项-文档矩阵)进行降维
用LSA(隐形语义分析)/PCA(主成分分析)对TF-IDF矩阵进行降维
1. 学习进度/内容记录:
2020/12/10:
项目实践:利用主题向量分析蛋白质的特征并分类
- 数据集:原始的数据集是一个包含525+550个蛋白质的TXT文件,其中的蛋白质被分为两类,分别是具有DNA结合特性的蛋白质以及不具有DNA结合特性的蛋白质;对于单个蛋白质,文档给出了其氨基酸序列,例如我们截取文档中的一小部分:
>1DMLG
MTDSPGGVAPASPVEDASDASLGQPEEGAPCQVVLQGAELNGILQAFAPLRTSLLDSLLVMGDRGILIHNTIFGEQVFLPLEHSQFSRYRWRGPTAAFLSLVDQKRSLLSVFRANQYPDLRRVELAITGQAPFRTLVQRIWTTTSDGEAVELASETLMKRELTSFVVLVPQGTPDVQLRLTRPQLTKVLNATGADSATPTTFELGVNGKFSVFTTSTCVTFAAREEGVSSSTSTQVQILSNALTKAGQAAANAKTVYGENTHRTFSVVVDDCSMRAVLRRLQVGGGTLKFFLTTPVPSLCVTATGPNAVSAVFLLKPQK
>1EE8B
PELPEVETTRRRLRPLVLGQTLRQVVHRDPARYRNTALAEGRRILEVDRRGKFLLFALEGGVELVAHLGMTGGFRLEPTPHTRAALVLEGRTLYFHDPRRFGRLFGVRRGDYREIPLLLRLGPEPLSEAF
AFPGFFRGLKESARPLKALLLDQRLAAGVGNIYADEALFRARLSPFRPARSLTEEEARRLYRALREVLAEAVELGGSTLSDQSYRQPDGLPGGFQTRHAVYGREGLPCPACGRPVERRVVAGRGTHFCPTCQGEGP
可以看到,对于单个蛋白质,其氨基酸序列是比较复杂的。
- 过程简单介绍:我们可以将文本文件中的两类蛋白质看作是具有不同主题的两个文档集合,我们需要做的只是按照合适的氨基酸数量对单个蛋白质的序列进行“分词”过程,然后只需求出TF-IDF向量,进而构成TF-IDF矩阵,之后对其应用PCA(主成分分析)进行降维,即可尝试提取出两类蛋白质的特征。在实际操作过程中,我们发现选择单个氨基酸作为分词基准,所得TF-IDF向量维度较小,而选择三个氨基酸作为分词基准,所得TF-IDF向量维度又较大(大约为8000),所以,我们选择了两个氨基酸的组合作为一个“词条”,同时需要注意的是,为了获得更多的信息,我们的分词过程是这样的形式:
“12345” →“12”,“23”,“34”,“45”
- 具体实现:《使用Python识别蛋白质特征》
效果展示:
为了方便可视化,我们选择二维作为PCA生成的主题向量维度,并且排除了少数几个异常值的影响,得到的结果如下:
可以看到,即使只使用二维主题向量,我们的蛋白质就已经被明显的分为两个类别,但在具体使用这些主题向量或者特征向量的时候,我们应该选择更高的维度数,通过更多的维度实现更好的区分。
2020/12/12
词向量推理(Word2vec)算法简介:
之前学习的PCA算法可以分析文档的主题、应用在文档分类、搜索等任务上,但我们想要计算更精确的主题——词的主题,并使得这些词的主题向量具有更好的语义信息、可以被更加方便的计算。
词向量推理算法通过神经网络训练,基于大型未标记文本语料库来进行无监督学习,探索目标词附近的共现词。使用Word2vec算法得到的结果中,语义相近的词具有更接近的距离(例如余弦距离),并且这些词向量在相加减之后所得到的结果,与我们在实际考虑这些词的语义并将其语义进行类似于加减运算的操作之后所得的结果具有同一性,这使得我们可以使用Word2vec算法将语义的推理过程数学化。
总而言之,Word2vec词向量能够通过目标词与共现词来捕捉更加丰富的目标词含义,不同于之前对于文档主题的考察,这次的学习过程对词本身意义的考察具有更加精确/精细的要求,其特点可概括为
- 词向量将词的语义表示为训练语料库中上下文中的向量;
- 词向量可以提供更为通用的向量代数“推理”词的含义;
Word2vec的训练有如下两种方法:
- 将目标词作为输入、共现词作为输出的skip-gram方法
- 将共现词作为输入、目标词作为输出的CBOW(连续词袋)方法
词向量表示的计算所需语料库与计算开销比较大,但通常我们可以使用Google或者Facebook提供的训练好的词向量模型。
词向量推理——skip-gram方法简单介绍:
skip-gram训练方法用来预测目标词周围的共现词,也就是输入词周围窗口内的词,其网络结构为包含n个神经元的隐藏层、M维的输入与输出层,其中M是模型的词汇表中词的总数;输出层的激活函数是分类问题中常用的softmax函数。
稍微具体一点,这个三层神经网络的输入为一个独热向量,其中目标词的值为1,经过隐藏层与输出层以及softmax函数的作用,我们希望输出结果中概率值较大的节点为目标词的共现词。实际上,输出与输入的结构很相似,也可以看作一个独热向量,因为大部分词槽的概率值都在0的附近,只有目标词周围的共现词的值在1的附近。
softmax激活函数:
K 为 输 出 节 点 个 数 , 则 s o f t m a x 表 示 为 : K为输出节点个数,则softmax表示为: K为输出节点个数,则softmax表示为:
σ ( z ) j = e z j ∑ k = 1 K e z k \sigma (z)_j=\dfrac{e^{z_j}}{\sum_{k=1}^{K}e^{z_k}}