NLP论文的写作技巧 - 来自国外年轻老师的总结

今天在twitter上看到一篇国外年轻老师给学生写的NLP论文如何写作的博客,觉得很受启发,所以在此翻译并分享给大家。

作者:Vered Shwartz
链接:https://medium.com/@vered1986/tips-for-writing-nlp-papers-9c729a2f9e1f
职位:英属哥伦比亚大学NLP助理教授
分享:「深度学习自然语言处理」公众号

->辅导界的小米带你冲刺ACL2024

多年来,我已经建立了一定的论文写作标准(以及一般性的研究方法),我通常会口头与我的学生分享。最近我意识到我一再重复着相同的内容,更糟糕的是,在论文草稿中一遍又一遍地进行编辑。因此,我决定记录下我的论文写作技巧。这篇博客帖首先是为我的学生准备的,尽管其他人可能也会觉得有用。

这里的一些技巧是特定于自然语言处理论文,尽管其中许多也是通用的,对其他领域可能也有用。有些技巧是标准做法,而其他一些则是我个人的偏好。如果你不是我的学生,可以自由忽略那些;)

随着这一标准的不断变化(希望会有所改进!),我计划更新这篇博客帖。

重要提示:本文档不替代你所针对的特定期刊或会议的提交说明。请始终遵循官方的提交说明和样式文件,如果它们与本文档有任何冲突。

内容

不要忘记为什么。论文需要明确阐明以下内容:1)试图回答哪些研究问题;以及2)为什么它们很重要。确保在深入探讨“如何”问题之前,引言部分回答了“为什么”的问题。

由抽象到具体。将更多技术细节留给方法、数据和实验设置部分。在深入具体细节之前,始终从更抽象的细节开始。实现这一标准的一种常见方式是在技术部分的顶部有一个段落,描述高层次的子组件,同时引用具体的子部分详细描述。在某些情况下,提供所提议方法的视觉概述也很有帮助。参见 Ravi等人(2023)的以下示例段落:

我们的方法的架构如图1所示。我们使用与Cattan等人(2021a)相同的聚类方法,但修改了成对评分器。我们的目标是改进模型解决不是在词汇或上下文上相似的提及对之间的指代的能力,而是一个提及可以通过常识知识和推理推导出另一个提及。因此,我们开发了一个常识推理引擎(3.1节),并使用它来增强成对评分器(3.2节)。

最后写引言、摘要和结论。我认为将引言视为论文的摘要、将摘要视为引言的摘要是有帮助的。因此,它们各自需要涵盖以下方面:1️⃣工作的动机,2️⃣与之前工作的差距,3️⃣提出的工作,4️⃣发现,5️⃣结束语(通常涉及未来工作、局限性或发现的影响)。因此,最好在论文“叙述”在描述结果之后清晰之后,最后才写这部分。以下是 Shwartz等人(2020)的一个示例摘要,我标记了每个方面:

[1️⃣ 自然语言理解涉及通过隐含的背景知识阅读行间文字。] [2️⃣ 当前系统要么依赖预训练语言模型作为唯一的隐含世界知识源,要么求助于外部知识库(KBs)以整合额外相关知识。] [3️⃣ 我们提出了一个基于自我对话的无监督框架作为多选常识任务的新型替代方案。受到探究式发现学习(Bruner,1961)的启发,我们的方法通过询问语言模型一些信息寻求问题,比如“……的定义是什么”来发现额外的背景知识。] [4️⃣ 实证结果表明,自我对话过程显著改进了六个常识基准中四个的零样本语言模型基线的性能,并且与从外部KB获得知识的模型竞争。] [5️⃣ 虽然我们的方法提高了几个基准的性能,但自我对话诱发的知识即使带来正确答案时,未必总是被人类评审认为有用,这引发了关于预训练语言模型进行常识推理内部机制的有趣问题。]

另一种思考方法是,摘要和引言是你说服读者阅读整篇论文的机会。话虽如此,不要使用构建悬念等技巧来吸引读者。我们不是在写小说 :) 提前明确表达主要发现。

