是否可以使用一些开箱即用的搜索引擎(如Lucene,Solr或Sphinx)以及与查询最相关的搜索文档来创建大型文档的摘要?
我不需要在文档内搜索或创建代码段。只需获得最符合查询的5个文档。
更新。更具体地说,我不希望引擎保留整个文档,但只有它的"摘要" (您可以将其称为索引信息或TD-IDF表示)。
答案 0 :(得分:1)
基本上,如果你想拥有摘要功能 - 有很多方法可以做到这一点,例如wiki上的TextRank,大article,NTLK中可用的大量实现, 和别的。但是,它无法帮助您进行查询,无论如何都需要将其编入索引。
我认为你可以使用名为More Like This的功能实现这样的功能。它存在于Lucene / Solr / Elasticsearch中。它背后的想法,如果你发送一个查询(这是文档的原始文本),搜索引擎将找到最合适的一个,通过从中提取最相关的单词(这提醒我有关摘要),然后将采取看里面的倒排索引找到前N个类似的文件。但是它不会丢弃文本,但它会像#34;喜欢"基于TF-IDF指标的运算符。
中对MLT的引用答案 1 :(得分:1)
但只有它"摘要" (您可以将其称为索引信息或TD-IDF表示。)
您正在寻找的内容似乎很标准:
Lucene搜索引擎如何工作[2]正在为文档中的每个字段构建一个反向索引(以及其他功能所需的一组其他数据结构)。
显然你不想做的是存储字段的内容,这意味着获取文本内容并将其存储在索引中的完整(压缩)中(稍后检索。)
在Lucene和Solr中,这是配置问题。
Summarisation是一个完全不同的NLP任务,可能不是您需要的。
干杯
[1] http://lucene.apache.org/index.html
[2] https://sease.io/2015/07/26/exploring-solr-internals-the-lucene-inverted-index/
答案 2 :(得分:1)
更新。更具体地说,我不希望引擎保持整体 文档,但只有它的“摘要”(你可以称之为索引信息 或TD-IDF表示。)
回答你更新的问题。 Lucene / Solr满足您的需求。对于“摘要”,您可以选择不通过指定存储原始文本:
org.apache.lucene.document.Field.Store.NO
通过将“摘要”保存为字段org.apache.lucene.document.TextField
,摘要将为indexed
和tokenized
。它将存储TD-IDF信息供您搜索。