(译)面向共鸣的开放域对话模型:一种新的基准和数据集

面向共鸣的开放域对话模型:一种新的基准和数据集

摘要

对话代理面临的一个挑战是识别对话伙伴的情感并作出相应的回应,这是一项关键的交流技能。尽管对人类来说在对话中识别和承认其他人的情感是一件很直接的事情,但由于缺乏合适的可公开获取的训练和评估数据集,所以对于智能系统来说这仍然是一个典型的挑战。本文对于共鸣对话生成和共鸣对话提出了一个新的基准和一个基于情感情景、包含25000条对话数据的新型数据集。我们的实验表明那些使用我们数据集的对话模型被人类评估员认为比那些仅使用大规模网络对话数据进行训练的模型更具共鸣力。我们也对对话模型向共鸣反应的改编进行了实证比较,即利用现有的模型和数据集,而不需要繁琐的再训练完整的模型。

1.简介

面向人类对话代理的一个可取特点是通过理解和承认所有的潜在情感,对于那些描述个人经历的对话伙伴给出适当的响应,这是一项我们视为共鸣响应的技能。例如,虽然图1中被划掉的响应也是与主题相符合的,但是“恭喜,那太好了”或许更让人满意,因为它以共鸣的方式承认了对于对方潜在成就感的认同。在本项工作中,我们研究了当前对话系统的共鸣响应生成,并且提出使用一个新的资源(EMPATHETICDIALOGUES)的实验,作为评估这个技能的基准。

共鸣响应对于那些面向一般对话或闲聊的对话系统是十分重要的。的确,普通的交流是通过人们分享他们的情绪和境况而被频繁的提示。但是研究者分析那些目标导向的对话时也发现那些普通对话在交互中频繁入侵,要么是“热身式”介绍,要么就绕道而行。事实上,在许多领域,参与社交谈话、对情感暗示做出反应和表现出关心他人的态度都可以产生更好的结果。虽然这些研究中有许多涉及人与人之间的交互,但已经证明,人类经常以自然和社交的方式与机器互动,因此有理由预期对话代理也会从共鸣反应中受益。

最新且强大的语言结构是在大量的未被处理的文本集、社交媒体对话或独立书籍上训练的。在这种类型数据上训练的模型可能会表现出一些在自发网络对话中观察到的攻击性和冷酷的反应。不幸的是,尽管闲聊对话的基准已经提出了,但据我们所知,目前并没有基准去衡量对话代理是否可以以共鸣的方式进行对话。
    本文致力于促进评估模型生成共鸣响应的能力。我们引入了一个新的对话系统任务,即对于人们描述的大部分包含情感信息的情况给出响应,同时介绍了一个大约25000条个人对话的新型数据集,EMPATHETICDIALOGUES (ED)。每个对话都基于一种特定的情景,说话者去感受给定的情感词,聆听者进行回应(图2)。这个新的资源包含众包的一对一的对话,以一种平衡的方式覆盖大部分情感集。与很多来自其他文本域,例如Scherer
and Wallbott (1994), Strapparava and Mihalcea (2007), Mohammad et al. (2018),
and Gupta et al. (2017)这些相似的情感预测数据集相比,这个数据集更大并且包含更广泛的情感集。此数据集已经公开发布,相应的代码是为了复现本文的实验结果。

我们的实验表明那些大容量对话模型在自发网络对话数据上训练后并不能具备同情感。我们提出了两个简单的方法去利用我们的数据集提高那些原有模型的能力。检索模型在进行推理时,使用我们训练数据集中的句子作为候选响应,并且在我们的任务中进行微调。最后,我们探索以不同的方式去结合相关任务的信息,这可以生成更具共鸣的响应。因此,本文的贡献如下:1)我们公布了一个新的数据集作为新的基准;2)我们展示了训练结束后的结果,证明这个数据集确实可以提高端到端对话系统在共鸣对话上的表现。

2.相关工作

情感数据