少即是多。你可能在这个项目上工作了一年以上。在找到有效解决方案之前,你可能实施了半打解决方案。在论文中,只描述相关的内容很重要,排除了一些(通常是大部分)你所做的工作。尽管研究往往在最终找到一个成功的想法之前涉及许多失败的尝试和弯路,但学术论文的结构是假设你一开始就拥有了一个成功的想法。

a349adbbe894aa530fe6e85828d52920.png
从A点到B点的过程可能包含了很多弯路,但论文(通常)应将其描述为一条直线。

在相关的注意点上,论文不一定要按时间顺序描述你做了什么,更重要的是以易于理解的顺序描述。

有些学生认为他们需要在论文中突出展示许多不同的贡献。我认为这并不总是对他们有利。审稿人并不因为更多工作而印象深刻,他们希望看到高质量的工作。不要用平庸的中间步骤淡化你的高质量解决方案。有时候,把一些想法留出来,或者单独写成另一篇论文更好。

这里有一个重要的区别我想要强调。尝试不同的想法并决定在过程中放弃其中一些是合理的。但挑选实验来报告并排除不利结果则是不正当的。例如,假设你正在写一篇方法论文。你在几个数据集上进行了测试,效果很好。现在你在另一个数据集上进行了测试,结果不如现有技术或者你的基线。你仍应该报告这些结果。

论文需要是自包含的。记住,你已经长时间地研究了这个问题,获得了一些并非在领域内普遍知晓的知识。努力写论文,使你的研究室同事们在做不同的自然语言处理任务时可以不必阅读先前的工作就能轻松理解。

语言

保持简单。当论文使用过于复杂的语言时,会让人感到非常沮丧。目标是撰写能够被自然语言处理领域的任何人理解的论文,无论其所在子领域如何。

不要试图显得聪明。没有必要使用“复杂”的词汇,比如使用 "utilize" 代替 "use"。这并不会让你听起来更聪明或更学术。

要简洁。会议(以及一些期刊)论文页面限制的一个优势在于它鼓励简洁性。不要在同一部分重复你的观点(在摘要、引言和正文中重复一些重要观点是可以的)。不要来回切换话题。不要使用空洞的词语,比如“distinct”(比如“我们对五个独特的数据集进行了评估” — 这暗示这五个数据集并不相同)和“novel”(比如“我们提出了一种新颖的方法” — 当然,你并不是在提出一种现有的方法)。

要清晰具体。我本来打算写“不要写抽象或模糊的句子”,但我意识到这是一个抽象和模糊的建议。所以,让我更具体一些:增加例子。我特别喜欢贯穿整篇论文的相同例子。例如,在 Coil 和 Shwartz (2023) 中,我们从标题的“鳄鱼巧克力”示例开始,贯穿摘要和引言,一直到分析部分。但不同的例子也是可以的。请包含例子!

不要写过长的句子。这个建议适用于任何文体的写作。理解长句在认知上会有一定难度。将它们拆分成多个简短的句子。

不要过度吹嘘。近年来,存在一种过度吹嘘论文的倾向,好像每一篇论文都是变革性的 — 然而实际上,自然语言处理领域的论文如此不断涌现,大多数论文几年后几乎不会被记住。我总是更喜欢对论文的贡献保持诚实(甚至在*CL会议之前,我就写了一个“局限性”部分!)。例如,以下是Waterson和Shwartz(2018)论文引言的结尾:

我们尝试了各种评估设置,包括使词汇记忆变得不可能的设置。在这些设置中,综合方法的表现优于基线方法。即便如此,所有方法的性能都令人失望,表明这个任务很困难,需要进一步调查。

我们本可以只提到我们有一个优于基线方法的方法。但我认为重要的是不要欺骗读者,认为这是一个可以应用于下游任务的有效解决方案。

我明白这个建议有些棘手,因为对论文的贡献和局限性保持诚实表面上使你的论文看起来比一个充满热情的推销员写的论文要糟糕。但我真的希望相信,有不少审稿人会超越夸大的言辞,欣赏你的诚信。

与之前的工作比较

了解文献。在先前的工作和现存问题的背景下激发你的工作动机。我听说过一个建议,认为研究生不应该阅读文献,因为这会使他们的创造力减弱。这,恕我直言,完全是胡扯。我们大多数人都不是创造天才,如果你不阅读文献,最有可能发生的事情是你到了写论文的时候,快速通过谷歌搜索相关工作部分,发现你的想法已经被人发表过了。

