问答网站的核心内容在于提供高质量的内容,因此处理和分析大量的文本数据变得至关重要。Quora拥有庞大的文本数据资源,涵盖了数百万个问题、答案和评论。不仅如此,Quora还有丰富的元数据来补充问答内容,包括点赞和点踩、用户对特定话题的兴趣或专长、问题与话题的关系、话题的去重合并、用户的社交关系和影响力等。这些丰富的数据使Quora能够从独特的角度利用自然语言处理(NLP)技术解决一些有趣且实用的问题。这些问题主要集中在以下几个方面:
为了让用户优先看到高质量的答案,Quora对答案进行了评分。评分标准主要包括以下几点:书写风格、可读性、完整性和可靠性。
Quora早期的排名机制是基于点赞和点踩的数量,虽然效果不错,但也存在一些问题: - 时间相关性:在收到投票之前,无法对答案进行排名。 - 马太效应:一旦答案获得投票,就更容易获得更多投票。 - 幽默答案:幽默答案虽然受欢迎,但未必对问题有所帮助。 - 发现性问题:新加入Quora的专家可能没有足够的粉丝,导致他们的内容难以被看到,从而影响他们获得粉丝的机会。
Quora定义了一个好的答案需要具备以下五个特性: - 回答必须切题。 - 提供可复用的知识。 - 符合基本原理。 - 答案必须可信,基础事实正确。 - 清晰且易于阅读。
Quora使用了一种名为“非个性化supervised item-wise regression”的方法来进行答案排序。这种方法采用监督学习,需要训练数据来提取特征并建立模型。无论问题如何建模,都需要客观地验证模型。一种方法是进行A/B测试,观察相关指标;另一种方法是离线验证,即模拟排名并与已知的优质排名进行比较。离线验证的优点是可以快速迭代。Quora专注于离线验证,因为它需要长期提供高质量的产品,而非短期优化用户行为。
创建高质量的数据集对于验证排名算法至关重要。Quora尝试了多种方法来评估答案的真实质量。例如,曾考虑使用一个答案列表,以点赞和点踩的比例作为标签。然而,这种方式可能会将一些非常流行但质量较低的答案排在前面。Quora还尝试了用户调查等方法,以获取用户对答案有用性的反馈。
Quora通过大量试验确定了有效的特征,包括基于文本的特征、基于专业知识的特征和基于用户历史行为的特征。Quora最初使用了一些基于文本的特征,但后来开始尝试更复杂的概念,如句法复杂度。为了更好地组合特征,Quora有时会重用其他机器学习模型的输出。组合模型通常比单一特征更好,这也是提高性能的有效手段。例如,有一个模型尝试评估用户在特定主题上的专业度,其输出结果非常有效。
Quora尝试了几种不同的模型,包括线性回归、逻辑回归、随机森林、梯度增强树和神经网络。其中,梯度增强树和某些深度学习方法表现优异。Quora更注重模型的可解释性,因为当排名结果出现问题时,需要知道问题出在哪里。模型越简单,解释性越强。Quora倾向于选择简单的模型,以确保性能和可解释性之间的平衡。
Quora使用多种度量方法来评估算法的效果,包括基于排名的度量(如NDCG、Mean Reciprocal Rank、Spearman’s Rho、Kendall’s Tau)和点式度量(如R2、Mean Squared Error)。这些度量方法不仅提供了关于算法的信息,还确保评分在不同问题间具有可比性。
当用户在Quora上添加新答案时,Quora希望尽快对这些答案进行排名,以提供流畅的用户体验。虽然预测延迟很低,但仍需计算一些耗时的特征,这会影响用户体验。因此,Quora开发了一个单独的模型,仅基于易于计算的特征,快速提供近似评分。一旦答案添加完毕,系统会异步计算更准确的评分。
实时排名是Quora面临的一项核心挑战,因为问题页面可能包含数百个答案,每个答案都需要计算数百个特征。为了解决这个问题,Quora采用了缓存策略,将答案的评分缓存起来,以加快页面加载速度。然而,当特征值发生变化时,需要更新答案的评分。为了减少计算量,Quora保存了所有特征值,并将其存储在高性能数据库中。
为了减少特征更新的工作量,Quora将部分用户和问题的数据组织起来,进行批量计算。此外,Quora在决策树内部做了其他优化,避免不必要的特征更新,从而将预测工作量减少了70%。
这些优化措施使得Quora的评分模型比基准线更准确,各项度量标准均提高了50%。这些评分在许多应用场景中都非常有价值,例如: - 折叠低质量答案:如果一个答案的评分过低,它可能被视为劣质内容,需要被隐藏。 - 提高首页流的质量:高质量答案的推荐可以提高首页流的整体质量。 - 提高用户通知质量:如果用户收到了低质量答案的通知,这将严重影响用户体验。
为了让更多不同水平的用户在Quora上撰写高质量的内容,Quora利用NLP技术自动改进文本的语法和可读性,而不改变其意义。虽然具体的语法纠正技术细节较少,但类似Grammarly这样的在线工具可以帮助用户自动校对语法,纠正英语句子中的错误。
Quora致力于提供唯一且规范的提问方式。为了实现这一目标,Quora需要检测新问题是否已经存在类似的问题。由于Quora上有数百万个问题,重复问题检测是一项巨大的挑战。Quora希望通过实时提示来减少用户重复提问的情况。
用户在查看答案后,通常希望找到相关的问题。Quora利用NLP技术寻找相关问题,尤其是在区分相关问题和重复问题时,需要特别小心,因为两者的界限非常模糊。
许多在Quora上回答问题的人是某一领域的专家。Quora需要理解这些作者在话题上的专业性和权威性。通过话题专业背景,Quora可以使同一话题下的答案获得一致的评分。例如,在“机器学习”话题下,作者的专业背景可能包括博士学位、本科学历、Quora的ML工程师职位等。
Quora的话题体系非常复杂,涵盖了从“科学”到“山顶的网球场”等各种主题。为了帮助用户找到感兴趣的话题,Quora需要为每个问题打上合适的标签。这是一个非常困难的NLP问题,因为每个问题只有少量的文字描述。
Quora的知识库不断增长,因此搜索功能非常重要。Quora利用NLP技术更好地理解用户的问题和搜索词,并对问题、答案、话题和用户背景进行排序。与传统搜索引擎不同,Quora支持长询问句作为查询语句。
Quora希望为用户提供问答摘要,以便用户快速了解答案要点。虽然目前尚未实现,但Quora认为这将极大地提升用户体验。
除了阅读不同的答案外,更多用户希望快速找到答案。Quora希望创建问答维基,整合和总结所有答案的观点,形成一个便于阅读的格式。
Quora是一个文明互助的社区,不允许侮辱和消极的信息。Quora利用NLP技术快速检测并删除这些内容。
Quora需要防止垃圾信息泛滥,因此利用NLP技术自动识别问题和答案中的垃圾信息。
Quora允许用户改进问题的措辞,但有时会破坏问题的原意。Quora正在努力解决这一问题,以确保问题的编辑质量。
Quora主要考虑三个因素来推荐问题:相关性、质量和需求。Quora的核心数据模型及其之间的关系决定了推荐系统的运作方式。Quora主要使用个性化的学习排名方法,而不是时间排序,以提高用户参与度。Quora面临的挑战包括候选故事过多、实时排名和相关性优化。
Quora的“Ask2Answers”功能允许系统将相关问题推荐给合适的回答者。Quora将这一过程建模为一个机器学习问题,以预测浏览用户发送邀请的可能性和被邀请者受邀回答的可能性。
Quora利用NLP技术分析问题文本,提取具有代表性的单词,并使用单词云的形式将它们可视化。Quora还使用语义聚类方法识别相关单词簇,并分析单词语境如何随时间变化。
通过这些努力,Quora不断提升其问答平台的质量和用户体验,使其成为知识共享和交流的重要平台。