目标是评估大型文本语料库中术语之间的语义相关性,例如,“police”和“crime”应该比“police”和“mountain”具有更强的语义相关性,因为它们倾向于在相同的上下文中同时出现。
我读过的最简单的方法是从语料库中提取IF-IDF信息。
很多人使用潜在语义分析来寻找语义相关性。
我遇到了 Lucene 搜索引擎: http: //lucene.apache.org/
你认为提取IF-IDF合适吗?
在技术和软件工具方面(偏爱 Java),你会建议我做什么?
提前致谢!
穆龙
目标是评估大型文本语料库中术语之间的语义相关性,例如,“police”和“crime”应该比“police”和“mountain”具有更强的语义相关性,因为它们倾向于在相同的上下文中同时出现。
我读过的最简单的方法是从语料库中提取IF-IDF信息。
很多人使用潜在语义分析来寻找语义相关性。
我遇到了 Lucene 搜索引擎: http: //lucene.apache.org/
你认为提取IF-IDF合适吗?
在技术和软件工具方面(偏爱 Java),你会建议我做什么?
提前致谢!
穆龙
是的,Lucene 获取 TF-IDF 数据。Carrot^2算法是基于 Lucene 构建的语义提取程序的一个示例。我提到它是因为作为第一步,他们创建了一个相关矩阵。当然,您可能可以轻松地自己构建此矩阵。
如果您处理大量数据,您可能希望将 Mahout 用于更难的线性代数部分。
如果你有 lucene 索引,这很容易。例如,要获得相关性,您可以使用简单的公式 count(term1 and term2)/count(term1)* count(term2)。其中 count 是您搜索结果的点击次数。此外,您可以轻松计算其他语义指标,例如 chi^2、信息增益。您只需要获取公式并将其转换为countfromQuery