• 技术专题
  • TechnologyTopic
  • 科技文硬创:解密巨头们所关注的聊天机器人

    • 技术专题
    • 时间:2016-08-12
    • 编译:lx
    • 我要投稿
    • 0
     引言

      chatbot是最近一段时间非常火的一个词或者一个应用,不仅仅各大新闻媒体在热炒bot的概念,各大巨头也投入巨大的资源进行研发,arxiv上刷出bot相关的paper也更是家常便饭。炒作归炒作,PR归PR,不得不说一个尴尬的事实是市面上确实难以找到一个真正好用的bot。bot按照涉及的领域,分为开放域(open-domain)和面向具体任务(task-oriented)的bot。开放域要做的事情很大,更像是一个什么都能搞的平台,不管你提什么样的需求,它都能够解决,有点true AI的意思,而面向任务的bot则专注做好一件事情,订机票,订餐,办护照等等。

      说到开放域bot,大家接触最多的也就是一些回答非常无厘头的娱乐用bot,比如很多年前活跃在各大社交网站上的小黄鸡,现在市面上活跃着很多号称掌握了bot技术,在用深度学习解决bot技术的bot公司,都是这种,解决不了什么实际问题,就是能和大家聊上两句,而且很多时候回答都是牛头不对马嘴的,十分可笑。

      再说task-oriented bot,市面上最多的就是客服机器人,银行也好,电商也罢,不想重复性地回答用户的问题,就用一个客服机器人来应对,且不说效果如何,开发一个具体task的bot需要费不少工夫,而且后期还要大量的维护,因为太多的hand crafted features被用到,整个bot的框架横向扩展性相对来说较差,换一个场景基本上就需要重新开发一套,人力成本太高了。

      bot的理想非常丰满,大公司描绘的场景也确实很美,但现实的bot却狠狠地浇了一盆冷水下来。期望越高,失望越大。如果媒体一味地吹捧bot,仿佛整个世界明天就会是bot的了,对bot的发展并无益处,捧杀只会带来气泡,破裂之后,一切如初。

      功能强大的、开放域的bot在短期内是比较难实现的,但是如果降低期望,将bot不应当做是一种技术层面的革命,而应当做交互层面的革新才是理性的态度,bot作为一种入口,可能大家都不再需要一个随身携带的终端,只需要找到一个可以识别身份,可以联网的硬件,比如一面镜子,就可以执行很多的task,订机票、买东西等等等等。bot这个时候起到的是一个操作的入口和背后执行各种不同task的黑箱,我们不需要看到整个执行过程,也不需要知道原理是什么,通过一些简单的语言交互,就能完成一些复杂的task,终端要做的事情就是反馈结果和接收输入,执行的过程都在云端,各种bot云。

      而这一切的关键是解决好task-oriented bot,用更多data driven的解决方案来代替传统的人工features和templates。

      |问题描述

      bot是一个综合性的问题,涉及到下面三个主要问题:

      1、response generation(selection)

      对话生成是最后一个步骤,是输出的部分。简单总结下,有四种solutions:

      solution 1直接根据context来生成对话,这方面最近的paper非常地多,尤其是seq2seq+attention框架席卷了NLP的很多任务之后,对话生成的benchmark也一次又一次地被各种model刷新着。对话生成的问题,被定义为基于某个条件下的生成模型,典型的根据context来predict words,涉及到句子生成的问题,评价问题就会是一个比较难的问题。

      solution 2当然有的paper并不是将对话生成定义为语言模型问题,而是一个next utterance selection的问题,一个多选一的问题,给定一个context,给定一个utterance candidate list,从list中选择一个作为response,当然这类问题的难度会小很多,评价起来也非常容易,但是数据集准备起来要多花一些功夫,而且在实际应用中不好被借鉴。

      solution 3rule-based或者说template-based,response的最终形式其实是填充了一个模板而成的,大多数的东西是给定的,只有一些具体的value需要来填充。这一类解决方案很适合做task-oriented bot,但过多的人工features和templates导致了其难以移植到其他task上。

      solution 4query-based或者说example-based,response是来自于一个叫做知识库的数据库,里面包含了大量的、丰富的example,根据用户的query,找到最接近的example,将对应的response返回出来作为输出。这一类解决方案非常适合做娱乐、搞笑用的bot,核心技术在于找更多的数据来丰富知识库,来清洗知识库。但毕竟respnose是从别人那里拿出来的,可能会很搞笑,但大多数会牛头不对马嘴。

      2、dialog state tracking(DST)

      有的paper称DST为belief trackers,这个部件其实是bot的核心,它的作用在于理解或者捕捉user intention或者goal,只有当你真的知道用户需要什么,你才能做出正确的action或者response。关于这个部分,会有Dialog State Tracking Challenge比赛。一般来说都会给定一个state的范围,通过context来predict用户属于哪个state,有什么样的需求,是需要查询天气还是要查询火车票。

      3、user modeling

      bot面向具体的业务,都是和真实的user来打交道的,如果只是简单的FAQ bot,回答几个常见的问题可能不需要这块,但如果是其他更加复杂、细致的业务,都需要给用户建模,相同的问题,bot给每个人的response一定是不同的,这个道理非常简单。user modeling,需要涉及的不仅仅是简单的用户基本信息和用户的一些显式反馈信息,而更重要的是用户的history conversations,这些隐式的反馈信息。就像是推荐系统火起来之前,大家都是中规中矩地卖东西,但是有一些聪明人开始分析用户的行为,不仅是那些点赞行为,更多的是那些用户不经意间留下的“蛛丝马迹”,从而知道了用户对哪些东西潜在地感兴趣,也就是后来推荐系统在做的事情。对user进行建模,就是做一个个性化的bot,生成的每一个response都有这个user鲜明的特点。

      |语料

      大型的语料都是用来训练开放域bot对话生成模型的,数据源一般都是来自社交网站。而对于task-oriented bot来说,客户的数据一般规模都非常地小,这也正是难以将data driven的方案直接套用到task-oriented bot上的一个主要原因。

      [1]中给出了bot训练语料的survey,感兴趣的同学可以读一下这篇survey。

      

      图来自文章[13],英文的语料确实比较多,Sina Weibo那个语料是华为诺亚方舟实验室release的[12]。从twitter或者微博上产生bot数据的话,“conversational in nature”效果不如从ubuntu chat logs这种聊天室产生的数据更加适合训练response生成模型,因为更加天然无公害。文章[5]也用了一个大型中文语料,数据来自百度贴吧。

      |模型

      研究bot的paper是在太多了,这是一个非常活跃的研究领域,细分的方向也非常的多,接下来按照所针对的研究问题来分别介绍一些模型。

      seq2seq生成模型

      现在最流行的解决方案是seq2seq+attention,encoder将user query feed进来,输出一个vector representation来表示整个query,然后作为decoder的condition,而decoder本质上就是一个语言模型,一步一步地生成response,[2]采用就是这种方案,google用了海量的参数训练出这么一个模型,得到了一个不错的bot。

      

      而典型的seq2seq存在一个问题,就是说容易生成一些“呵呵”的response,即一些非常safe,grammatical但没有实际意义的response,比如”I don’t know!”之类的。原因在于传统的seq2seq在decoding过程中都是以MLE(Maximum Likelihood Estimate)为目标函数,即生成最grammatical的话,而不是最有用的话,这些safe句子大量地出现在训练语料中,模型学习了之后,无可避免地总是生成这样的response,而文章[3]借鉴了语音识别的一些经验,在decoding的时候用MMI(Maximum Mutual Information)作为目标函数,提高了response的diversity。

      文章[4]认为类似于RNNLM这样的语言模型在生成人话质量不高的根本原因在于,没有处理好隐藏在utterance中的随机feature或者说noise,从而在生成next token(short term goal)和future tokens(long term goal)效果一般。

      

      在生成每一个utterance时,需要用到四个部分,encoder RNN、context RNN、latent variable、decoder RNN,按顺序依次输入和输出。这里的latent variable和IR中的LSI有一点异曲同工,latent表明我们说不清他们到底具体是什么,但可能是代表一种topic或者sentiment,是一种降维的表示。

      文章[5]提出了一种叫做content introducing的方法来生成短文本response。

      

      step 1给定query之后,预测一个keyword作为response的topic,这个topic词性是名词,这里的keyword并不能捕捉复杂的语义和语法,而只是根据query的每个词来预估出一个PMI(Pointwise Mutual Information)最高的名词作为keyword.

      step 2[5]的模型叫做Sequence To Backward and Forward Sequences,首先进行backward step,给定一个query,用encoder表示出来得到一个context,decoder的部分首先给定keyword作为第一个词,然后进行decoding,生成的这部分相当于keyword词前面的部分;接下来进行的是forward step,也是一个典型的seq2seq,用encoder将query表示成context,然后给定backward生成的话和keyword作为decoder的前半部分,继续decoding生成后半部分。整个的流程这样简单描述下:

      step 1 query + keyword => backward sequence

      step 2 query + keyword + backward sequence(reverse) => forward sequence

      step 3 response = backward (reverse) sequence + keyword + forward sequence

      user modeling模型

      文章[6]针对的问题是多轮对话中response不一致的问题,将user identity(比如背景信息、用户画像,年龄等信息)考虑到model中,构建出一个个性化的seq2seq模型,为不同的user,以及同一个user对不同的请将中生成不同风格的response。

      

      [6]的模型叫Speaker Model,是一个典型的seq2seq模型,不同的地方在于在decoding部分增加了一个speaker embedding,类似于word embedding,只是说这里对用户进行建模。因为无法对用户的信息显式地进行建模,所以用了一种embedding的方法,通过训练来得到speaker向量,下面左边的图是speaker向量在二维平面上的表示,具有相似背景信息的user就会很接近,与word向量一个道理。

      reinforcement learning模型

      用增强学习来解决人机对话问题具有很悠久的历史,只不过随着AlphaGo的炒作,deepmind公司将增强学习重新带回了舞台上面,结合着深度学习来解决一些更难的问题。

      增强学习用long term reward作为目标函数,会使得模型通过训练之后可以predict出质量更高的response,文章[7]提出了一个模型框架,具有下面的能力:

      1. 整合开发者自定义的reward函数,来达到目标。

      2. 生成一个response之后,可以定量地描述这个response对后续阶段的影响。

      

      两个bot在对话,初始的时候给定一个input message,然后bot1根据input生成5个候选response,依次往下进行,因为每一个input都会产生5个response,随着turn的增加,response会指数增长,这里在每轮对话中,通过sample来选择出5个作为本轮的response。

      在一个大型数据集上训练一个效果不错的seq2seq作为初始值,用增强学习来提升模型实现自定义reward函数的能力,以达到期待的效果。

      文章[7]的模型可以生成更多轮数的对话,而不至于过早地陷入死循环中,而且生成的对话diversity非常好。

      task-oriented seq2seq模型

      现有的task-oriented bot多是采用rule-based、template-based或者example-based或者是综合起来用,用data driven的解决方案十分稀有。文章[8]和[9]就是尝试在bot的个别部件上采用深度学习的技术来做,并且给出了切实可行的方案。

      文章[8]先是从一个大家熟知的场景开始介绍,一个经验丰富的客服是如何带一个新入职的客服,分为四个阶段:

      1. 告诉新客服哪些”controls”是可用的,比如:如何查找客户的信息,如何确定客户身份等等。

      2. 新客服从老客服做出的good examples中模仿学习。

      3. 新客服开始试着服务客户,老客服及时纠正他的错误。

      4. 老客服放手不管,新客服独自服务客户,不断学习,不断积累经验。

      [8]的模型框架就是依照上面的过程进行设计的:

      开发者提供一系列备选的actions,包括response模板和一些API函数,用来被bot调用。

      由专家提供一系列example dialogues,用RNN来学习。

      用一个模拟user随机产生query,bot进行response,专家进行纠正。

      bot上线服务,与真实客户进行对话,通过反馈来提高bot服务质量。

      

      一个完整"texder: 0p2int-fam rgb(51, 51, 51)> >  sx;"t-indent: 0px; border: 0px(51, 51, 51)> >  sx;"t-indent: 0px; border: 0px(51, 51, 51)> >gin:

      开发者提供一系列备选的actions,包括response模板和一些API函数,用来被botalt="" style="border: 0px; margin: 0px; padding: 0px; font-size: 0px; color: transparent;54449550th: 600px;" />

      图来自文章[13],英文的语料确实比较多,Sina Weibo“呵呵”的response,即数皌因为k-orie是前面, 51, 型中rgb(51,督, 51, SL

        

      图来自文章[13],英文的语料确实比较多,Sina Weibo&ent: 0px; border: 0px(51, 51, 51)> > 共五inden候); word-wrap: break-word; font-family: 宋体; line-height: 26px;">  开发者提供一系列备选的actions,包括response模板和一些API函数,用来被bot,如何种 Igin: 0Netponk; word-wrap: break-word; font-family: 宋体; line-height: 26px;">  开发者提供一系列备选的actions,包括response模板和一些API函数,用来被bot,如,通过conity非季确为 0px; co继ndent: 0p将马迹&rd他伌继ext-inden个51); word-wrap: break-word; font-family: 宋体; line-height: 26px; text-align: center;">      开发者提供一系列备选的actions,包括response模板和一些API函数,用来被bot,如支持根ue需&rd一䜺fea开映射ext-indenolo限slot-templ(51,合表一元素

           0prdent了; word-wrap: break-word; font-family: 宋体; line-height: 26px; text-align: center;">  abot Op0px;or; word-wrap: break-word; font-family: 宋体; line-height: 26px; text-align: center;">      开发者提供一系列备选的actions,包括response模板和一些API函数,用来被bot,如,通rdentxt-i话中胶task行过argionsex 0px olor: rdent才能佅他䄌类0px olor: rdentd仇料d仇类似lor: 了; word-wrap: break-word; font-family: 宋体; line-height: 26px; text-align: center;">    开发者提供一系列备选的actions,包括response模板和一些API函数,用来被bot,如ent: 0px; bordentxt-度贴吧。 于找。user1, 51)个PMI(l)gb(51选一虑到mode一slotpx; bordes.food还px 0p块,值了富知2新入职成ntaddi0知 0p将的问值还p迌的s1, 51); word-wrap: break-word; font-family: 宋体; line-height: 26px;">  solution 4query-based或者说example-ba完全,d-to-dx 0px 0pxdata driven皬信息orderser鲜"text-本信型实本太个嚄闳内>

      而这一切的关键是解决好task-oriented bot,用更多data driven的解决方案来代替传统e="text-indent: 0px; border: 0px; margin: 0px; padding: Knowledg ources botgb(51, 51, 51); word-wrap: break-word; font-family: 宋体; line-height: 26px;">  现有的task-oriented bot多是采用rule-based、template-based或者example-based或者是综合起来纯粹matical的/p> es。<用选择丸人的户画的问题,ersity 0px; co基础er: 无法x; bor (Pnowledg sources会让为太<用51)个PMI(Pnowledg px; ma是非rder:ponse: rgb(源px; borde的[12]0]de一无公manpag colo的x; ma是rder:ponse㸪道e,px; borde的[12]9]de一d">abotolo的x; ma是风格绎源e,将ing:道e,r: r(26px Pnowledg ge-bh51); word-wrap: break-word; font-family: 宋体; line-height: 26px;">  而这一切的关键是解决好task-oriented bot,用更多data driven的解决方案来代替传统的[12]0]d这缌bot,给定一e candidate lisclassific 26px 0topic或考px;s; co0answer">㢘,ers这类问题的难ding: 2择出5起来也非常效果nt: 0ple="te询火车票。绎来也非常是数来说都51, 51, 51)Ltter贡献户进行车票o基础er:ersi0px简 (外indeg:齆大多数g: 26p,通r大多是非rder:ponse51); word-wrap: break-word; font-family: 宋体; line-height: 26px;">  而这一切的关键是解决好task-oriented bot,用更多data driven的解决方案来代替alt="" style="border: 0px; margin: 0px; padding: 0px; font-size: 0px; color: transparent;8804214dth: 600px;" />

      图来自文章[13],英文的语料确实比较多,Sina Weibo driven的解决方案来代替传统rgin: or: rnn 继rdx 0"text-indrnn。继 半部分xt-indrnn。继 Information经意ndrnn。继 Pnowledg 分。整件上采做杂"te艻nt: 上都51, 51, 51)rgin:开姰作Pnowledg 继练来得义rewarpx; boward无公techn support (义rewargind资源就: 0p二无公manpag c51); word-wrap: break-word; font-family: 宋体; line-height: 26px;">  而这一切的关键是解决好task-oriented bot,用更多data driven的解决方案来代替传统e="text-indent: 0px; border: 0px; margin: 0px; padding: IR中sensitivegb(51, 51, 51); word-wrap: break-word; font-family: 宋体; line-height: 26px;">  现有的task-oriented bot多是采用rule-based、template-based或者example-based或者是综合起来的[12]1x; margin: 产r: rgb丸同像,年ding;甧中规iding: 26px(speakiven皌依es。< 0px 0程0px; c(帮助;甧0px;margin< 的 51, 预伦26pxponk。这缌中规中矦票o>袋rgin:-indent:可避免的蹟知x; bowarrnn分。整缌的难dinuser

      现有的task-oriented bot多是采用rule-based、template-based或者example-based或者是综alt="" style="border: 0px; margin: 0px; padding: 0px; font-size: 0px; color: transparen30190966794h: 600px;" />

      图来自文章[13],英文的语料确实比较多,Sina Weibo dtrong style="border: 0px; margin: 0px; padding: 0px;">模型

      现有的task-oriented bot多是采用rule-based、template-based或者example-based或者是综合起来1, Informa不好sk业nt:一䜴px; mar标重晨翻译&rd动不好,BLEUx; paddinse,以ddin1, 51)给繎每篇nchmarer: 0px; m钱雇习; padrder: 不好nt:51, 5pad套不好戶果contextder: addin好; colo䜴rgb(5的进 0px 0程0px; c; marg此; color䜴p扁兜Dial1, 51)可避r致0px;着d己r縀种台 垌标戒给用6px 0pxgs这onse

    51, in: 0px; olor: rrd己1, 51); word-wrap: break-word; font-family: 宋体; line-height: 26px;">  task-oriented seq2seq模型

      现有的task-oriented bot多是采用rule-based、template-based或者example-based或者是综合起来; co; paddnchmaolo的ing: 线这个依px; c(工程0交流在decod维幂recodin: 1, 51); word-wrap: break-word; font-family: 宋体; line-height: 26px;">  step 1 query + keyword => backward sequence

    格皸个; padbusborscolor;ma荒 51)皘简单看r0px mes。<的简der: 0px;n: 0p当text先argin: 0p mat-inde本太逧(工<異g: 26地愹遥远ser鲜"te一息的re丸䍴分别䜉ding舫es。0px;;ma型。der: 选择扁gin:nes。open domainder: 选昴style="t来得息的re 0px 0px;门槛扁ddin[3]圉D来轓皺ddiﯞ生接l版argin: 0p

    51); word-wrap: break-word; font-family: 宋体; line-height: 26px;">  task-oriented seq2seq模型

      task-oriented seq2seq模型

      task-oriented seq2seq模型

    证rd己nn: 0p版逼縀; color後51)文,挖掘repre;见; colo见r皺点赞个use;paddin是什乖26, 51, (箾; co縀种rder:ponse:标n)非rder:ponse: rgb(x 0掘采縚r: 西 51)另外幂keywordnchmaolo看 据x ditioemo26px 0tx; p蛛rdnlpdeing: 产生boaddi; color: 0情绪;marginaddind销唰据ximu ma的rn: 0p足够版: 0px; ma同像素始; ma够px; bo特点像蛛丐的毸够清晰51)弌中规; mapres这中26, 5好<具每轮中规信x 0ptext-indddin致ture或 Infor下面l[3]席选择更o縀  task-oriented seq2seq模型

    rgb(51, 51, margin: 0px0px;免盼头据x 的篇51); 51, 51);a hrefpx; paddiwww.ro1, -china.0px;zhuanti/show-1984.html" tit bre未甼店r: 00种r女 0px; porderrer: 0重晨r">未甼店r: 00种r女 0px; porderrer: 0重晨r上篇51); 51, 51);a hrefpx; paddiwww.ro1, -china.0px;zhuanti/show-1968.html" tit bre仺奥运仺奥运 阅读 51); h3>rd-divsclass="rtron1ctxt" rd rd rd rd 全首r户管戶晨r麘;r0p草0px;落p欧盟="te像r: 0级?"> 产rg观寂="te像r: 0级? 日Lt晨r麱3月齐g: 津 松种揑那科种淝崎种OTC蹋壅亮 olor念控戶晨rx 耚芨便这re;中nde px 调查 51)伦理阻碍AInn: 0p< 爩亚px/pnn: 0p"> 张晽)tder: 智derep键户px; c忚

    nn: 0p n: 0p红爩酝酿px; c蓝px; 晨r麘面。风口渐起 达芬奇重晨r麱4denol宝宝实施手 0p 保千: 0p 0px炝重晨rp仕深 0px; rg迎; p革 丰田箾科n:基金 专注p赌tder: 智der 晨r麘。addFav('le="收藏');热门推rd 懍晨rp什indent——小电重 䜉l忚 -r2306:10px;argin: 0px12p> <24070r麘26p 习重交互r: 俌x/pnt残疾r麘lor念成功d程... -r2306:10px;argin: 0px12p> <23269r麘26p 习r: 智dere"; ma 懍晨rp望i麘般rgb... -r2306:10px;argin: 0px12p> <23029r麘26p 【olor】智久AGV小车< l阯;料运... -r2306:10px;argin: 0px12p> <22302r麘26p r面唰潄像国tx; 晨rx /潕版逼... -r2306:10px;argin: 0px12p> <20658r麘26p "> rgie进興造r麱晨r共: 0pr好... -r2306:10px;argin: 0px12p> <19532r麘26p “胜斗士” 0px; 重晨r麱 “餐饮onse” -r2306:10px;argin: 0px12p> <19383r麘26p 推动“重晨换r”? tes。resp 丆... -r2306:10px;argin: 0px12p> <19207r麘26p 乚马逊marg近距x; 僽有 防止懍晨rpr -r2306:10px;argin: 0px12p> <19179r麘26p 气味唤醒懍nt0px;什Mutual行? -r2306:10px;argin: 0px12p> <19078r麘26p)rd show_0px 0px('; paddiwww.ro1, -china.0px;k-wend/', 23, 1983); 0;" id="xyl_sroll" rd
    rd

    毅仙 bor行显神通" tit breer症t: 0: 0p 12 rgi AI p> 毅仙 bor行显神通" 1); aord rd

    毅仙 bor... " tit bre工业重晨r麱rg全olor申; boTop15rer:等筯p> " 1); aord rd

    rd

    --ord rd p styl钰信哥n读)t近平獡梅伦<耸吧小酌吃炸鱼薯条种漀px; 英oi0: 伙伴nadd金 ...rd 重晨r駍椖卖 駍餐仅需30r面 brgin: 0px; paddiwww.ro1, -china.0px;imag c/rgi03.jpg"o rd 热r: 玒行--ord 1; 51, 51);a hrefpx; paddiwww.ro1, -china.0px;zhuanti/show-1127.html" tit bre德两国tder制造“头脑风暴”9ol圭卷佛山"> 䜭德两国tder制造“头脑风暴”9ol圭卷佛... 开诚智der olo非给x 0特

    【热点】民建䜭央献策spe晨r强国 䜭船重r: 懍晨rp: 0p 带t 俌船舶制造rg 海尔rgin 0縀种阿: 0ppp赌 0px; 重晨r... 硅;decoBaxtrd放䜭国deco晨r/p 䜭国tdergin品与rg(济南)r: 论坛邀... 名企零距离 g: 5皺晨r麱rgi p s... 英莱科n:将o用ery︻发激光焊缝跟踪... 懍晨rp什indent——小电重 䜉l忚 brgin: 0px; paddiwww.ro1, -china.0px;imag c/rgi03.jpg"o var url = '; paddiwww.ro1, -china.0px;zhuanti/show-1983.html'; var parurl = ''; var wzname = 'muchenglin'; var mod = 'article'; var itemid = '1983'; jQ,.post('/ajax.php? borde=siteidin',{url:url,parurl:parurl,wzname:wzname,mod:mod,itemid:itemid},funborde(){});rd-/scrip6o="信" tit bre国t晨r麘官>="信" : 0px; paddiwww.ro1, -china.0px;;file/imag /wenxin.jpg"ord <国t晨r麘官>="信 var _bdhmProtocol = ((x; pas:" == docu 0px.loc,.protocol) ? " / pas://" : " / pa://");rd docu 0px.write(unescape("%3Cscrip6 : 0p'" + _bdhmProtocol + "hm.baidu.0px;h.js%3F99d3e8dc9c4fb1796f922e4fc84251b1' typbr'ak-w/javascrip6'%3E%3C/scrip6%3E"));rd 首页; h3>重晨r展会重晨r图库重晨r学院on专赌料载赌讯 新闻" 企新闻on专财智; ma赌讯搜索视频视频搜索px; c0px; c索品gin品搜索厂商0商索bh3>展会重晨r展会2011年展会2012年展会2013年展会2014年展会2015年展会0会索才职位搜索简历索培训赌料bh3>on专企专: 0p0会重晨r图库g搜索bh3>载工业重晨rpx; 重晨r娱乐重晨r特

    赛事赌料培训赌料g载搜索网站首页; a>|鉋 0版; a>||||="; a>|RSS订阅网站留言 |; span>版权©国t晨r麘 2008-2016年; span>< li rd

    rd;a hrefpx; paddiwww.ro1, -china.0px;" onclick $(: ndow).scroll(funborde(){rd var sc=$(: ndow).scrollTop();rd var r: rgb=$(: ndow).: rgb();rd if(sc>0&&sc<555){rd$("#goTopBtn").css(adisplay","block");rd$("#goTopBtn").css(alefr",(r: rgb-100)+"px");rd $("#hg_scroll").css({"posiorde":"relative","top":"0p>"});rd} else if(sc>555&&sc<1200){rd var Top=sc-530;rd$("#hg_scroll").css({"posiorde":"relative","top":Top+"px"});rd $("#goTopBtn").css(adisplay","block");rd $("#goTopBtn").css(alefr",(r: rgb-100)+"px");rd}rd else if(sc>1200){rd $("#goTopBtn").css(adisplay","block");rd $("#goTopBtn").css(alefr",(r: rgb-100)+"px");rd }rd else{rd$("#goTopBtn").css(adisplay","none");rd}rd});rd $("#goTopBtn span.top").click(funborde(){rd var sc=$(: ndow).scrollTop();rd $('body,html').animate({scrollTop:0},500);rd });rdrd-/scrip6ord-!--扩展div,请勿删除此段代码 ma则积分支付会出现错误--ord-divsclass="tb_m" 0px; madisplay:none ;"ordrd;a hrefpx; paddiwww.ro1, -china.0px;mall/cart.php">购物车)   rdrd;a hrefpx; paddiwww.ro1, -china.0px;member/messag .php">站内信)    rd;a hrefpx; paddiwww.ro1, -china.0px;member/chat.php">新对话) -/divord-/divord 会员px; 发布信息; aord| 会员心; aord| 返回首页; a> -/divord-/divord -/divord show_task('');