NLP-基础知识问题汇总

问答题汇总


作业题1: 画出Transformer的结构图,

  • 1: 按照你的理解讲一下原理
    transformer是seq2seq的结构,通过输入一组源数据和与之匹配对应的目标数据,通过多头注意力机制,前馈全联阶层等结构,对模型进行训练。
  • 2: 为什么self-attention可以替代seq2seq?
    解码端能有效聚焦编码器的输出结果,改善编码器输出是单一定长张量;编码器端相当于是个特征提取的过程;

作业题2: 机器翻译中的Attention机制中, 如何理解Q, K, V? 分别代表什么, 如何起作用?

Attention: 给出数据, 关注里面的关键信息配置不同权重得出最终比较好的结果
Q: 最初的文本,也就是embedding后的文本向量
K:文本的关键信息
V: 经过处理后精炼出来的文本信息


3.fasttext:

3.1谈一谈对fasttext的认识, 能做什么? 原理是什么? 相比于word2vec有什么优势?

  • fasttext是NLP领域常用的工具包,可以进行文本分类和训练词向量;

  • 原理:

    1. fastText是一种基于skip-gram模型的新扩展,它会使用subword的信息,将每个词被表示成一个字符级n-gram词袋(a bag of character n-grams)。每个向量表示与每个字符级n-gram相关联,而词(word)则可以看成是这些n-gram向量表示的求和(sum)。
      1. n-gram:按照字节顺序进行大小为n的窗口滑动操作,形成n长度字节片段的序列;
      2. fasttext模型包括输入层,隐含层,输出层;输入是多个经向量表示的单词输出是分类任务,隐含层是对多个词向量的叠加平均
      3. 多层softmax线性多分类
  • 优势:

    • 使用词embedding而非词本身作为特征;
    • 字符的n-gram特征引入对分类效果会有些提升
    • word2vec是基于词汇的,每个单词生成一个向量,忽视单词的形态特征;fasttext采用的n-gram是基于字符来生成向量的,
      1. 对于低频词汇生成的词汇向量效果会更好,n-gram可以在不同的词语之间共享;
      2. 训练词库之外的单词,仍然可以构建它们的词向量
    • 训练速度快于word2vec

3.2: 为什么要用fasttext做文本分类? 是因为训练快还是预测快? 还有什么其他原因?

  1. 使用方便
  2. 训练速度和预测数度都很快
  3. 对于低频词汇生成的词汇向量效果会更好,n-gram可以在不同的词语之间共享

4.词向量

  • 1: 词向量都有哪些表示方法?
  • 2: 经典的方法 or 你自己理解的方法是如何训练词向量的? (尽量详细描述, 甚至于需要哪些超参数的设置, 以及设置多少, 为什么这样设置?)
  • 3: 这种训练是有监督还是无监督, 如何理解?
  • 4: 训练好的词向量如何评价? (大胆的说出你的想法)
  • 5: 你的方法可以解决一词多义的问题吗? (苹果, 杯具), 如果能为什么? 如果不能有何改进方法?

5. 神经网络的训练中如何判断过拟合?如果防止过拟合, 都有哪些办法?请详细说明。

1.神经网络训练结果,在训练集上效果比较好,准确率高,损失小,但是在验证集上效果比较差,这时就是过拟合;
2. 解决方法:
(1)进行数据增强:通过对训练数据进行增强处理,NLP上有回译,cv上有图像旋转等
(2)正则化:由于模型过拟合可能是模型过于复杂,在模型训练的时候,添加正则化惩罚项;
L1正则化:L2正则化
(3)dropout:通过让部分神经元失活,减弱神经元之间的协同作用,通过限制神经元活性,减弱神经 元之间的拟合程度
(4)早停:观察在验证集上的训练结果,当在验证集上结果不再下降,提前中止模型训练
(5)丰富样本,提高样本数量