构建我们的数据集需要决定模型能对哪些情绪集合做出响应。多个图表试图去总结针对情绪的图谱,而情感类别的来源都来自一些基础的情感集,像是从生物反应到大量在文本中推断出的情感标签。我们将来自多个注释图表的情绪进行合并,尤其要注意那些仅由一种情景推断出来的情绪,因为这种情感在对话情景中是很重要的。对于很多情感分类任务来说,分布式表示方法有着广泛的研究,那些模型一般都是建立在深度神经网络上,并在大规模弱标记数据集(例如emojis (Felbo et al., 2017) or hashtags (Mohammad, 2012))上预训练的,这些数据集都是由公共社交媒体发布在推特上的。SEMEVAL2019 EmoContext 挑战赛也使用来自推特并且超过两轮的对话数据去检测三种基本情绪(“开心”,“难过”,“生气”)。我们专注于个性交流,所以不会使用社交媒体数据去模拟一对一对话的情景。公共社交媒体内容会出现在大量外围受众面前,而受众范围的不确定性以及自我介绍的必要性已经证明:与私人通信相比,其对主题的选择会有所不同,因为人们更倾向于通过私人渠道分享更加强烈的负面情绪。在本文中,我们完成了一个比公共社交媒体内容更加平衡的情绪覆盖数据集,并使一个更接近我们最终训练目标的对话模型能去响应任意的情绪。

控制语言生成

一些其他的工作集中在通过手动指定目标来控制文本响应的情感内容或通过一个通用术语鼓励产生更高水平的效果,而在验证时则集中在匹配一个预先设计好的情感内容而非去产生一个具有共鸣的响应。Niu and Bansal等人生成的响应是在一个特殊的礼仪性设置(礼貌、粗鲁、一般)中进行的。Huber等人研究如何响应在图片中检测到的情绪。我们的工作集中于共鸣响应,这里的情感信息是在文本中推断出来的信号,而不是传递预先指定的情绪信息。

相关聊天数据

一些工作试图通过将聊天对话模型置于个人环境中以使其更具吸引力,而这种个人环境主要集中于一些个人事实(例如“我来自纽约”)。另一个有趣的资源是DAILYDIALOG (DD)数据集,它包括13000条对话数据,是通过爬取英文教育网站获得,并且加入了情感标签注释。很多对话数据都集中在英文学习的主题(对主题排序后,发现主要有点餐、问路和介绍等),仅有5%的对话具有有效标签,大多数对话的标签是像“none”或者“happy”这种通俗的类别标签。我们的任务明确地集中在关于情感基础的个人情景的对话上,并且考虑一个更丰富,分布更均匀的情绪集。我们也在对话中引入了一个明确的单一聆听者,此聆听者对所描述的情景以一种共鸣的方式进行响应,这样做的目的是使这个实验的设置尽可能地接近我们设计的一对一共鸣对话的目标场景。

3 个人情况的谈论

我们计划实现一个开放域的一对一对话环境,比如,给定一个情感标签,这两个人对于给定的这个情感去讨论其中一个人的境况。我们使用以下格式收集了大约25000条对话数据。

情感情景基础

每一条对话都基于一种情景,其中一个参与者写下与给定情感标签相关的内容。我们考虑到了32种情感标签,如图3所示,这是我们在一些情感预测数据集中获得的情感标签,并对其进行合并得来的。这些情感标签覆盖了大部分的积极和消极的情感。我们提供单一情感标签的目的是让一种情景与(至少)一种情感体验是密切相关的,尽管我们也注意到还有一些情感也与其有较强的关联,并且在一个给定的对话中,也可能会唤起其他相关的情感。

讲述者和聆听者

其中一个人(讲述者)写下对特定情景的描述来初始化一个对话并对其进行讨论。对话中的另一参与者(聆听者)通过讲述者说的内容和响应的内容去感受潜在的情景。接着讲述者与聆听者最多再进行6轮对话。我们在训练数据中抽取了两条对话样例展示在图2中,另外抽取了超过十条数据展示在附录中。下面讨论的模型是在聆听者响应讲述者的情景中进行的。模型既没有给出讲述者写的情景描述,也没有给出情感标签(就像收集对话时没有给定听众一样)。我们的数据也可以用于为讲述者生成以情景描述为条件的对话,虽然我们现在将此留作未来的工作。

集合细节

