Abstract & Introduction & Related Work

  • 研究任务
    识别代码token和软件相关的实体

  • 面临挑战

    1. 这些命名的实体往往是模糊的,并且对所附的代码片段有隐含的依赖性
  • 创新思路

    1. 我们提出了一个命名实体识别器(NER),它利用多层次的注意力网络将文本上下文与代码片段知识结合起来
  • 实验结论
    SoftNER比BiLSTM-CRF高了9.73的F1分数

Annotated StackOverflow Corpus

对于每个问题,对四个答案进行了标注,包括被接受的答案、投票最多的答案,以及两个随机选择的答案(如果存在的话)

Annotation Schema

定义二十种细粒度实体

StackOverflow/GitHub Tokenization

提出了一种叫 SOTOKENIZER 的新分词器,专门为计算机编程领域社区定制,我们发现,标记化并不简单,因为许多与代码相关的标记被现有的网络文本标记器错误地分割了

Named Entity Recognition

模型总览图

  1. embedding抽取层
  2. 多级注意力层
  3. BiLSTM-CRF

Input Embeddings

抽取ELMo representation 和两个特定领域的 embedding

Code Recognizer,表示一个词是否可以成为一个代码实体的一部分,而不考虑上下文

Entity Segmenter,预测一个词是否是给定句子中任何命名实体的一部分

In-domain Word Embeddings

软件工程领域的文本包含编程语言标记,如变量名称或代码段,并与自然语言词汇穿插。这使得在一般新闻网文本上预训练的输入表示不适合软件领域。因此,我们在StackOverflow的10年档案中对不同的域内词嵌入进行了预训练,包括ELMo、BERT和GloVe向量的23亿个标记

Context-independent Code Recognition

输入的特征包括两个语言模型(LMs)的unigram word 和 6-gram char 概率,这两个语言模型是在Gigaword语料库和StackOverflow 10年档案中的所有代码片段上分别训练的

我们还使用这些代码片段预训练了FastText(Joulin等人,2016)的词嵌入,其中一个词向量被表示为其字符n-grams的总和。我们首先使用高斯分档法(Maddela和Xu,2018)将每个n-gram概率转化为一个k维向量,这已被证明可以提高使用数字特征的神经模型的性能(Sil等人,2017;Liu等人,2016;Maddela和Xu,2018)。然后,我们将矢量特征送入线性层,将输出与FastText字符级嵌入相连接,并通过另一个具有sigmoid激活的隐藏层。如果输出概率大于0.5,我们就预测该标记是一个代码实体

Entity Segmentation

将ELMo embedding,和两个手工特征,word frequency 和 code markdown concat起来作为输入,丢到BiLSTM-CRF模型中判断一个token是否是一个实体mention

Word Frequency

代表训练集中的单词出现次数。由于许多代码token是由个人用户定义的,它们的出现频率比正常的英语单词要低得多。事实上,在我们的语料库中,代码和非代码token的平均频率分别为1.47和7.41。此外,既可以是代码也可以是非代码实体的模糊标记的平均频率要高得多,为92.57。为了利用这一观察结果,我们将词频作为一个特征,通过高斯分档将标量值转换为一个k维的向量

Code Markdown

表示给定的token是否出现在Stack Overflow的 <code> 标签里面 值得注意的是,一个<code>标签是有噪音的,因为用户并不总是在hcodei标签中包含内联代码,或使用该标签来突出非代码文本。然而,我们发现将markdown信息作为一个特征包括在内是很有帮助的,因为它提高了我们分割模型的性能

Multi-Level Attention

对于每一个word,使用ELMo embedding, Code Recognizer, Entity Segmenter作为原始输入,丢到BiGRU里面,得到对应表示,然后通过一个线性层,接上tanh激活函数,引入一个 embedding级别的上下文向量, ueu_eue,在训练过程中学习,然后通过一个softmax函数得到对应的分数 aita_{it}ait


最终每一个word的embedding是

word level embedding跟embedding level attention一样,也引入了一个可训练的向量 uwu_wuw

最后得到 wordi=aihiword_i = a_ih_iwordi=aihi,随后丢到BiLSTM-CRF层中做预测

Evaluation





Conclusion

我们开发了一个新的NER语料库,包括来自StackOverflow的15,372个句子和来自GitHub的6,510个句子,并注有20个细粒度的命名实体

我们证明了这个新的语料库是一个理想的上下文词表征的基准数据集,因为有许多具有挑战性的歧义,往往需要长距离的上下文来解决。我们提出了一个新的基于注意力的模型,名为SoftNER,它在这个数据集上的表现超过了最先进的NER模型

此外,我们研究了代码识别这一重要的子任务。我们的新型代码识别模型在基于字符的ELMo之外捕获了额外的拼写信息,并持续地提高了NER模型的性能。我们相信我们的语料库和基于StackOverflow的命名实体标记器将有助于各种语言和代码任务,如代码检索、软件知识库提取和自动答疑等

Remark