6。CRF和HMM的对比

  • 1: 各自有哪些假设?

    • HMM:齐次马尔科夫链假设:任意状态的隐藏状态只依赖于它前一个隐藏状态

      ​ 观测独立性假设:任意时刻的观测状态只依赖于当前时刻的隐藏状态

    • CRF: 数据独立同分布,齐次马尔科夫假设

      ​ 条件概率,词性序列中,部分词性出现次数为1,假定动词或者副词后不会再次出现 动词或者副词

  • 2: 两者有什么区别?

    • HMM是生成式,HMM能使用的前提是基于两个假设;HMM模型中当前输出只依赖于当前标签,当前标签只依赖于上一个标签
    • CRF是判别式, CRF也采用了齐次马尔科夫假设,但是CRF采用了全局特征,把观测序列当作整体
  • 3: 描述一下CRF在预测过程中用到了哪个算法?以及具体的算法过程?

    • 维特比算法:
      • 1。初始化局部状态
      • 2。动态规划递推后续时刻的局部状态
      • 3。计算目标时刻最大的隐藏状态序列出现的概率,
      • 4。 利用局部状态回shuo
        维特比

7。说一说对自动超参数调优方法的理解。

  • 网格搜索: 网格搜索是超参数调优中的一个方法。根据经验确定一系列超参数的值,通过对不同超参数设定不同的组合,获得不同的结果;

    优点:搜索效果好

    缺点:速度慢, 需要较大的算力和空间

  • 随机搜索:搜索并尝试所有参数值,从指定的分布中采样固定数量的参数设置

    优点:速度快些

    缺点:结果最优无法保证

  • 贝叶斯优化:

    给定优化的目标函数(广义的函数,只需指定输入和输出即可,无需知道内部结构以及数学性质),通过不断地添加样本点来更新目标函数的后验分布(高斯过程,直到后验分布基本贴合于真实分布。简单的说,就是考虑了上一次参数的信息,从而更好的调整当前的参数。

    与网格搜索与随机搜索相比:

    1. 贝叶斯调参采用高斯过程,考虑之前的参数信息,不断地更新先验;网格搜索未考虑之前的参数信息。
    2. 贝叶斯调参迭代次数少,速度快;网格搜索速度慢,参数多时易导致维度爆炸。
    3. 贝叶斯调参针对非凸问题依然稳健;网格搜索针对非凸问题易得到局部优最。

8. 说一说你个人在某个模型训练过程中遇到的难题,如何解决和调优的?

模型训练参数维度不匹配,解决:通过进行模型从输入到输出进行维度分析,查找代码出错的地方。


9.如何设计一个"猜你喜欢"的推荐系统?

  • NLP-基础知识问题汇总_第1张图片
  • 推荐系统的模块如下

    1. 用户行为日志:记录用户行为,属于数据统计

    2. 数据ETL-1:将用户日志转换为推荐算法所需要的数据格式。对原始的用户行为等数据进行清洗、加工,如字段、属性、格式化等,作为下一步推荐算法的输入。

    3. 推荐算法:是个性化推荐最主要的部分,包括通过用户行为计算相关内容以及推荐结果等。

    4. 数据ETL-2: 将推荐算法得到的结果进一步加工为存储模块的输入数据。对推荐算法产生的结果进行清洗、格式化等,作为下一步存储模块的输入。

    5. 用户画像存储:存储用户的偏好以及行为数据,如对内容关键字的偏好、点击过哪些内容等。

      • 存储用户的偏好以及行为数据等信息。对于偏好,采用标签量化来表示,是一种随着时间衰减的值。对于用户画像,是批量写入、实时读取,所以存储要着重考虑读的性能。可以选择使用Redis集群作为技术方案,能够最大满足读的性能,缺点是Redis的成本昂贵且不支持auto index。也可使用Hbase作为存储,使用ElasricSearch构建二级索引,以应对根据多种维度聚集用户的需求(比如过滤某一个标签下的所有用户)。
    6. 推荐结果存储:存储各种推荐算法产生的推荐结果,可以分为两部分:{用户 : itemList}推荐结果,为用户推荐的内容列表;{item : itemList}推荐结果,与item相关的内容列表。

      • 对各种推荐算法计算出的推荐结果的存储。存储空间要求大,格式复杂。对于存储的容量和读写性能要求都比较高。可以选择使用Redis集群作为此部分的存储方案。
    7. 服务调用模块:整合推荐结构,对外提供提供推荐的调用接口。

  • 用户行为日志接入:

    NLP-基础知识问题汇总_第2张图片

    在线业务系统的日志接入数据高速公路,再由数据高速公路迅速运转到离线数据处理平台和在线流计算平台;离线数据处理平台周期性地以批处理方式加工过去一段时间的数据,得到人群标签和其他模型参数,存放在高速缓存中,供在线业务系统使用,与此同时,在线流计算平台实时对线上的日志数据做处理,对离线计算出的数据进行补充、修正等;在线业务系统综合离线特征和在线特征使用一定的逻辑得到输出供业务使用,产生的日志流入数据高速公路。


10.说一说最近看过的一篇论文谈谈从论文中得到的收获, 以及从论文给你的启发是否可以应用到你曾经做过的项目中? (如果最近没看标准论文, 可以用看博客, 知乎的帖子, 学习了新知识来代替)

fasttext工具

  • 以前的认知:

    • 作用:文本分类, 训练词向量

    • 使用方法:分类时调用工具包中的train_supervised方法,指定符合要求的输入文本即可

      可以通过设定学习率lr, 批次大小epoch, wordngram, softmax层的结构loss,

      也可以通过autotuneValidationFile实现参数自动调优

      训练词向量: 调用train_unsupervised方法,通过输入词嵌入维度dim, 训练模式cbow或者skipgram选择不同的模式,循环次数和学习率等超参数进行

  • 最近作业时看了fasttext有关的内容,对该工具有了更多的认识

    模型架构:与CBOW相似,不同的时fasttext预测的是标签,而cbow预测的是中间词,fastText模型架构:其中x1,x2,…,xN−1,xN表示一个文本中的n-gram向量,每个特征是词向量的平均值。这和前文中提到的cbow相似,cbow用上下文去预测中心词,而此处用全部的n-gram去预测指定类别

    层次softmax: 在标准的softmax中,计算一个类别的softmax概率时,我们需要对所有类别概率做归一化,在这类别很大情况下非常耗时,因此提出了分层softmax(Hierarchical Softmax),思想是根据类别的频率构造霍夫曼树来代替标准softmax,通过分层softmax可以将复杂度从N降低到logN,
    n-gram特征:n-gram是基于语言模型的算法,基本思想是将文本内容按照字节顺序进行大小为N的窗口滑动操作,最终形成窗口为N的字节片段序列。

    1.为罕见的单词生成更好的单词向量:根据上面的字符级别的n-gram来说,即是这个单词出现的次数少,但是组成单词的字符和其他单词有共享的部分,因此这一点可以优化生成的单词向量
    2、在词汇单词中,即使单词没有出现在训练语料库中,仍然可以从字符级n-gram中构造单词的词向量
    3、n-gram可以让模型学习到局部单词顺序的部分信息, 如果不考虑n-gram则便是取每个单词,这样无 法考虑到词序所包含的信息,即也可理解为上下文信息,因此通过n-gram的方式关联相邻的几个词, 这样会让模型在训练的时候保持词序信息



11.RNN相关

  • 1: 为什么RNN会比CNN更容易出现梯度消失或爆炸, 有哪些改进方案?

    • 在RNN网络中,循环神经网络在很长的时间序列中,每个时间步采用相同的操作来构建非常深的计算,并且模型参数共享,每个时间步的参数都是一样的,当参数中有较大或者较小的值时,经过比较多次的训练后,更容易产生梯度消失或者爆炸;

      而cnn中每层参数矩阵W是不同的,而且初始化时可设定参数之间独立同分布,可以相互抵消

    • 改进方案:通过改进RNN结构,采用LSTM结构

      ​ 进行梯度裁减:设定阈值,当梯度小于阈值时,更新的梯度为阈值

  • 2: RNN可以采用Relu激活函数吗?为什么?

    • 可以
  • 3: 画出LSTM的单元结构图, 以及其中涉及到的计算公式?

  • 4: 相比于RNN处理序列数据, 我们可以用CNN处理同样的文本吗?如何实施? 有哪些需要特殊处理的地方?请尽可能详细的给出说明或图示.(不必要写代码)

    • 1。 输入:需要对输入进行处理;文本输入是一个一位向量,我们需要将输入转换成二维向量用于 cnn输入,这点通过embedding可以实现
    • 2。 对于输入长度,文本没有固定的长度,而且不能随意对长度进行裁减,否则会引起语义缺失;所以要对输入做处理
      • 可以使用RNN的输出作为cnn的输入
    • 3。需要对卷积核做处理。CNN中卷积核一般采用方形,在文本处理中,可以采用条形卷积
    • NLP-基础知识问题汇总_第3张图片
  • 输入层

    输入层是句子中的词语对应的wordvector依次(从上到下)排列的矩阵,假设句子有 n 个词,vector的维数为 k ,那么这个矩阵就是 n × k 的(在CNN中可以看作一副高度为n、宽度为k的图像)。

  • 第一层卷积层

    输入层通过卷积操作得到若干个Feature Map,卷积窗口的大小为 h ×k ,其中 h 表示纵向词语的个数,而 k 表示word vector的维数。通过这样一个大型的卷积窗口,将得到若干个列数为1的Feature Map

  • 池化层

    接下来的池化层,文中用了一种称为Max-over-timePooling的方法。这种方法就是简单地从之前一维的Feature Map中提出最大的值,文中解释最大值代表着最重要的信号。可以看出,这种Pooling方式可以解决可变长度的句子输入问题(因为不管Feature Map中有多少个值,只需要提取其中的最大值)。最终池化层的输出为各个Feature Map的最大值们,即一个一维的向量。

  • 全连接+softmax层

    池化层的一维向量的输出通过全连接的方式,连接一个Softmax层,Softmax层可根据任务的需要设置(通常反映着最终类别上的概率分布)



12.神经网络的训练中如何判断过拟合?如果防止过拟合, 都有哪些办法?请详细说明。

1.神经网络训练结果,在训练集上效果比较好,准确率高,损失小,但是在验证集上效果比较差,这时就是过拟合;
2. 解决方法:
(1)进行数据增强:通过对训练数据进行增强处理,NLP上有回译,cv上有图像旋转等
(2)正则化:由于模型过拟合可能是模型过于复杂,在模型训练的时候,添加正则化惩罚项;
L1正则化:L2正则化
(3)dropout:通过让部分神经元失活,减弱神经元之间的协同作用,通过限制神经元活性,减弱神经 元之间的拟合程度
(4)早停:观察在验证集上的训练结果,当在验证集上结果不再下降,提前中止模型训练
(5)丰富样本,提高样本数量

14. CRF和HMM的对比

  • 1: 各自有哪些假设?

    • HMM:齐次马尔科夫链假设:任意状态的隐藏状态只依赖于它前一个隐藏状态

      ​ 观测独立性假设:任意时刻的观测状态只依赖于当前时刻的隐藏状态

    • CRF: 数据独立同分布,齐次马尔科夫假设

      ​ 条件概率,词性序列中,部分词性出现次数为1,假定动词或者副词后不会再次出现 动词或者副词

  • 2: 两者有什么区别?

    • HMM是生成式,HMM能使用的前提是基于两个假设;HMM模型中当前输出只依赖于当前标签,当前标签只依赖于上一个标签
    • CRF是判别式, CRF也采用了齐次马尔科夫假设,但是CRF采用了全局特征,把观测序列当作整体
  • 3: 描述一下CRF在预测过程中用到了哪个算法?以及具体的算法过程?

    • 维特比算法:
      • 1。初始化局部状态
      • 2。动态规划递推后续时刻的局部状态
      • 3。计算目标时刻最大的隐藏状态序列出现的概率,
      • 4。 利用局部状态回shuo

15.查阅关于BERT模型的相关文档知识, 记录一下你的收获, 可以将文章的链接和重要的点写下来, 以及你的收获。

  • 参考答案: http://52.83.69.131:8989有详细解答

16. bert相关(重要)

16.1: 详述Bert模型的结构特点。

  1. embedding层由三层embedding层组合而成,三个层分别是
    TokenEmbedding, SegmentEmbedding, PositionEmbedding
    NLP-基础知识问题汇总_第4张图片
  2. 双向的transformer
    NLP-基础知识问题汇总_第5张图片
  3. Bert只有transformer的encorder
    使用transformer而不是bi-LSTM做encoder,可以有更深的层数、具有更好并行性。并且线性的Transformer比lstm更易免受mask标记影响,只需要通过self-attention减小mask标记权重即可,而lstm类似黑盒模型,很难确定其内部对于mask标记的处理方式
  4. 模型的基本参数:
    12层Layer,12个头,768的隐藏层,110M的参数

16.2 bert模型训练中的关键点

  • 2: 详述Bert训练过程中的关键点。(提示: 训练中增添了什么任务, 如何做的词替换等)
    • 2.1: 四大关键词: Pre-trained, Deep, Bidirectional Transformer, Language Understanding
      • a: Pre-trained: 首先明确这是一个预训练的语言模型, 未来所有的开发者可以直接继承!
        • 整个Bert模型最大的两个亮点都集中在Pre-trained的任务部分。
      • b: Deep:
        • Bert_BASE: Layer = 12, Hidden = 768, Head = 12, Total Parameters = 110M
        • Bert_LARGE: Layer = 24, Hidden = 1024, Head = 16, Total Parameters = 340M
        • 对比于Transformer: Layer = 6, Hidden = 2048, Head = 8, 是一个浅而宽, 说明Bert这样深而窄的模型效果更好 (和CV领域的总体结论基本一致)。
      • c: Bidirectional Transformer: Bert的一个创新点, 它是一个双向的Transformer网络。
        • 原始的Transformer其实是一个单向的网络, 和GPT一致, 见上图。
      • d: Language Understanding: 更加侧重语言的理解, 而不仅仅是生成 (Language Generation)
    • 2.2: Bert的语言输入表示包含了3个组成部分: (见上图)
      • 词嵌入张量: word embeddings
      • 语句分块张量: segmentation embeddings
      • 位置编码张量: position embeddings
    • 2.3: Bert的预训练中引入两大核心任务 (这两个任务也是Bert原始论文的两个最大的创新点)
      • a: 引入 Masked LM (带mask的语言模型训练)
        • a.1: 在原始训练文本中, 随机的抽取15%的token作为即将参与mask的对象。
        • a.2: 在这些被选中的token中, 数据生成器并不是把他们全部变成[MASK], 而是有下列3个选择:
          • a.2.1: 在80%的概率下, 用[MASK]标记替换该token, 比如my dog is hairy -> my dog is [MASK]
          • a.2.2: 在10%的概率下, 用一个随机的单词替换该token, 比如my dog is hairy -> my dog is apple
          • a.2.3: 在10%的概率下, 保持该token 不变, 比如my dog is hairy -> my dog is hairy
        • a.3: Transformer Encoder在训练的过程中, 并不知道它将要预测哪些单词? 哪些单词是原始的样子? 哪些单词被遮掩成了[MASK]? 哪些单词被替换成了其他单词? 正是在这样一种高度不确定的情况下, 反倒逼着模型快速学习该token的分布式上下文的语义, 尽最大努力学习原始语言说话的样子!!! 同时因为原始文本中只有15%的token参与了MASK操作, 并不会破坏原语言的表达能力和语言规则!!!
      • b: 引入Next Sentence Prediction (下一句话的预测任务)
        • b.1: 目的是为了服务问答, 推理, 句子主题关系等NLP任务。
        • b.2: 所有的参与任务训练的语句都被选中参加。
          • 50%的B是原始文本中实际跟随A的下一句话。(标记为IsNext, 代表正样本)
          • 50%的B是原始文本中随机抽取的一句话。(标记为NotNext, 代表负样本)
        • b.3: 在该任务中, Bert模型可以在测试集上取得97-98%的准确率。
    • 2.4: 关于基于Bert的模型微调(fine-tuning)
      • 只需要将特定任务的输入, 输出插入到Bert中, 利用Transformer强大的注意力机制就可以模拟很多下游任务。(句子对关系判断, 单文本主题分类, 问答任务(QA), 单句贴标签(命名实体识别))
      • 微调的若干经验:
        • batch size: 16, 32
        • epochs: 3, 4
        • learning rate: 2e-5, 5e-5
        • 全连接层添加: layers: 1-3, hidden_size: 64, 128
      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ffen03lF-1590755362477)(/Users/zhudejun/Desktop/2020-05-09 – 直播课/BERT3.png)]