我们使用ParlAI平台收集众包对话去与亚马逊的客服系统Turk互动,此过程雇佣了810位工人。一部分工人被要求去(1)选择一个情感词,并基于对此情感词的感受描述一种情景,(2)对于每一种情景进行一次对话,如下所述。每个工人至少贡献了一种情景描述和一次对话:一个作为讲述者的工人的贡献和一个作为聆听者的工人的贡献。在第一次10K对话中,他们被允许参加尽可能多的互动,然后我们限制这些“频繁活跃”的工人最多参加100次对话。每个工人的对话中值是8,而平均值是61(一些工人比另外一部分贡献的更积极)。为确保质量,我们手动检查最频繁工人的随机对话子集。

任务设置

在此任务的第一阶段,工人被要求基于一个情感标签用少量的句子描述一种情景。我们要求工人们尽量将描述的语言保持在1—3句。响应的平均长度为19.8个词。第二个阶段,让两个工人为一组并且进行两次简短的交谈。每次聊天,都由一个工人(讲述者)开始一次关于他们先前描述的情景的对话,而另一个工人(聆听者)进行回应。两人既看不到对方被赋予的情感标签,也看不到对方提交的情景描述,因此他们只能根据对话中的暗示信息来回应对方。每次对话可以有4—8句话(平均每次对话为4.31句)。平均每句话有15.2个词。

确保均衡情感覆盖

在最初几轮数据收集之后,我们强制让第一次参加这项任务的工人在那些到目前为止被选的最少的三种情感中选择其中一种。如果他们已经参加过这项任务,就让他们在自己第一次任务时选择的最少的情感中进行挑选。考虑到为共鸣响应训练的对话模型需要能够处理情感信息,即使它们并不是那么频繁,我们也仍然选择这种平衡程序,以使训练这些类别变得容易,同时仍然允许使用某些措施去挑选合适的工人。正如图3所示,情感标签提示的分布接近于平均分布,只有一少部分是稍微多或稍微少的被选择的。

EMPATHETICDIALOGUES
数据集的统计

这个数据集包含24850条针对情景描述的对话数据,总共有810个参与者,通过ParlAI平台公布,可以与相应的代码一起直接下载。我们划分这些对话数据80%为训练集,10%为验证集,10%为测试集。为了防止划分数据集后,不同功能的数据中情景描述的数据的重叠,我们对数据进行分割,以便所有与提供初始情况描述的同一说话人的会话集都位于同一分区中。最终训练集/验证集/测试集分别包含19533/2770/2547条对话数据,相应的,我们在训练集中抽取了10个样例展示在附录表的A部分。

4 共鸣响应生成

本节展示了如何使用ED数据集作为一个基准去测量一个模型以共鸣的方式生成响应的能力,并将ED作为一个新的资源使一般闲聊对话模型更具共鸣力。我们也研究了以不同方式结合现有模型,使其产生更具共鸣的响应。我们使用ED对话集在生成对话响应的任务中以聆听者的角色对模型进行训练和验证。为模仿正常对话,模型可以在对话中使用先前的话语作为语境,而不能由情感词进行提示(例如,自豪),也不能获取讲述者产生的情景描述信息。给定一个由n个先前的语句串联而成的对话语境x,其表示为x1,…,xm,然后是目标响应y-,我们的模型被训练去最大化生成目标响应的似然估计p(¯y|x)。我们研究了基于生成和基于检索的设置,展示在图4中。

4.1 基础架构

我们模型的基础是Transformer神经网络,它已经被证明在机器翻译和对话生成任务中是成功的。

基于检索

在基于检索的设置中,给了模型大量的候选响应集合Y,并让模型去选择最好的一个y*。我们首先对Yang等人提出的基于检索Transformer的体系结构进行了实验:两个Transformer编码器分别嵌入语境x和候选响应y∈Y,相应的还有hx和hy。我们也对以BERT作为基础的体系结构进行了试验,使其编码候选响应和语境,将BERT中的最终隐藏向量作为hx和hy编码。模型根据对hx和hy的点积进行softmax操作,以此来选择候选语句。我们最小化正确选择了候选响应的负对数似然估计。在训练时,我们把这一批次的所有语句都作为候选响应,一个batch的大小为512,这就给了模型更多的负面例子(batch大小为256的BERT除外)。在推理时,我们对三组候选话语进行了实验,以供模型选择:ED训练集中所有的响应语句(YED),DD训练集中所有的语句(YDD),来自17亿Reddit对话的100万条语句(YR)。

生成

