首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Lucene回答问题

使用Lucene回答问题
EN

Stack Overflow用户
提问于 2011-01-26 00:06:22
回答 3查看 1.2K关注 0票数 2

对于一个玩具项目,我想用Lucene实现一个自动问答系统,我正在尝试找出一种合理的方式来实现它。基本操作如下:

1)用户将输入问题。

2)系统将识别问题中的关键字。

3)将在大型知识库中搜索关键字,并将匹配的句子显示为答案。

我的知识库(即语料库)不是结构化的。它只是一个大的,连续的文本(比方说,没有任何章节的用户手册)。我的意思是,唯一的结构是句子和段落被识别出来。

我计划将每个句子或段落视为单独的文档。为了在上下文中呈现答案,我可能会考虑在索引的句子/段落之前/之后保留一个句子/段落作为有效负载。我想知道这是否有意义。另外,我想知道对于这类系统,是否还有其他经过尝试和众所周知的方法。例如,脑海中出现的另一种方法是将语料库的大块索引为具有标记位置的文档,然后处理找到的关键字的附近以构建我的答案。

我希望基于经验或直觉的直接建议,但也要考虑到Lucene的问答系统的教程或介绍性材料。

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-27 06:55:59

将每个句子作为文档进行索引会给您带来一些问题。您已经指出了一个问题:您需要存储周围的文本a有效负载。这意味着你需要将每个句子存储三次(之前、期间和之后),并且你必须手动进入有效负载。

如果您想要将每个句子作为一个文档,我建议为每个句子提供一个ID,并将其存储为一个单独的字段。然后,您可以在每个结果中显示ID-1、ID、ID+1。

然而,更大的问题是:应该如何将文本分解为文档?识别语义相关的领域似乎很困难,所以按句子/段落来识别可能是唯一的方法。一种更好的方法是,如果您可以找到哪个文本是小节的标题,然后将该小节中的所有内容都作为文档放置。

您可能还想使用索引(如果您的语料库有索引的话)。那里的条款可能会得到提升,因为它们可能更重要。

票数 0
EN

Stack Overflow用户

发布于 2011-01-26 00:35:19

这不是一种不合理的方法。

你可以考虑的一个增强是结合学习反馈,这样你就可以不断提高内容与搜索术语的评分。要做到这一点,你可以要求用户对返回的答案进行评分(“有帮助还是没有帮助”),这样你就可以开始根据历史数据的关键字对文档进行排名。通过使用简单的贝叶斯分类器,您可以将潜在文档分类为对给定关键字有帮助/没有帮助。

票数 1
EN

Stack Overflow用户

发布于 2011-01-26 00:20:00

我认为使用像Apache Mahout这样的东西会对此有所帮助,而不是使用luncene来进行文本索引、搜索和检索。Mahout将文本视为知识,这样做可以使回答问题比简单的文本匹配更好。Mahout是一个更适合这个领域的机器学习和数据挖掘工具。只是一个非常高层次的想法。

--Sai

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4795807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档