16.3: Bert模型本身有何优点和缺点?

  • 优点: Bert的基础建立在transformer之上, 拥有强大的语言表征能力和特征提取能力。在11项NLP基准测试任务中达到了state of the art。同时再一次证明了双向语言模型的能力更加强大。
  • 缺点:
    • 1: 可复现性差, 基本没法做, 只能拿来主义直接用!
    • 2: 训练过程中因为每个batch_size中的数据只有15%参与预测, 模型收敛较慢, 需要强大的算力支撑!
  • 引申:
    • 1:深度学习就是表征学习 (Deep learning is representation learning)
      • 整个Bert在11项语言模型大赛中, 基本思路就是双向Transformer负责提取特征, 然后整个网络加一个全连接线性层作为fine-tuning微调。但即便如此傻瓜式的组装, 在NLP中著名的难任务-NER(命名实体识别)中, 甚至直接去除掉了CRF层, 照样大大超越BiLSTM + CRF的组合效果, 这去哪儿说理去???
    • 2: 规模的极端重要性 (Scale matters)
      • 不管是Masked LM, 还是下一句预测Next Sentence Prediction, 都不是首创的概念, 之前在其他的模型中也提出过, 但是因为数据规模 + 算力局限没能让世人看到这个模型的潜力, 那些Paper也就不值钱了。但是到了谷歌手里, 不差钱的结果就是Paper值钱了!!!
    • 3: 关于进一步的研究展示了Bert在不同的层学习到了什么。
      • 低的网络层捕捉到了短语结构方面的信息。
      • 单词和字的特征表现在3-4层, 句法信息的特征表现在6-9层, 句子语义信息的特征表现在10-12层。
      • 主谓一致的特征表现在8-9层 (属于句法信息的一种)。

