假设D
是一个文本文档,并且
K = < k1, ..., kN >
表示文档中包含的一组术语。例如:
D = "What a wonderful day, isn't it?"
K = <"wonderful","day">
我的目标是查看文档D
是否在谈论K
整体中的所有字词。例如:
D = "The Ebola in Africa is spreading at high speed"
K = <"Ebola","Africa">
是D
与K
密切相关的情况,而:
D = "NEWS 1: Ebola is a dangerous disease that is causing thousands of deaths. Many governments are taking precautions to prevent its spread. NEWS 2: population in Africa is increasing."
K = <"Ebola","Africa">
是D
与K
无关的情况,因为“埃博拉”和“非洲”在文档的不同点上以分开的句子提及,并且不相关。
如何将D
与K
的“相关性”概念合成?在现有技术中是否有一些技术可以被利用?
感谢。
答案 0 :(得分:1)
vector space model可能就是你想要的。
您可以将D转换为与K相同的格式,例如单词列表,例如&lt;“What”,“a”,“wonderful”,“day”,“is not”“it”&gt;。这是通过一个叫做标记器的东西完成的。
在此之后你可以删除没有意义的无用单词,比如“和”,“the”,“it”等。要删除的单词称为stop words,存储在停止列表中。
您还应该将所有单词转换为小写(甚至大写),以便“What”和“what”不被归类为不同的单词。
在此之后,文档可以表示为单词及其频率列表(请查看inverted index)。
计算文档(D)和查询(K)之间的cosine similarity。
答案 1 :(得分:0)
解决此问题可能有两种方法。一个简单的只适用于这种情况,另一个适用于更普遍的情况。
特殊解决方案: 我注意到您的文档中有段落标记,即“新闻:”。您可以将这些标记内的内容视为索引单位,这样您就可以获得这些段落的检索分数。作为帖子检索步骤,您可以通过聚合(平均或最大)各个段落分数来计算文档级别检索分数。
一般解决方案:
考虑查询字词之间的距离。如果一份文件关于非洲的埃博拉疾病,那么它更有可能找到埃博拉病毒和非洲病毒的距离,而不是相距很远。 Lucene在proximity aware query parser的帮助下支持位置索引并在检索得分计算中利用这些位置。
这是网络搜索引擎广泛使用的东西。