原文: Barack’s Wife Hillary: Using Knowledge Graphs for Fact-Aware Language Modeling
作者: Robert L. Logan IV;Nelson F. Liu;Matthew E. Peters;Matt Gardner;Sameer Singh;
译:张小邪先森
摘要
对人类语言进行建模,不仅需要有能力生成流畅的文本,还需要对事实知识进行编码。然而,传统的语言模型只能记住训练时看到的事实,而且往往很难记住它们。为了解决这个问题,我们引入了知识图谱语言模型(KGLM),这是一种神经语言模型,具有从知识图谱中选择和复制与上下文相关事实的机制。这些机制使模型能够呈现它以前从未见过的信息,并生成词汇表外的标记。我们还引入了Linked Wikitext-2 数据集,这是一个归属于Wikidata的知识图谱注释文本语料库,其内容(大致)与流行的Wikitext-2基准相匹配。(Merity et al., 2017). 在实验中,我们证明知识图谱语言模型的性能明显优于强大的基线语言模型。此外,我们还比较了不同语言模型完成需要事实知识的句子的能力,并表明KGLM在生成事实方面的表现甚至优于非常庞大的语言模型。
1 引言
对于语言模型来说,语言模型要想生成合理的句子,它们必须在句法上连贯,并且与它们所描述的世界一致。尽管语言模型在生成语法句子方面相当熟练,而且之前的工作表明,语言模型也具备一定程度的常识推理和基础知识(Vinyals and Le, 2015; Serban et al., 2016; Trinh and Le, 2019),但它们生成事实正确的文本的能力相当有限。现有语言模型最明显的局限是,它们充其量只能记住训练过程中观察到的事实。例如,当以图1顶部的文本为条件时,在Wikitext-2上训练的AWD-LSTM语言模型 (Merity et al., 2018) 为单词“PlayStation”分配比“Game Boy”更高的概率,尽管这句话似乎是对训练数据的逐词对应。这不足为奇——现有的模型直接表示整个词汇的分布,无论是常见的单词、现实世界实体的引用,还是像日期和数字这样的事实信息,都会直接表示出整个词汇的分布。因此,语言模型无法生成事实正确的句子,不能归纳罕见的/未见的实体,并且经常从词汇中省略了罕见的词例(token)(而不是生成UNKNOWN词例)。
我们介绍了知识图谱语言模型(KGLM),这是一种神经语言模型,具有从外部知识图谱选择和复制信息的机制。知识图谱语言模型维护一个动态增长的本地知识图谱,这个知识图谱的子集包含了文本中已经提到的实体及其相关的实体。在生成实体词例时,模型要么决定创建一个新的实体(该实体不在本地知识图谱中)从而增长本地知识图谱,要么从本地知识图谱中挑选一个事实。当挑选时时,模型将标准词汇和知识图谱中的词例结合在一起,因此数字、日期和其他稀有词例都在选择的范围内。
图1说明了知识图谱语言模型的工作原理。最初,该图为空,并且模型使用实体Super Mario Land来呈现前三个令牌,从而将其及其关系添加到本地知识图谱中。在使用标准语言模型生成下两个词例(“is”、“a”)之后,该模型选择Super Mario Land作为父实体,选择出版日期作为呈现的关系,并复制日期实体的其中一个词例之一作为作为呈现的词例(在本例中为“1989”)。
为了便于基于知识图的语言建模的研究,我们收集了远程监督的LInked Wikitext-2数据集。底层文本与Wikitext-2(Merity et al., 2017)非常匹配,这是一种流行的语言建模基准,允许与现有模型进行比较。文本中的词例与维基数据(Vrandecˇic ́ and Krötzsch, 2014)中的实体相链接,结合了人工提供的链接、现成的链接及共指模型。我们还利用维基数据中这些实体之间的关系来构建一个实体可能被提及的合理理由:它可能与已经被提及的实体(包括其本身)有关,也可能是文档中一个全新的、不相关的实体。
我们在Linked Wikitext-2上对知识图谱语言模型进行了训练和评估。与AWD-LSTM(一种最新的高效语言模型)相比,知识图谱语言模型不仅获得了较低的总体困惑度,而且还获得了更低的未知惩罚困惑度(unknown-penalized perplexity,UPP)(Ueberla, 1994; Ahn et al., 2016),该指标可以公平地比较对稀有词例准确建模的模型与预测稀有词例为未知的模型。我们还比较了这些模型的事实补全能力,在这些模型中,它们预测了事实句子(例如,"Barack is married to")之后的下一个词,结果表明知识图谱语言模型的准确性要高得多。最后,我们表明该模型能够为稀有实体生成准确事实,并且可以通过对知识图谱的修改来控制。
2 知识图谱语言模型
在本节中,我们介绍一种语言模型,它以外部的、结构化的知识源为条件,用来生成事实文本。
2.1 问题设置和标注
语言模型的定义是:以迄今为止观察到的词例序列中,每个词例的概率分布,我们将代表下一个词例的随机变量表示为,将之前的令牌序列表示为,即语言模型计算出。RNN语言模型(Mikolov et al., 2010)使用递归结构对这个分布进行参数化。
等式1:
本文使用LSTMs(Hochreiter and Schmidhuber,1997)作为递归模型。
知识图谱(KG)是由实体作为节点组成的有向标签图,其边定义在一组关系上,即
其中是与另一实体具有关系的父实体。我们还将实体子集的本地知识图谱定义为
即包含实体及其中的所有事实。
2.2 知识图谱语言模型生成
知识图谱语言模型(KGLM)的主要目标是使神经语言模型能够从知识图谱生成实体和事实。为了鼓励模型生成已经出现在上下文中的事实,知识图谱语言模型将维护一个本地知识图谱,其中包含涉及上下文中出现实体的所有事实。当模型决定引用尚未引用过的实体时,它将使用额外的实体和事实来增长本地知识图谱,以反映新的实体。
形式上,如上所述,我们将计算,其中是观察到的记号序列,是中提到的实体集,是由确定的本地知识图谱。生成过程是:
- 确定的类型,我们用来表示:它是对中的实体的引用(related),还是对不在中的实体的引用(new),或者不是实体提及(entity mention)()。
(注:“提及”是自然文本中表达实体的语言片段) - 如果 new,则从所有实体的集合中选择接下来的实体。
- 如果 related,那么。
-从中选择一个父实体。
-选择一个事实关系来呈现。。
-选择作为尾部实体之一。。 - 如果 ,则 。
- 生成以为条件的,可能复制的一个别名(aliases)。
(注:比如“西红柿”就是“番茄”的一个别名) - 如果,则,否则。
为了使模型引用它已经提到的实体,我们引入了一个自相关的反映(reflective)关系,即表示。
图2中提供了此过程和变量的说明,用于在与图1相同句子的中间位置处生成词例。在三种提及类型()中,模型要选择对现有实体的引用,这需要挑选一个要呈现的事实。作为该事实的父实体(),模型选择Super Mario Land,然后遵循Publisher关系()选择任天堂(Nintendo)作为要呈现的实体()。当将任天堂呈现为词例时,该模型有一个扩展的词汇表可供其使用,其中包含标准词汇表以及的任何别名中的所有单词类型。
计算知识图谱的边缘概率 我们的初始任务需求与我们到目前为止描述的计算的模型之间并不匹配。我们需要通过计算本地知识图谱的边缘概率来获得词例的概率,即。我们将在第4节中说明这一点,同时描述这个模型的训练和推断/解码算法,以及其他设置的细节。
(注:推断,就是深度学习把从训练中学习到的能力应用到工作中去)
2.3 对分布进行参数化处理
上述生成过程中使用的参数分布定义如下。我们首先使用等式(1)中的公式计算隐藏状态。然后,我们将向量拆分为三个组件:,这三个组件分别用于预测单词、父系和关系(注:可能是词例、父实体和关系)。使用上的softmax函数来计算词例的类型,以预测其属于{new,related,∅}中的一个。
(注:softmax函数把一些输入映射为0-1之间的实数,并且归一化保证和为1,因此多分类的概率之和也刚好为1。)
挑选实体 我们还为知识图谱中的所有实体和关系引入了预训练的嵌入(embeddings),实体用表示,关系用表示。要在=new的情况下从所有实体中选择,对于所有的我们使用:
我们添加和的原因是为了模仿TransE的结构,我们用它来获得实体和关系嵌入。关于TransE的细节将在第4节中详述。对于提到的相关实体 = related,对于所有的我们使用:
选择一个父实体。
然后,对于所有的,我们用:
来选择关系。和的组合决定了实体(其必须满足;如果有多个选项,则随机选择一个)。
实体呈现 如果,即没有实体要呈现,我们使用与等式(1)中相同的词汇分布——对做softmax处理。如果有实体需要呈现,我们在原始词汇表和包含出现在别名中的所有词例的词汇表上构造分布。为了计算在原始词汇表上的分数,被替换为,其中是一个学习的权重矩阵,它将聚合后的向量映射到与相同的向量空间。
*(注:表示原始词汇表中的词例,表示包含出现在别名中的所有词例。这个方程是将两个向量拼接并映射到与相同的向量空间中,即使与的维度保持一致)
为了获得别名词汇库中单词的概率,我们参考了Gu et al.(2016)论文中所提及的复制机制。组成每个别名的词例序列被嵌入,然后使用LSTM进行编码,形成向量。复制分数的计算方法为:
3 Linked WikiText-2
撇开建模不谈,将事实知识纳入语言模型的主要障碍之一是很难获得训练数据。标准语言建模语料库仅由文本组成,因此无法描述每个标记所指的实体或事实。相比之下,虽然关系提取数据集将文本链接到知识图谱,但文本由不连续的句子组成,这些句子没有提供足够的上下文来训练强大的语言模型。我们的目标可视为一个数据到文本生成(data-to-text)的任务(Ahn et al., 2016; Lebret et al., 2016; Wiseman et al., 2017; Yang et al., 2017; Gardent et al., 2017; Ferreira et al., 2018),其中提供了一个较小(a small table-sized)的语料库(KB)来生成一个短的文本片段;我们感兴趣的是在话语的引导下,动态地决定从知识图谱中纳入事实的语言模型。
(注:原文直接使用了KB这个缩写,作者并没有解释,我使用了KB在NLP领域最常见的意思是指Knowledge Base。"small table-sized" 也很难理解,small应是指知识库小,table-sized应指知识库局限于某一领域,因为在Related Work部分作者有提到这些研究“focus on generating coherent text within a narrow domain”)
基于这些原因,我们引入了Linked WikiText-2数据集,其(大约)由WikiText-2语言建模语料库中的文章组成,但链接到了Wikidata(Vrandecˇic ́ and Krötzsch, 2014)知识图谱。因为文本紧密匹配,所以在Linked WikiText-2上训练的模型可与在WikiText-2上训练的模型相媲美。此外,由于维基数据中的许多事实都是从维基百科的文章中提取出来的,因此知识图谱很好地覆盖了文本中表达的事实。该数据集可在 https://rloganiv.github.io/linked-wikitext-2下载。我们的系统每次只对一个文档进行注释,包括实体链接、关系注释和后处理。下文将详细介绍每个步骤。
初步实体注释 我们首先确定文本中提到的一组初始实体。这些提及的主要来源是维基百科文章之间的人工链接。每当一段文本链接到另一篇维基百科文章时,我们就会将其对应的Wikidata实体与该范围相关联。虽然文章链接提供了大量标准实体注释(gold entity annotations),但它们不足以捕获文章中的所有提及,因为实体只在第一次出现时才被链接。因此,我们使用neuro-el( Gupta et al., 2017 )实体链接器来识别到Wikidata的额外链接,并使用StanFord CoreNLP2来识别互指关系,以涵盖代词、名词和链接器遗漏的其他标记。
本地知识图谱 下一步,使用知识图谱中的关系,迭代地为实体创建生成性故事,并标识新实体。为此,我们逐个处理文本词例。每次遇到实体时,我们都会添加Wikidata中的所有相关实体作为候选进行匹配。如果稍后在文档中看到这些相关实体之一,我们将该实体标识为后面实体的父实体。由于每个词例可能会出现多个关系作为解释,我们允许一个词例对应多个事实。
扩展注释 由于可能有一些实体在初始集中被遗漏了,也可能有一些非实体词例(如日期和数量),因此我们使用字符串匹配(string matching)来进一步扩展实体注释。对于实体,我们对Wikidata中的别名集进行匹配。对于日期,我们创建了一个详尽的列表,列出了所有可能的日期表达方式(例如 "December 7, 1941", "7-12-1941", "1941", ...)。我们对数量进行类似的处理方法,使用Python中的pint库来处理不同的单位表达方式(例如 "g"、"gram"、...)。由于表示数值的方法有很多,所以我们只按照Wikidata提供的精度级别呈现数值,而不执行单位转换。
示例注释 表1中提供了与图1中的实例相对应的示例注释,以及与知识图谱语言模型(KGLM)的生成过程相对应的变量。这里提到的大多数词例的实体都是人工提供的链接,除了“1989”,它是通过字符串匹配过程链接到“04-21-1989”的。到目前为止,基于是否可由目前已连接实体访问,这些注释指出了哪些实体属于类型new,以及哪些实体属于类型related,但显然在“side-scrolling game”和“platform video game”上出现了错误,这是在Wikidata中缺少链接的缘故。最后,Gameboy的加入有多个看似合理的理由:它是Super Mario Land的平台,由任天堂制造,尽管在这里前者更具有相关性。即使有这些遗漏和错误,但很明显,这些注释内容丰富而详细,覆盖率很高,因此应该有利于知识图谱语言模型的训练。
数据集统计 表2提供了关于Linked Wikitext-2的统计数据。在该语料库中,超过10%的词例被认为是实体词例,即它们是作为知识图谱中信息的事实性引用而产生的。每个实体只被提到了几次(平均不到5次,但尾部很长),并且有超过数千种不同的关系。由此可见,使用常规语言模型显然无法生成事实文本,这需要语言模型能够参考外部信息源。
与 WikiText2的不同 尽管我们的数据集高度复制Wikitext-2,但也有一些不同之处,导致无法直接比较。首先,对文本的编辑修改是持续进行的,由于下载数据集日期不同,不同文章的文本会有细微差异。其次,根据 Merity et al. (2017)的说法,Wikitext-2是通过查询维基百科文本API收集的。因为此API丢弃了有用的注释信息(例如文章链接),所以Linked Wikitext-2是直接由文章的HTML创建的。
4 知识图谱语言模型的训练和推断
在这一部分中,我们将描述知识图谱语言模型的训练和推断算法。
预训练知识图谱嵌入 在评估过程中,我们可能需要对训练期间未见过的实体和关系做出预测。因此,我们在Wikidata上使用TransE(Bordes等人,2013年)预先训练的固定实体和关系嵌入。给定,我们学习嵌入、和来最小化距离:
我们使用最大边缘损失(max-margin loss)来学习这些嵌入:
其中,是边缘,和是随即抽取的实体嵌入。
使用Linked WikiText训练 尽管KGLM的生成过程涉及许多步骤,但在Linked Wikitext-2上训练模型是直截了当的。我们的损失目标是训练数据的负对数似然率:
其中Θ是模型参数集。请注意,如果一个注释有多个可行的父级(如1中的Game Boy),那么我们将边缘化所有父级。由于所有随机变量都可观察到,因此可以使用现成的基于梯度的优化器进行训练。
推断 虽然观察注释使模型易于训练,但我们不假定模型在评估期间可以访问注释。
此外,正如第2.2节所讨论的那样,语言建模的目标是测量边际概率,而不是联合概率。
然而,由于可能的注释的组合空间很大,所以这个总和难以计算。我们通过使用重要性抽样近似边缘分布来解决这个问题。
对给定的来自建议分布的样本,边缘分布为:
该方法曾用来评价 Ji et al(2017)和Dyer et al. (2016)的模型。继 Ji 等人(2017)之后,我们使用模型的判别版本计算,该模型预测的是当前词例的注释而不是下一个词例的注释。
实验
为了评估所提出的语言模型,我们首先介绍了基线,然后使用留出语料库的困惑度(perplexity of held-out corpus),事实完成的准确性进行评估,并说明了模型如何使用知识图谱。
5.1 评估步骤
基线模型 我们使用了如下基线模型与知识图谱语言模型作对比
- AWD-LSTM(Merity et al., 2018):基于LSTM的强大模型,是Wikitext-2上大多数最先进模型的基础。
- ENTITYNLM(Ji et al., 2017):是一个基于LSTM的语言模型,能够跟踪实体的提及。实体的嵌入是动态创建的,不受任何外部信息来源的影响。
- EntityCopyNet:知识图谱语言模型的一个变体,其中对于所有提及有new,即从中选择实体,并复制实体别名,但知识图谱中的关系未使用。
超参数 我们使用边距为的TransE,为Linked Wikidata-2中实体集两跳(two hops)范围内的所有实体进行了256维实体和关系嵌入的预训练。为了节省内存,所有日期嵌入和数量嵌入进行了权重绑定。遵循 Merity et al. (2018)的做法。我们使用400维词嵌入和一个隐藏维度为1150的3层LSTM来编码词例。我们还采用了相同的正则化策略 (DropConnect (Wan et al., 2013) + Dropout(Srivastava et al., 2014))和权重捆绑方法。但是,我们使用学习率设置为1e-3的Adam(Kingma and Ba, 2015) 进行优化,而不是NT-ASGD,因为我们发现Adam更稳定。
5.2 结果
困惑度 我们使用标准的困惑度量来评估我们的模型:。然而,使用困惑度的问题是,当它们被映射到单个UNK词例时,它高估了词汇表外词例的概率。这给比较知识图谱语言模型与使用Linked Wikitext-2的传统语言模型的性能造成了困难,因为有大量罕见实体的别名词例是词汇表外的。也就是说,即使知识图谱语言模型识别了正确的实体并以高概率复制了正确的别名词例,其他模型也可以通过向UNK分配更高的概率来获得更好的困惑度。相应地,我们还测量了Ueberla(1994)提出的未知惩罚性困惑度(UPP)(又名校正困惑度),最近Ahn et al. (2016)和 Spithourakis and Riedel(2018)也使用了这个度量。此度量通过在(映射到UNK的一组令牌)上均匀分配它们的概率质量来惩罚UNK令牌的概率。我们可以通过将上述困惑度中的(UNK)替换为(UNK)来计算UPP,其中是从数据估计出来的。
我们在表3中列出了模型的困惑度。为了边际化注释,我们使用第4节中描述的重要性抽样方法估计了 ENTITYNLM、EntityCopyNet 和知识图谱语言模型的困惑度。我们观察到,知识图谱语言模型的困惑度比其他基于实体的语言模型低得多(44.1 vs. 76.1/85.4),这有力地证明了利用知识图谱对准确的语言建模至关重要。此外,知识图谱语言模型在未知惩罚困惑方面的性能明显优于所有模型,显示了其生成罕见词例的能力。
事实完成 由于事实性文本的生成是我们的主要目标,因此我们评估了语言模型完成带有事实信息句子的能力。此外,我们还与小型的GPT-2(Radford et al., 2019)进行了比较,它是一个在更大的文本语料库上训练的语言模型。我们从Freebase中选择了六个流行关系,并为每个关系写了一个简单的完成模板,比如出生地关系的 "出生在"。我们为这些模板生成关系成立的若干对的句子,并手动检查每个语言模型生成的第一个词例是否正确。
表4显示了每种语言模型在这些关系上的性能。
Oracle知识图谱语言模型为提供了正确的实体注释,而NEL知识图谱语言模型使用用于重要性采样的判别模型与NEL实体链接器相结合来生成的实体注释。
在相同数据集上训练的模型中,知识图谱语言模型的两个变体都明显优于AWD-LSTM;它们产生了准确的事实,而AWD-LSTM产生的是通用的、常见的单词。知识图谱语言模型也比在更多数据集上训练的模型更有竞争力,它能产生需要特定知识的事实完成,如出生地、日期和作者等。然而,它并不能捕捉到在大语料库中经常出现的事实或关系,比如州内的城市。令人鼓舞的是,具有自动链接功能的知识图谱语言模型的性能与Oracle链接相当。
我们在表5中提供了一些例子,以突出知识图谱语言模型在600个文档上接受培训的质量差异,与最近使用有800多万文档的WebText语料库上接受培训的最先进语言模型GPT-2之间的质量差异(Radford et al., 2019)。例如,这两个模型都正确与否,知识图谱语言模型生成的词例通常要具体得多,而不是选择更流行/通用的词例(GPT-2经常预测“纽约”是出生地,即使是流行的实体也是如此)。特别是,当头部或尾部实体很少时,知识图谱语言模型可以得到正确的事实陈述,而GPT-2只能在使用更多通用词例(如 "1月 "而不是 "20")时,完成更多流行/通用实体的事实陈述。
更换知识图谱的效果 对于大多数语言模型,由于事实知识与模型生成的能力是纠缠在一起的,因此很难控制它们的生成。对于知识图谱语言模型来说,它使用外部知识源的另一个好处是,知识图谱语言模型可以通过修改知识图谱直接控制。用一个简单的例子来说明这个能力,我们用原来的事实(Barack Obama, birthDate, 1961- 08-04)创建完成 "Barack Obama was born on",结果前三个解码令牌为 "August"、"4"、"1961"。将出生日期改成2013-03-21后,前三位解密令牌变为 "3月"、"21"、"2013"。因此,改变知识图中的事实,直接导致模型的预测结果发生相应的变化。
6 相关研究
基于知识的语言模型 我们的工作从两个现有的基于知识的语言模型中获得灵感:
ENTITYNLM (Ji et al., 2017),它通过联合建模命名实体识别和共指,提高了语言模型跟踪实体的能力。我们的模型类似于通过文档跟踪实体,通过实体链接和关系提取的建模,提高了其生成事实信息的能力。
神经知识语言模型(NKLM)(Ahn et al., 2016),它确立了在神经语言模型中利用知识图谱的思想。知识图谱语言模型和神经知识语言模型之间的主要区别因素是,知识图谱语言模型在整个知识图谱上操作,并且可以在没有附加条件信息的情况下对文本进行评估,而神经知识语言模型在从单个实体发出的相对较小的预定义边集合上操作,并且要求提前提供该实体作为条件信息。这一要求排除了神经知识语言模型与第5节中的基线之间的直接比较。
数据到文本的生成 我们的工作也与神经数据到文本生成的任务有关。关于早期的非神经文本生成方法的调查,我们参考 Reiter and Dale (1997)。最近的神经方法已应用于从体育统计表(Wiseman et al., 2017),列表和表格(Yang et al., 2017)和维基百科信息框(Lebret et al., 2016)生成文本。这些研究和我们的主要区别在于我们的动机。这些作品专注于在一个狭窄的领域内生成连贯的文本(例如体育、食谱、介绍性句子),并对BLEU和METEOR评分等指标进行优化。相反,我们的重点是利用大量的结构化知识源来提高语言模型在宽泛主题领域中处理稀有词例和事实的能力,我们重点是提高困惑度。
通用语言建模 与此相关的还有最近的一些论文,它们提出了对AWD- LSTM的修改,以提高Wikitext-2的性能(Gong et al., 2018; Yang et al., 2018; Krause et al., 2018)。我们选择了AWD-LSTM作为基准,因为这些贡献是正交的,而且许多技术都与知识图谱语言模型兼容。知识图谱语言模型在AWD-LSTM的基础上进行了改进,我们期望将知识图谱语言模型与这些方法结合使用将产生进一步的改进。
结论与未来的研究方向
由于依赖记忆,现有的语言模型无法生成关于真实世界实体的事实正确文本。特别是,它们无法捕捉到稀有实体和数字、日期等单词类型的长尾。在这项工作中,我们提出了知识图谱语言模型(KGLM),这是一个神经语言模型,它可以访问一个外部的事实源,以知识图谱的形式编码,以生成文本。我们的实现可以从以下网址获得:https://github.com/rloganiv/kglm-model。我们还引入了Linked WikiText-2,其中包含了与知识图谱中的事实对齐的文本,从而允许高效地训练模型。Linked WikiText-2可以免费下载,网址是:https://rloganiv.github.io/linked-wikitext-2。在我们的评估中,我们表明,通过利用这个数据,知识图谱语言模型能够生成更高质量的、符合事实的文本,这些文本中包含了罕见的实体和特定的词例,如数字和日期等。
这项工作为未来知识感知语言建模的研究奠定了基础。知识图谱语言模型的一些局限性,如推理过程中需要边际化和依赖注释词例等,为推进神经NLP模型的研究提出了新的研究问题。我们的远距离监督的数据集创建方法也可以用于其他知识图谱和其他类型的文本,为新领域的精确语言建模提供了机会。
致谢
首先,我们要感谢Stephen Merity分享了用来收集Wikitext-2数据集的材料,感谢Niish Gupta修改了他的实体链接器以帮助我们的工作。我们也要感谢Dheeru Dua和Anthony Chen的反馈。这项工作部分得到了艾伦人工智能研究所的支持,部分得到了美国国家科学基金会奖#IIS-1817183的支持。所表达的观点是作者的观点,并不反映资助机构的官方政策或立场。