在位置索引中查找bigram

时间:2009-06-13 07:31:05

标签: sql-server algorithm nlp

我有一个表格,用于索引一堆文档中单词的位置。 我想确定集合中最常见的双字母组合。

您将如何在 MSSQL 2008 中执行此操作? 该表具有以下结构:

LocationID -> DocID -> WordID -> Location

我曾考虑尝试做某种复杂的加入......我只是在努力。

有一种简单的方法吗?

我想我最好在星期一编辑这个,以便在问题中提出它

示例数据

LocationID  DocID   WordID  Location
21952       534     27  155
21953       534         109     156
21954       534       4     157
21955       534     45      158
21956       534     37      159
21957       534     110     160
21958       534     70      161

1 个答案:

答案 0 :(得分:1)

我编写SQL已经好几年了,所以我的语法可能有点过时了;但是,我认为逻辑是正确的。

SELECT CONCAT(i.WordID, "|", j.WordID) as bigram, count(*) as freq
FROM index as i, index as j
WHERE j.Location = i.Location+1 AND 
      j.DocID = i.DocID
GROUP BY bigram
ORDER BY freq DESC

如果有用,您还可以将实际的单词ID添加到选择列表中,并将连接添加到您已将WordID取消引用到实际单词的任何表中。