在生成设置中,我们使用全Transformer结构,由一个编码器和一个解码器组成。Transformer解码器使用编码器的输出去预测词序列y,其被训练去最小化目标序列¯y的负对数似然估计。在推断时,我们使用Vijayakumar等人提出的多波束搜索。

训练细节

无论是从0开始的Transformer架构,还是Devlin等人提出基于BERT的BERTbase模型。都是在17亿Reddit对话集的预答复集上进行预训练的。在ED上没有任何微调的预训练模型在下文中都被称为“预训练”。我们限制语境和响应的最大词数均为100。Transformer神经网络在大多数实验中都是相同的基本结构(四层与六个转换头),并且训练的方式也都与Mazare等人的方式一样。我们也对一个更大的五层的结构(即为“Large”)和BERT检索模型进行了试验,这需要的训练时间更长(请参看表3中的训练时间)。对于所有的模型,我们都保留验证集中损失最小的版本。对于Transformer模型来说,我们采用300维词向量在使用fastText爬取的普通数据上进行预训练,对于BERT模型,我们使用768维的词向量在书库和英文维基百科上进行预训练。更多训练细节展示在附录D.1中。

4.2 利用ED的训练数据

基于检索的模型依赖于候选集。ED数据是在一对一的环境中,通过指示被明确地收集成为共鸣的数据集,这不是Reddit会话数据用于预训练的情况,并且这些领域的候选者可能比一般的会话话语更适合共鸣反应。因此,我们尝试通过基于预训练检索的模型将ED训练集候选响应加入到推理时使用的池中,而不需要在ED上进行微调。对于基于检索的模型和生成模型,我们也尝试去微调预训练模型,使其在先前四句话为语境窗口的条件下预测ED中的下一句话,这是我们的数据集中对话的平均长度。这些模型被视为“微调模型”。这种微调一直进行到所有架构(除了那些被称为“Pretrained”的架构)收敛为止。

4.3 从外部预测因素添加信息

许多现有的模型已经在一些有监督任务中进行了预训练,那或许与共鸣响应有关。将这些模型与我们的基础架构的表示相结合,可能会从以前的训练时间和外部训练数据中获益,而无需重做工作或要求访问这些数据,这可能对相关人员很重要。请注意,这可能会大大增加生成的模型的有效容量,以及总体上使用的训练数据总量,但我们在这里的目标是从经验上了解体系结构设置或监控领域中的变化对性能改进的鲁棒性。我们尝试从两个预测任务中添加监督信息:与我们的任务关系更密切的情感检测和主题检测,这两个任务也可能有助于制作相关的响应。

准备Top-k预测标签

这种设置(图5)PREPEND-1是一种非常简单的向数据中添加监督信息的方法,不需要修改体系结构,并且可以与黑盒分类器一起使用。来自有监督分类器的最好的预测标签仅作为编码器输入,预先放置在令牌序列的开头,如下所示:

原始:“I finally got promoted!”

Prepend-1:“proud
I finally got promoted!”

相似的方法已经被用于控制文本生成的风格(例如Niu and Bansal,2018)。在这里,我们使用fastText模型作为预测的体系结构。语境和候选响应都通过分类器运行并且接收前置标签。微调与之前类似,但是使用那些被改进的输入。我们使用两个外部的信息源。为了提供情感信号,我们训练了一个分类器去预测情感标签,它根据说话人在对话前对情景的描述来预测情感标签。为了评估来自更遥远任务的监督是否仍然有用,我们还使用了一个在20个新闻组数据集(Joachims,1996)上训练的分类器进行主题分类(TOPICPREPEND-1)。

5 实验验证

我们评估这些模型是否有能力再现聆听者的响应内容(即对别人的故事作出反应的能力)。我们同时使用自动化度量和人工评估两种方式去对每个模型的检索/生成能力进行打分。人工评估是重要的,因为自动化度量并不总是与人类对对话质量的判断相一致,所以我们提供自动化度量是为了让人们知道它们与人类对这项任务的判断有多一致。

自动化度量(表1)

对于检索和生成系统来说,我们计算模型响应的BLEU分数,与黄金标签(实际响应)进行比较,遵循对话生成中早期工作的实践方式。对于生成系统,我们还额外报道了实际黄金响应的困惑度。对于基于检索的模型,我们进一步计算[email protected],即从测试集中随机选择的100个示例中,模型选择正确响应的精度。当我们计算[email protected]时,实际响应被包含在候选集中,不同于检索系统对所有其他度量的推断,它仅使用训练语句作为候选集。

