为什么语言模型不太重视标点符号?

人工智能 自然语言处理
2021-11-01 03:26:58

我对普通 RNN、LSTM/GRU、word2vec 等如何执行 NLP 任务以基本上生成机器理解的句子的某种隐藏形式的想法非常过时。

我注意到的一件事是,通常研究人员对生成句子的上下文感兴趣,但经常忽略标点符号,这是生成上下文的最重要方面。例如:

“大多数时候,旅行者担心他们的行李。”

“大多数时候旅行者担心他们的行李”

来源

像这样可能存在4个重要的标点符号.,?!然而,我还没有看到任何重要的教程/博客。值得注意的是,标点符号没有含义(非常重要,因为大多数语言模型都试图将单词映射到数值/含义),它们更像是一个“分隔符”。那么目前对此的理论或观点是什么?为什么会被忽略?

3个回答

你说的对。仅将单词映射到含义的方法在这方面确实失败了。尽管如此,Word2Vec 和 Glove 已经显示出出色的下游结果。这本身可能表明在大多数情况下,可以插入标点符号的添加。但是正如您提供的那样,在某些情况下这不是真的!

现在我会说大多数模型实际上几乎没有使用预处理这是令人惊讶的,但这是由于可学习、可逆的标记化能力的提高。其中的一些示例包括字节对编码 (bpe)句子片段模型 (spm)

最先进的 NLP 通常依赖于这些。示例包括BERTGPT2,它们是通用的预训练语言模型。他们解析和理解(我松散地使用这个词)各种措辞、拼写等的能力可能部分归功于预处理的自由度。

要点:您可以通过以消除信息但保留您感兴趣的肉和骨头的方式使用预处理来获得良好的结果(但这需要与优化经验相结合的领域知识),但该领域似乎更倾向于使用更多的模型包容性更强,可移植性更强,设计上没有你提到的问题。

这是一个有点挑衅性的观点,所以请注意(如果你觉得被它激怒了,请不要投反对票!):

在“过去”,当信息检索(IR)是 NLP 的主要任务之一时,有几类词被忽略为停用词连词、限定词、介词等。这些虚词本身并不带有意义,而是组织句子的结构。大多数 IR 算法都在单个单词的频率上工作,并且由于函数单词非常频繁(ofthe是两个最常见的英语单词)并且它们本身没有任何意义,因此它们被忽略了。这使索引文件保持较小,并且似乎不会影响结果。

但是,如果你想分析句子本身,它们是相当重要的。它们对于您正在查看单词序列的各种其他任务也很有用(例如,基于上下文的词性标记)。词嵌入也类似:没有功能词,您将没有任何有意义的上下文可以使用。所以,你越来越不会再忽略虚词了。

我的怀疑是,标点符号现在处于“停用词位置”:不太清楚它如何影响含义,并且通常不一致或多余(显然并非在所有情况下)。因此,对于大多数应用程序,您可能可以将其视为“噪音”并摆脱它。例如,查看单词的含义,它们出现的句子是问题还是感叹词可能并不重要。通过删除标点符号(可能除了句子终止符),您的模型会更小一些,并且不会丢失太多。

由于标点符号纯粹是书面语言的属性,我们通常可以不用它就可以逃脱,就像我们在演讲中所做的那样。没有标点符号的文本可能更难阅读,因为我们不习惯它,但不要忘记一些书写系统(中文、埃及象形文字……)甚至在单词之间没有空格——人们可以仍然可以毫无问题地使用它们。

语言模型几乎总是将每个单词映射到嵌入。有许多嵌入算法,其中大多数具有插值属性,即 If(wrd)那么表示嵌入一个词(ķ一世nG)-(一个le)+(Fe一个le)(qeen). 插值属性越平滑,模型对单词的理解就越好,当涉及到分隔符时,这些属性并没有多大意义。

然而,在某些情况下,学习了分隔符嵌入(总是有嵌入)。在使用这些首先将文本中的所有标点符号转换为一个特定单词时,例如“dlmt”,嵌入算法会学习该单词的嵌入,将其视为有任何单词。这保持了插值属性,其中分隔符被理解为用于分割上下文的单词。

我观察到,句尾的问号或感叹号等分隔符也被理解为上下文中断,在这些情况下,模型仅通过单词给出的上下文来了解语句是否是一个问题,然后停止在句子中