17.fasttext

17.1 asttext模型在大量类别上能够快速训练的原因?(从模型结构上深入分析)

  • 参考答案:
    • 1:fasttext模型是结构简单,仅由Embedding层,GAP层和输出层组成,适用于大规模文本分类的高效选择之一。使用n-gram特征,层次softmax是fasttext模型的两大显著特征。
    • 2: 模型结构简单,参数量相比大型模型(如BERT)较少,即提高训练效率又提高推断效率。
    • 3: 当业务场景中存在大量目标类别时,fasttext的输出层使用层次softmax提升训练效率。
    • 4: 关于层次softmax
      • 4.1: 层次softmax是一种使用最优二叉树结构替代网络原有输出层(全连接层)的方式。
      • 4.2: 提升训练效率的内在原理: 在训练阶段,由于二叉树是根据预先统计的每个标签数量的占比构造的哈夫曼树(最优二叉树),根据哈夫曼树的性质,使得占比最大的标签节点路径最短,又因为路径中的节点代表参数量,也就意味着这种方式需要更新的参数最少,因此提升训练速度。
      • 4.3: 该方式对模型推断(预测)是否有影响: 在预测阶段,相比全连接层速度略有提升,因为运算参数减少了1/N,N是标签总数。
      • 4.4: 是否存在一定弊端: 因为最优二叉树的节点中存储参数,而样本数量最多的标签对应的参数又最少,可能出现在某些类别上欠拟合,影响模型准确率。因此,若非存在大量目标类别产生的训练低效,首选具有全连接层的输出层。