人工评测(表2)

我们在MTurk上运行众包任务(更详细的细节在附录B中)。参与者被给定一个随机选择的测试集示例的模型输出,并要求对模型的不同方面进行评分。评分任务提供了一种比较响应方面的方法,我们专门检验评分者的响应是否承认对话伙伴的感受。我们收集了每个模型至少100个评分,并询问了性能的三个方面,所有方面都是按照Likert量表评分的(1:完全没有,3:有点,5:非常多):

同情/共鸣:响应是否表明理解了谈论他们经历的人的感受?

关联的:这些响应对与当前的谈话合适吗?他们有话题吗?

流利的:你能理解这些响应吗?用语准确吗?

5.1 结果

预训练模型基线

当从Reddit话语中提取候选语或使用生成模型时,人们对预训练的对话模型的共鸣能力评价很差(表2)。基于BERT的模型或大规模Transformer模型具有更高的评分,这表明能力的提高使模型看上去更具共鸣力,但仍然比人类的表现差的多,而训练却要更加困难(表3)。

运用EMPATHETICDIALOGUES进行候选集筛选

表1展示了仅使用少量ED训练集的候选响应就能提高检索模型的BLEU分数。

使用我们数据集中的候选响应也大大提高了预训练的检索模型在所有人类指标上的性能,特别是我们最感兴趣的共鸣子核心(表2)。

使用EMPATHETICDIALOGUES进行微调

此外,在我们的数据进行预测会话响应的微调,将会改进所有自动化指标(表1)。虽然在ED数据集上的微调提高了预测下一个ED语句的性能,但在预测其他语料库中的下一个语句时,这可能会以牺牲性能为代价。为了衡量这一点,我们在DAILYDIALOG和REDDIT(从同一个语料库中绘制上下文语境和候选集)上进行预测时,比较了下一个语句预测的自动化度量和预训练的模型,以及使用ED数据集进行微调的模型(对于我们的基础和更大的基于检索的Transformer模型)。与ED测量的[email protected]相比增加了12-14%(见表1和表7),ED微调导致DD增加5-7%,R减少2-3%。对于这三个数据集,微调将AVG BLEU从0.2增加到0.5。R上的性能略有下降并不奇怪,因为预训练的模型直接根据Reddit预测进行训练。但是,DD的改进是一个令人鼓舞的迹象,即ED的微调改进可能会推广到其他会话数据集。

在检索和生成设置中,对ED数据的微调通常也会改进ED任务的人工度量(表2)。

用外部预训练分类器扩充会话模型

自动评估和人工评估表明,预预测情绪或主题可能会提高基于BERT的高容量模型(而不是较小模型)的性能,同理心评分接近人类表现。

需要对大模型进行更广泛的实验,以确认更大的容量使额外的外部监督对这项任务有效。

资源和能力

表3量化了几个模型和设置的资源和参数使用,包括一个更大的Transformer生成模型(5层而不是4层)和基于BERT的架构,这些架构的参数需要更长时间的训练。在预训练的检索模型中使用ED中候选响应,或者在ED数据集上对预训练的会话模型进行微调,使得较小的模型比较大的模型表现得更好,并且增加的使用资源最小。

6 总结

我们引入了一个新的25000个对话的数据集,这些对话是基于特定的情感标签所描述的情境。我们的实验表明,使用这个数据集来提供检索候选对象或微调对话模型会使被评估模型更具共鸣能力的反应。如何将共鸣反应融入更广泛的对话中,例如,情感共鸣需要保持话题一致或提供的信息相对平衡。我们希望我们的研究结果和数据集能够激励更多的研究朝着使对话系统更具共鸣性方向发展。

致谢

我们感谢匿名评论者的深刻反馈和建议。本材料部分基于国家科学基金会研究生研究奖学金项目(授予编号:DGE-1256082)支持的工作。

原文地址:https://www.cnblogs.com/yurui/p/12004662.html

时间: 2024-10-10 10:37:01

(译)面向共鸣的开放域对话模型:一种新的基准和数据集的相关文章

