Question Retrieval with Distributed Representations and Participant Reputation in Community QA论文笔记

本文提出一种基于词嵌入和用户信誉的论坛问答匹配算法,利用CBoW模型生成词向量,结合问题标题和描述的相似度计算,及用户信誉评估,提升重复问题识别效率。

原文下载地址

摘要

  1. 社区问题的难点在于:重复性问题
  2. 解决上述问题要采用Query retrieval(QR),QR的难点在于:同义词汇
  3. 本文算法:1)采用continuous bag-of-words(CBoW)模型对词(word)进行 Distributed Representations(分布式表达,词嵌入);2)对given query和存档的query计算tile域和description域的相似度;3)将用户信誉(user reputation)也用于排序模型
  4. 测试数据集为 Asus's Republic of Gamers (ROG) 论坛

引言

    QR的难点在于同于词汇,处理同义词的方法有四种:

  1. Language model information retrieval (LMIR):思想为计算给定问题和候选问题间词序列的概率
  2. language model with category smoothing (LMC):将问题类别表示为向量空间的一个维度(上述两种方法的缺点为:忽略了词与词之间的相似度)
  3. translation-based language modeling (TBLM):使用QA对来学习语义相关的单词以改进传统的IR模型,缺点是学习一个翻译表太耗时
  4. distributed-representation-based language modeling (DRLM) :使用数据的分布式表示来替换TBLM中的词到词间的翻译概率,其使用word2vector计算概率

本文算法

本文算法包含三部分:1)词嵌入学习:给定论坛数据集,问题被视为基本单位, 问题中的每个单词都会转换为一个单词向量。

2)得分生成:学习到单词向量后,就可以通过计算查询问题和候选问题之间的相似性来进行问题检索。

3)使用信誉信息:通过引入每个存档问题参与者的信誉值来加强排序函数。

1.Word2vec

word2vec的理解可以参看博客[NLP] 秒懂词向量Word2vec的本质,研究表明CBoW模型在文本分类方面表现更好,特别适用于包含极少数不常见单词的文档,而且该模型的训练速度快于 skip-gram模型,因此本文采用CBoW进行词向量学习。

2.问题标题和描述的排序函数

利用word2vec学习到词向量后,每个问题q的向量表达式如下:

                                    

其中w为q中的每个词,e是向量中每个维度的值。查询问题q和候选答案Q间的相似度得分为:

                       

论坛问题包含两部分:title和description,不同于之前的研究,本文分别计算这两部分的相似度得分:

                          

α和β都是超参数,α+β=1

3.使用论坛中的用户信誉

查询问题q和候选问题Q间的相似度得分表达为:

                              

为超参数,,RPU(Q)是参与Q讨论的用户信誉值总和,为避免来自同一论坛用户的过多信誉值,只添加一次每个参与者的信誉值,为确保新帖的公平性,求信誉值的均值。

实验

Forum为本文算法,-T考虑问题title的相似度,-C考虑问题description的相似度,-R考虑用户信誉值的相似度,上表可以看出本文算法优于其他算法。

下表为超参数的最优值:

Wiki表示采用Wiki训练数据,Table3表明Wiki表现最差,这表明对于word2vec的训练,域内数据比域外培训数据更有效。

### 关于神经信息检索中的持续终身学习 #### 定义 在神经信息检索领域,持续终身学习(Continual Lifelong Learning, CLL)是指模型能够在不断变化的环境中通过连续获取新知识来改进自身的性能,而不会遗忘之前学到的知识。这种能力对于构建能够适应长期动态环境的信息检索系统至关重要[^1]。 #### 数据集 为了支持CLL的研究,在该领域内存在多种专门设计的数据集用于训练和测试算法的效果。这些数据集通常具有时间维度上的特性,即随着时间推移会有新的查询模式或文档集合加入进来。例如TREC Dynamic Domain Track提供了逐年更新的主题与相关性判断,可用于模拟真实世界中逐渐演变的信息需求场景;WikiPassageQA则是一个基于维基百科文章片段创建的问题回答型数据集,它允许研究人员探索如何让机器阅读理解能力随着更多样化的文本输入得到提升[^4]。 #### 框架 针对CLL问题提出的解决方案往往涉及到特定的学习策略和技术手段组合而成的方法论体系。一种常见的做法是在传统深度学习架构基础上引入记忆机制或者正则化项以防止灾难性遗忘现象发生。此外还有些工作尝试利用元学习的思想实现快速迁移至未知任务的能力。比如Replay-based方法会保存过往经历样本并周期性重放给当前网络参数调整提供额外监督信号;EWC(弹性权重巩固)通过对重要连接施加惩罚从而保持旧技能的同时接纳新鲜事物;MAML(Meta-Learning Algorithm with Fast Adaptation)旨在寻找一组初始状态使得少量梯度步即可完成对任意目标任务的良好拟合[^2]。 #### 实证评估 实验证明上述提到的各种技术确实能在不同程度上缓解因顺序呈现不同分布批次而导致的表现下降情况。然而值得注意的是,目前还没有统一标准衡量CLL效果好坏的最佳方式。大多数情况下还是依赖于具体应用场景下的定制指标来进行比较分析。除了准确率之外,还需要考虑计算效率、泛化能力和鲁棒性等多个方面因素综合评判一个方案是否优越。部分论文也指出了一些潜在挑战如过拟合风险增加以及跨域推广困难等问题有待进一步探讨解决[^3]。 ```python # Python代码示例展示了一个简单的Elastic Weight Consolidation (EWC)实现思路 import torch.nn.functional as F from torch import nn class Net(nn.Module): def __init__(self): super().__init__() self.fc1 = nn.Linear(input_size, hidden_size) self.fc2 = nn.Linear(hidden_size, output_size) def ewc_loss(model, fisher_dict, opt_params, lam=0.5): loss = 0. for name, param in model.named_parameters(): _loss = fisher_dict[name] * ((param - opt_params[name]) ** 2) loss += _loss.sum() return (lam / 2.) * loss output = net(inputs) ce_loss = F.cross_entropy(output, targets) ewc_penalty = ewc_loss(net, old_fisher_info, previous_weights) total_loss = ce_loss + ewc_penalty optimizer.zero_grad() total_loss.backward() optimizer.step() ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勤劳的凌菲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值