有谁能介绍一下Fudannlp?

有谁能介绍一下Fudannlp?,第1张

FudanNLP主要是为中文自然语言处理而开发的工具包,也包含为实现这些任务的机器学习算碧族法和数据集。本工具包早毕及其包含数据集使用LGPL3.0许可证。开发语言为Java。主要功能有:1. 文本分类 新闻聚类;2. 中文分词 词性标注 实体名识别 关陆慧芹键词抽取 依存句法分析 时间短语识别;3. 结构化学习 在线学习 层次分类 聚类 精确推理。希望能帮到你,谢谢!

符号统一:X即样本矩阵

LSI:即SVD(奇异值)分解,X≈UΣVT(VT代表V的转置),设X为n×m矩阵,共m个文档,每个文档由n个词构成,而Σ为s×s矩阵,代表s个主题,V为m×s,银搭每行代表每个文档分别和每个主题的相似度。通常文本分类用到V矩阵。U矩阵即n×s,每行代表每个词和每个主题的相似度。U和V分别成为左、右奇异矩阵。PS:我们知道PCA是对XTX求特征值和特征向量,设X=UΣVT,由于U和V都是正交阵,则XTX=VΣ²VT,即右奇异矩阵就是PCA分解后的特征矩阵,XXT→左奇异矩阵也是同理。

Word2Vec: 最常用的自然语言的数字化表达,简而言之就是若共100篇文章,vocabulary_size=10000,那么每个词都可以用10000维的one-hot向量表达,而经过word2vec的embedding后,每个词都可以用例如300维向量表示,不仅降了维度,而且相似词义的词将拥有更接近的向量表示。word2vec分为两种模型,CBOW - 根据上下文预测词语,SkipGram - 根据词语预测上下文。

CBOW:对C个上下文的词语每个词用C组不同的权重W全连接映射到一个N维的隐层上,得到C个N维隐层值,取平均,再对这个平均的N维隐层用权重W'的全连接+softmax对V个词语赋予概率值,V即vocabulary_sizee。W和W'分别是V×N和N×V的矩阵(全连接↔左乘权重矩阵的转置),假设某词word是Vocabulary的第j个词,那么W的第j行称为word的输入词向量,W'的第j列向量为word的输出词向量。 点此 查看原论文,不过我没看懂所谓的word embedding最终输出的到底是哪个向量,输入、输出、还是隐层。

SkipGram: CBOW的反向 *** 作。

两者都是用BP算法更新。

LSTM:假设输入一句话长度10,每个词用32维向量展示,则LSTM将这个[10, 32]的向量转化为[k]的输出(hidden state),k可以是小于32的任意整数。也可输出每个time_step的输出([10,32]),和最后的cell state。并可对输出的k维向量加一个全连接降维或再加一个softmax实现分类。LSTM和RNN的区别在于有门控制,主要是通过忘记门来保留长期记忆,避免梯度消失。

Seq2Seq:Seq2Seq本来有着非常广阔的定义,但通常是指一个基于神经网络与 LSTM 的 经典seq2seq模型 ,后续流行的Transformer、BERT、GPT3等都是基于此。大致功能是实现机器翻译,通过encoder将原文转换为一个理解的矩阵后,用decoder一词一词地根据这个理解输出目标语言对应的句子。结构大致是先将原文每个词embedding后输入一个名为encoder的LSTM,并将其输出(即LSTM的最后一个cell的h和c)作为对原文的理解。然后一个名为decoder的LSTM会将这个理解转化为答案,decoder用BOS代表句子开始,EOS代表结束。训练时,例如将“我爱你”翻译为“I love you”,第一个输入是BOS,embedding后经过cell(用之前得到的h和c初始化)后用softmax激活得到第一个输出“I”,“I”作为第二个输入再次embedding经过cell后softmax激活得到第二个输出“love”,同理得到第三个输出“you”,最后得到EOS。通过BP梯度下降训练完成后,以同样的方式完成机器翻译的预测任务。

Attention:最早用于Seq2Seq模型。例如要将“我爱你”氏搏镇翻译为“I love you”时,首先根据encoder获得对原文每个词的理解,即encoder_output。decoder每次输出时,对当前输入找一个合适的attention分布,即权重(所谓更注意的地方,即权重更高的地方),该权重点乘encoder_output后求和即经过注意力机制后当前的输入。简而言之,在decoder每次输出时,会根据输歼粗入对encoder_output给予一个不同的attention分布。( 此段话尚未验证,需读过论文后修正 )

Self-Attention: 第一次出现在Transformer,由于Transformer没有使用传统s2s所用的RNN或LSTM,所以自称Attention is all you need (You don't need RNN or LSTM)。Self-Attention和Attention的区别有很多,首先对它而言可以不需要decoder直接在encoder内完成自注意力,其次它没有关注序列信息,因此需要额外先进行Positional Encoding,添加序列信息。它的重点在于在关注一个词时,可以将它和上下文的其他词联系到一起计算,对关联较大的词赋予更多的关注(权重)。计算方法是通过三个不同的权重矩阵来乘输入X,获得Q K V三个矩阵,即将原文X拆分为了3部分:问题、目录、内容,通过QKT除以一个常数(原论文是根号dk,这个数越大则概率分布越平均,越小则越极端,也会导致梯度消失)后softmax,来找到和Q对应的K,再通过这个K找到相应的V,即代表此时的关注的内容。

Transformer( 论文 及 较好的一篇介绍 ): 虽然也有encoder和decoder,但后续的发展改进通常只用encoder,而encoder的主要部分是self-attention。整体结构是6个encoder层接6个decoder层。每个encoder层大致结构是输入X经Positional Encoding后,经self-attention加工和自身残差连接后相加并norm(所谓残差连接相当于给了X两个通道,一个是直接输入,一个是经过attention输入),随后再通过前向网络分别对每个输出全连接处理后(一方面避免直接concat维度太大,一方面可以并行计算)与自身残差相加并norm。decoder大致相同,就在中间多了一个Mask的Self Attention来接受encoder的输入,mask是因为decoder按顺序输出,需要把后面的mask掉。

因为可被用来训练的训练数据较少,因此,有监督的自然语言阅读理解很难进行。此文中提出方法可创建有监督的阅读理解数据纤枣集。通过简单的entity detection和anonymisation algorithms,summary和paraphrase sentences与它们相关的文章一起被转换成context-query-answer的形式。

此文章要纳模做的是提供一个语料库,用于评估模型阅读理解单个文档的能力,而不是world knowledge或者co-occurrence。例如以下完形填空:a) The hi-tech bra that helps you beat breast Xb) Could Saccharin help beat X ?c) Can fish oils help fight prostate X ? ngram模型不用考虑文章背景很容易得出X=cancer,因为这在语库中是很频繁的cured entity。

为了防止此问题的发生,我们创建了以下步骤: a) use a coreference system to establish coreferents in each data pointb) replace all entities with abstract entity markers according to coreferencec) randomly permute these entity markers whenever a data point is loaded.

介绍三种模型,模型架构如下图:

将文档一次一个字地提供给DeepLSTM编码器,在分隔符之后我们还将问题提供给编码器。也可以先处理问题然后处理文档。 该模型将每个文档问题对处理为单个长序列。 给定嵌入式文档和查询,网络预测文档中的哪个词回答问题毁茄拆。模型具体如下图:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12208314.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存