同时,你也不需要一篇NLP论文在arXiv上发表就马上去阅读。尽量深入研究你目前正在工作的主题,并更有选择地选择其他子领域中更有影响力或有趣的论文。

不要抄袭。我无法再次强调这点。从其他论文中完全抄袭句子是不可以的。确保你不会抄袭的最好方法是阅读相关工作,并用自己的话对其进行总结(强调对你的论文更为相关的要点),并在写相关工作部分时查阅这份文档。在阅读完论文后立即总结它,也有助于你在你的论文中描述它与你自己工作的背景联系。我见过一些模糊描述之前工作的案例,有时会使用完全不同的术语,然后谷歌这些句子,发现它们是“借用”自该论文的摘要。无需多言,不要在未阅读论文的情况下引用它们。

相关工作部分不是一个购物清单。不要仅仅列出与你的论文相关的论文。尝试按主题对其进行分组,得出结论,并用它们来强调你的工作旨在解决文献中的空白。例如,Qin等人(2020)描述了相关工作沿着3个维度,每个段落以与当前论文的区别结束。

要有批判精神。不要假设先前工作中的任何内容都是金子。是的,即使这些都是同行评审的论文。如果你对先前工作中的某个说法表示怀疑,你可能是对的。仔细测试它,并在发现它是错误的时候对其进行挑战。

样式

好的,现在我们进入了挑剔的区域!

不要过度使用大写。不是“Large Language Models”,而是“large language models”。

不要定义基本术语。例如,在一篇自然语言处理的论文中,绝对不需要定义NLP为“natural language processing”。