LayaAir之小游戏开放域开发

版本 : LayaAir2.0.0bate4 一 : 认识类 : Laya.WXOpenDataViewer , 顾名思义:此类封装了开放域(子域)的画布功能.这样的话就不需要程序员自己去写画布功能了. 其用法主要如下: ①:在UI编辑其中 , 使用此组件(可设置宽高,坐标等等)②:可以在代码中new,再设置宽高,坐标等,代码片段(伪代码)如下 private _my_open : Laya.WXOpenDataViewer = null; this._my_open = new Laya.WX

深入浅出:了解jsonp跨域的九种方式

什么是“”跨域”: 跨域访问,简单来说就是 A 网站的 javascript 代码试图访问 B 网站,包括提交内容和获取内容.由于安全原因,跨域访问是被各大浏览器所默认禁止的.当一个域与其他域建立了信任关系后,2个域之间不但可以按需要相互进行管理,还可以跨网分配文件和打印机等设备资源,使不同的域之间实现网络资源的共享与管理.这就形成了“跨域”. 广义的跨域: 1.) 资源跳转: A链接.重定向.表单提交2.) 资源嵌入: <link>.<script>.<img>.&l

解决浏览器跨域的几种方式

1.什么是跨域问题 在页面中使用js访问其他网站的数据时,就会出现跨域问题,比如在网站中使用ajax请求其他网站的天气.快递或者其他数据接口时,以及hybrid app中请求数据,浏览器会提     示一下错误: XMLHttpRequest cannot load http://你请求的域名. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://当前页的域  

Weblogic新增域(可以配置新端口)

操作系统 :Linux version 2.6.32-504.el6.x86_64 Weblogic Server :11g 一.Weblogic新增域(可以配置新端口) 以weblogic用户登录 1 执行下面语句进入weblogic的bin目录: cd   /home/weblogic/Oracle/Middleware/wlserver_10.3/common/bin/ 2运行新建服务向导: ./config.sh 出现如下图界面 默认是新建服务(1.Create a new WebLog

vue开发环境和生产环境里面解决跨域的几种方法

  跨域指浏览器不允许当前页面的所在的源去请求另一个源的数据.源指协议,端口,域名.只要这个3个中有一个不同就是跨域. 这里列举一个经典的列子: #协议跨域 http://a.baidu.com访问https://a.baidu.com: #端口跨域 http://a.baidu.com:8080访问http://a.baidu.com:80: #域名跨域 http://a.baidu.com访问http://b.baidu.com:   现在很多公司都是采用前后分离的方式开发.那么出现经常和会

php跨域的几种方式

PHP实现跨域的几种形式 1.JSONP(JSON with padding)原理 利用html里面script标签可以加载其他域下的js这一特性,使用script src的形式来获取其他域下的数据,但是,因为是通过标签引入的,所以,会将请求到的JSON格式的数据作为js去运行处理,显然这样运行是不行的. 因此,就需要提前将返回的数据包装一下,封装成函数进行运行处理,函数名通过接口传参的方式传给后台,后台解析到函数名后在原始数据上包裹这个函数名,发送给前端.(JSONP 需要对应接口的后端的配合

什么是跨域 &amp; 跨域的3种解决方案

所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)端口号(port) 同源策略是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源. 同源策略是浏览器安全的基石 同源策略会阻止一个域的 javascript 脚本和另外一个域的内容进行交互.例如办公内外网环境,当我们访问外网一个恶意网站的时候,恶意网站就会利用我们的主机向内网的 url 发送 ajax 请求,破坏或盗取数据 一.浏览器的非同源限制以及3种解决思路 非同源限制 无

详解 CORS跨域的几种不同实现方式

CORS 定义 CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing),它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制.提供了 Web 服务从不同域传来沙盒脚本的方法,以避开浏览器的同源策略,是 JSONP 模式的现代版.与 JSONP 不同,CORS 除了 GET 要求方法以外也支持其他的 HTTP 要求.用 CORS 可以让网页设计师用一般的 XMLHttpRequest,

跨域的几种方法及案例代码

1.通过动态script实现跨域 function loadScript(url, func) { var head = document.head || document.getElementByTagName('head')[0]; var script = document.createElement('script'); script.src = url; script.onload = script.onreadystatechange = function() { if(!this.