我觉得主要贡献是搞了个新的数据集,模型的话算是中规中矩,搞好数据集也能发顶会!

Raki的读paper小记:Code and Named Entity Recognition in StackOverflow相关推荐

  1. Raki的读paper小记:Named Entity Recognition without Labelled Data: A Weak Supervision Approach(半成品)

    Abstract & Introduction & Related Work 研究任务 无标注数据NER学习 已有方法和相关工作 Unsupervised domain adaptat ...

  2. Raki的读paper小记:Prompting ELECTRA: Few-Shot Learning with Discriminative Pre-Trained Models

    Abstract&Introduction&Related Work 研究任务 基于提示学习的ELECTRA 已有方法和相关工作 ELECTRA 面临挑战 基于判别模型的预训练模型的f ...

  3. Raki的读paper小记:OFA: UNIFYING ARCHITECTURES, TASKS, AND MODALITIES THROUGH A SIMPLE Seq2Seq FRAMEWORK

    Abstract&Introduction&Related Work 研究任务 多模式预训练的统一范式 包括图像生成.visual-grounding(visual grounding ...

  4. Raki的读paper小记:Image as a Foreign Language: BEIT Pretraining for All Vision and Vision-Language Tasks

    Abstract&Introduction&Related Work 研究任务 语言+视觉模态预训练任务 已有方法和相关工作 masked data已经成为一种主流 面临挑战 现有的多 ...

  5. Raki的读paper小记:Forget-free Continual Learning with Winning Subnetworks

    Abstract&Introduction&Related Work 研究任务 用子网络做CL 已有方法和相关工作 彩票假说(LTH)证明了稀疏子网络(称为中奖彩票)的存在,这些子网络 ...

  6. Raki的读paper小记:Neuro-Inspired Stability-Plasticity Adaptation for Continual Learning in Sparse Nets

    Abstract&Introduction&Related Work 研究任务 Continual Learning 已有方法和相关工作 面临挑战 创新思路 利用持续学习过程中的持续稀 ...

  7. Named Entity Recognition without Labelled Data:A Weak Supervision Approach论文详读

    Named Entity Recognition without Labelled Data: A Weak Supervision Approach 无标记数据的命名实体识别:一种弱监督方法 创新点 ...

  8. A Unified MRC Framework for Named Entity Recognition阅读笔记

    ​ 论文地址: https://arxiv.org/pdf/1910.11476.pdf github:ShannonAI/mrc-for-flat-nested-ner: Code for ACL ...

  9. PapeDeading:Deep into Regularity: A Simple but Effective Method for Chinese Named Entity Recognition

    Deep into Regularity: A Simple but Effective Method for Chinese Named Entity Recognition 文章目录 摘要 结论 ...

  10. 【论文精读】A Survey on Deep Learning for Named Entity Recognition

    A Survey on Deep Learning for Named Entity Recognition 前言 Abstract 1. INTRODUCTION 2. BACKGROUND 2.1 ...

最新文章

  1. 在?三缺一,来斗个地主——肝个斗地主案例(java)
  2. 我人生的第一个博客,真正的博客。
  3. Python学习三——列表
  4. 频率响应函数与数字滤波实验_WKD3419振动测试与控制教学实验系统
  5. 双指针--Codeforces Round #645 (Div. 2) d题
  6. 图解算法学习笔记(二): 选择排序
  7. python中不包不包括_Unittest-断言列表中的一组项包含在(或不包含在)另一个lis中...
  8. mysql top virt_linux top命令VIRT,RES,SHR,DATA的含义
  9. 如何获取foreach循环当前迭代的索引?
  10. PAPI性能测试工具的安装、使用及实例
  11. Java工具类,随机生成(姓名,年龄,性别,密码,邮箱,地址,)
  12. 各种颜色十六进制代码表
  13. android开发下载功能实现原理图,Android开发者掌握Android图像显示原理
  14. 【数学之美】分形图形动画演示欣赏
  15. 你给员工吃肉,你将迎来一群狼!
  16. 引入超融合技术解决虚拟机性能不足问题
  17. 回滚 rollback
  18. USB转TTL 下载线 线序定义
  19. 知识图谱初步学习(一)——本体+Protege新手学习
  20. 在VS Code中使用jupyter notebook,输出过多时show more显示不正常,出现乱码问题的解决方案

热门文章

  1. 《隋唐演义》二:竞争对手的实力在不断增强
  2. python已知y求x_Python刷题:集合S(k)求|x-y|最小时的x和y(位运算)
  3. java 字符串数组排序_Java 使用泛型为不同类型数组排序
  4. 【2019杭电多校第一场1004=HDU6581】Vacation(思维+避免超时)
  5. ghs文件可以删除吗_电脑C盘快满了,哪些文件可以直接删除掉?带你了解一下...
  6. 求两个等长升序序列的中位数
  7. 药品质量不合格统计机器人
  8. pip下载速度慢的解决办法
  9. php连接云数据库语法,云水日记-PHP——连接数据库
  10. make的作用linux,Linux下./configure,make,make install的作用