【问题标题】:The best IR software for my use?最适合我使用的 IR 软件?
【发布时间】:2011-11-20 10:57:38
【问题描述】:

我想把人们在聊天室聊天的内容做如下信息检索:

  1. 获取关键字
  2. 忽略所有干扰词,主要保留动词和名词
  3. 对关键字执行词干提取,这样我就不会以多种形式存储相同的关键字
  4. 如果同义词关键字已存储在我的存储中,则应使用现有同义词而不是新关键字
  5. 将处理后的关键字存储在持久存储中,并参考它所在的聊天消息和说出它的用户

通过这些经过处理的信息,我想慢慢了解人们在聊天室中谈论的内容,然后根据这些关键字自动找到相关的聊天室等。

我的问题如下:执行上述操作的最佳 C/C++ 或 .NET 工具是什么?

【问题讨论】:

  • 这不是真正的信息检索,这更多的是信息提取/自动摘要/主题发现任务。此外,您可能希望将问题分成几个较小的问题,因为您要求的内容可能不完整。

标签: nlp semantics keyword information-retrieval stemming


【解决方案1】:

我部分同意@larsmans 的评论。实际上,您的问题可能确实比您发布的问题更复杂。

但是,为了简化问题/问题,我想您的问题的答案可能是 Lucene 的实现之一:Lucene (Java)、Lucene.Net (C#) 或 CLucene (C++)。

按照您问题中的要点:

Lucene 将通过使用字符串标记器来处理第 1 点(您可以自定义或使用自己的)。 对于第 2 点,您可以使用 TokenFilterStopFilter 这样 Lucene 可以读取它不应该使用的停用词列表(“the”、“a”、“an”...)。 对于第 3 点,您可以使用PorterStemFilter。 第 4 点有点棘手,但可以使用自定义的TokenFilter 来完成。 第 1 到 4 点在分析/标记化阶段执行,Analyzer 负责。

关于第 5 点,在 Lucene 中,您可以存储带字段的文档。一个文档可以有任意数量和混合的字段。因此,您可以为每个聊天室创建一个文档,并将其所有文本连接起来,并让文档的另一个字段引用从中提取它的聊天室。你最终会得到一堆 you can compare 的 Lucene 文档。因此,您可以将您当前的聊天室与其他聊天室进行比较,看看哪个与您所在的聊天室更相似。

如果您想要的只是一组描述聊天室的最佳关键字,那么您的需求更接近@larsmans 所说的信息提取/自动摘要/主题发现任务。但是你可以still use Lucene for the parsing/tokenization相。

*我参考了 Java 文档,但是 CLucene 和 Lucene.Net 的 API 非常相似,因此找出差异不会很麻烦。

【讨论】:

    猜你喜欢
    • 2016-08-06
    • 2015-07-17
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    • 2010-10-13
    • 2021-04-02
    • 1970-01-01
    • 2018-07-29
    相关资源
    最近更新 更多