LaTex中的引号是不同的。开引号是``,闭引号是’’。如果你是从Google文档或其他文档复制内容,请确保替换这些引号。(单引号使用`和‘)。

为表格使用booktabs。你自己来判断哪个看起来更好:

ed940194cbc185b78d657aef685cb8b0.png a1da90cfa7ee18f266670d44b6c4a1ea.png
regular vs booktabs table, from Better LaTeX Tables with Booktabs

引用

使用ACL文集。在自然语言处理领域发表的大多数论文都可以在ACL文集中找到。会议的样式文件通常包括一个anthology.bib文件,其中包含了这些论文的所有bibtex条目(可从此处下载),以及一个用于其他引用的custom.bib文件。当你想引用一篇论文时,请检查它是否在ACL文集中。如果在其中,点击“引用”即可看到bibtex键。例如:

fbcacdd07724d3b499c79d3c75c5f66c.png

如果不在ACL文集中,从其他地方(或者Google Scholar / Semantic Scholar)找到bibtex,并将其放入custom.bib文件中。

引用正确版本的论文。Google Scholar通常默认显示arXiv版本,但你应该检查一下该论文是否后来已被其他出版物(期刊或会议)接受,然后引用该版本。

使用正确的引用格式。\citep 用于括号引用,比如“我们从多伦多图书语料库中提取了短篇故事(Zhu et al., 2015)”。\citet(或在*CL样式文件中为\newcite)用于文中引文,比如“Yu和Ettinger(2020)表明语言模型编码了出现在给定文本中的词,但几乎不捕捉短语含义的信息”。


备注:昵称-学校/公司-方向/会议(eg.ACL),进入技术/投稿群

1f823c72757bd5e4c8da1eabaed00a5d.png

id:DLNLPer,记得备注呦

32c533606ecf6ae0c681c2c4539417e4.png

### 回答1: CentOS 7启动httpd服务失败可能有多种原因,以下是一些常见的解决方法: 1. 检查httpd配置文件是否正确:可以使用命令`httpd -t`检查httpd配置文件是否正确,如果有错误,需要修改配置文件。 2. 检查端口是否被占用:可以使用命令`netstat -tlnp`查看端口是否被占用,如果被占用需要释放端口或修改httpd配置文件中的端口号。 3. 检查httpd服务是否安装:可以使用命令`rpm -qa | grep httpd`查看httpd服务是否安装,如果没有安装需要先安装httpd服务。 4. 检查httpd服务是否启动:可以使用命令`systemctl status httpd`查看httpd服务是否启动,如果没有启动需要使用命令`systemctl start httpd`启动httpd服务。 5. 检查SELinux是否开启:如果SELinux开启,可能会导致httpd服务启动失败,需要使用命令`setenforce 0`关闭SELinux,或者修改SELinux策略。 以上是一些常见的解决方法,如果以上方法都无法解决问题,可以查看httpd服务日志文件,找到具体的错误信息,然后根据错误信息进行解决。 ### 回答2: CentOS 7上的httpd服务启动失败可能有多种原因。以下列出了一些常见问题和解决方法: 1. 端口被占用 当httpd试图占用已被其他程序占用的端口时会启动失败。此时可以通过使用`netstat -tunlp`命令检查端口占用情况,然后杀死占用该端口的进程及时释放端口。或者修改httpd的配置文件,将端口修改为未被占用的端口。 2. 配置文件错误 有时httpd服务的配置文件中可能出现错误,例如语法错误或路径错误等等。在启动httpd服务之前,可以使用`apachectl configtest`命令进行检查,如果输出“Syntax OK”,则表示配置文件没有错误。如果出现错误,则需要根据错误提示进行相应修改。 3. 依赖关系问题 如果httpd依赖的其他程序或库缺失,也会导致启动失败。可以通过使用`systemctl status httpd.service`命令来查看httpd服务状态,如果输出“Failed to start”或“Loaded: failed”,则需要检查依赖关系是否完整。 4. SELinux问题 当SELinux启用时,有时会导致httpd服务启动失败。在这种情况下,可以在SELinux上禁用httpd服务,或者修改httpd配置文件解决SELinux相关的问题。 5. 用户权限问题 httpd服务启动可能需要特定的用户权限。如果使用的用户权限不够,则无法启动。可以尝试使用root用户启动httpd服务,或者根据需要修改相应的用户权限。 ### 回答3: CentOS 7中的Apache HTTP服务器(httpd)是一个常见的Web服务器,如果遇到httpd服务启动失败的情况,可能会影响服务器正常的工作和对外服务的稳定性。本文将提供一些可能会导致httpd服务启动失败的原因,并给出相应的解决方法。 1. 端口被占用 如果端口被其他进程占用,httpd服务就无法启动。可以通过 netstat -tulpn 命令查看端口占用情况,并杀死占用该端口的进程。如果端口被 httpd 服务自身占用,可以通过 systemctl restart httpd 命令重启 httpd 服务;如果是其他进程占用了端口,可以通过 kill 命令杀死该进程或更改 httpd.conf 文件配置,将 httpd 服务的端口改为其他空闲端口,重新启动。 2. 配置文件错误 httpd 服务的配置文件通常是 /etc/httpd/conf/httpd.conf,如果其中存在语法错误、权限问题或者其它配置错误,可能会导致 httpd 服务启动出错。可以通过将 httpd.conf 文件备份后删掉,重新执行 yum install httpd 命令安装 httpd 服务,然后手动修改 httpd.conf 文件,逐个检查每个配置项是否正确,确认无误后重启 httpd 服务。 3. SELinux 问题 SELinux 是 CentOS 7中提供的一种安全模块,它可以对系统文件和应用程序进行安全管控。如果 SELinux 配置不正确,可能会阻止 httpd 服务正常启动。可以通过修改 /etc/selinux/config 文件中 SELINUX=disabled 来暂时关闭 SELinux,然后重新启动 httpd 服务;或者一个更优的方式是,根据日志确定问题原因,使用命令 semanage 或者 setsebool 等工具将相关目录或者配置加入到 SELinux 许可列表中,重新启动 httpd 服务,以恢复服务正常工作。 4. 防火墙问题 如果你的 CentOs 7 服务器启用了防火墙,有可能会导致 httpd 服务启动失败。可以通过检查防火墙相关配置来确定问题原因,解决方案是修改防火墙规则,将端口 80 或者 443 等 httpd 服务需要的端口放行,重新启动 httpd 服务。 总之,当遇到 httpd 服务启动失败时,不要慌张,可以先通过日志或者执行命令查看错误信息,找到错误原因,然后根据错误原因一步一步解决问题。在解决问题过程中注意备份原始配置文件,以免造成不必要的损失。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值