17.2 - 为了提升fasttext模型的评估指标都做了哪些优化?

  • 参考答案:
    • 1: 迁移词向量,使模型初始化的参数为迁移参数。
    • 2: 对数据进行增强,对于中文文本数据,一般是选择回译增强法,扩充正负样本的数量。
    • 3: 根据文本分类目标和业务要求修改损失函数(这种方法实现难度较大,一般不采用) 。
  • 备选答案(建议学生背下来的说法):
    • 在项目中,我们首先使模型初始化参数为迁移参数,这样我们的模型训练时,起始的验证准确率由原来的50%提升至63%,最终准确率也提升了大概7%。而且我们还对正负样本数据分别进行回译增强,在原有的数据集基础上,我们分别上采样了正负样本各1000条,有效扩展了数据特征维度,将验证准确率由之前的87%提升至90%。

18.BiLSTM +CRF

18.1: 详述命名实体识别任务的模型架构? 为什么这样组合模型? CRF在这里面起了什么样的作用? 没有CRF层行不行?

  • 模型架构:采用了BiLSTM + CRF的模型架构;CRF在BiLSTM之后,BiLSTM输出为每一个标签的分值,并将这些词作为CRF的输入
  • CRF 层用来添加约束,可以从数据中获得约束性规则,以降低非法序列出现的概率;比如:
    • 命名实体总以B开头,而不是I
    • 开头和它后续的命名实体标签应属于同一命名实体,具有相同的label
  • BiLSTM用来实现命名实体识别,没有CRF也可以,CRF只是起到了增加约束,提高准确率的作用,实现命名实体识别主要是靠BiLSTM实现的,但是增加CRF后对命名实体识别的准确率有提升。

