4

假设我有一句话:“约翰喜欢在他的兰博基尼 Huracan中带他的宠物羔羊,而不是在他的兰博基尼 Gallardo中”,而我有一本包含“兰博基尼”、“兰博基尼 Gallardo”和“兰博基尼 Huracan”的字典。提取粗体词,实现词组“Lamborghini Gallardo”和“Lamborghini Huracan”作为词组匹配,以及其他部分匹配“Lamborghini”和“lamb”的好方法是什么?优先选择词组匹配而不是单个关键字。

弹性搜索提供完全匹配、匹配短语和部分匹配。确切的术语显然在这里不起作用,也不匹配短语,因为在这种情况下整个句子都被视为短语。如果我在句子中只有感兴趣的关键字,我相信部分匹配是合适的。通过以前的 SO 线程,我发现相关性接近,这似乎是相关的,但不确定这是否是“最佳选择”,因为需要设置阈值。或者即使有比弹性搜索更简单/更好的选择(这似乎更适合全文搜索而不是简单的关键字匹配到数据库)?

4

1 回答 1

4

听起来您想使用受控词汇表(您的行业术语和短语字典) 从文档中提取关键短语。

[上面的斜体术语可以帮助您在 SO 和 Google 上找到相关答案]


这一级别的分析将您带离搜索堆栈,进入自然语言处理堆栈。由于 NLP 往往是资源密集型的,它往往在离线时进行,或者在搜索应用程序的情况下,在索引时进行。

要实现这一点,您需要:

  1. 将关键短语提取工具集成到您的搜索索引代码中,以生成每个文档的已识别关键短语列表。
  2. 将这些关键短语作为带状疱疹索引到新的 Elasticsearch 字段中。
  3. 在查询时搜索的字段列表中包含这个带状的关键词字段——很可能会提高分数。

要获得帮助您进行受控关键词提取的快速获胜工具,请查看KEA(用 java 编写)。

(您也可以自己编写,但如果您也希望提取不受控制的关键短语(不在字典中),训练有素的提取器将为您提供更好的服务。 更多工具在这里。)

于 2016-09-14T15:01:43.520 回答