18.2: 具体的类代码中, 你是怎么理解训练函数没有用到forward()函数, 反倒是预测的时候去用forward()了?

  • forward函数只是在类实例化后,使用实例名可以直接调用的函数
  • 案例中只是在forward中写了预测函数没有写训练函数
  • 在实际开发中可以灵活使用,同样可以使用其他函数名来实现模型训练

18.3: 具体写出你的模型调优策略, 并进行训练, 给出训练集和测试集的准确率, 提交日志文件和截图。


19.句子相关性模型

19.1 句子主题相关模型的意义, 为什么要存在? 有哪些方案可以实现?

  • 在多轮对话中,需要判断用户最近两句话的主题是否一致,以决定回答是否根据上一次回复讨论相关问题
    1. 直接使用bert模型,bert模型可以用来判断两句话的相关性
    2. 使用bert模型,并对模型作出微调,可以对使用场景更有针对性,提高该场景下的准确率

19.2 主逻辑服务的代码逻辑, 你认为有哪些可以改进的点? 提出方案并写出伪代码解释。(如果有真实代码做了实验并运行成功, 请一并提交.py文件+具体说明的文本文件+截图)

  • 可以改进的点:
      1. 对历史查询结果进行统计,找到出现频率最高的几个疾病名称,返回给用户

20 NLP 生成式任务

20.1 你做过哪几个案例属于生成式任务? 用了什么模型架构? 有何优缺点?

  • 莎士比亚风格文本生成:使用了GRU模型,优点:模型结构简单,在捕捉长序列语义关联时,能有效抑制梯度消失或者爆炸;缺点:不能完全解决梯度消失的问题,而且不能进行并行运算,大数据时效率低

    • 英译法:encoder-decoder(seq2seq)架构,编码器和解码器都是用了GRU:优点:分为encoder和decoder两部分,输入输出长度没有限制。

20.2传统seq2seq架构在解决生成式任务时有什么优点? 有什么缺点? 如何改进, 请详细说明。

  • 优点:输入和输出的文本长度可以不统一,不限制,应用范围广泛

  • 缺点:encoder和decoder之间的唯一联系是固定长度的语义向量c

    c无法表达出整个序列完整的信息,不利于解码器端应用注意力机制

    后输入的内容对先输入的内容有影响;

  • 改进:
    • 采用transformer进行改进
    • 引入attention机制,在encoder和decoder端都可以使用

21.简述文本摘要任务实现

如果你面对"文本摘要"这个任务, 就是从一大段文本中得出概括主题内容和中心思想的摘要内容, 你会如何搭建你的模型? (尽可能详细的说明)

  • 比如你的训练数据什么样子, 什么格式?
    训练数据:一段文本;标签:文本摘要
  • 比如你的模型准备采用什么架构?
    seq2seq ,transformer
  • 甚至给出你的核心类代码 class Model()的源码)
    PGN

22. transformer模型相关知识点汇总

你可能感兴趣的:(NLP总结,python,自然语言处理)