在Python中计算窗口中单词之间的距离

时间:2015-08-28 07:45:07

标签: python matrix distance text-mining

我想构建一个距离矩阵(稀疏矩阵),它与共生矩阵类似。在大小为7的窗口中,我想计算两个特定单词之间的距离,然后轮流移动窗口。

以此为例:

  无政府主义/ NOUN NIL NIL NIL NIL / NOUN NIL滥用/ NOUN NIL NIL NIL NIL工作/ NOUN类/ NOUN激进/ NOUN

这就是我的名词,我用" NIL"替换不相关的词。 (只表示距离)并保留名词和形容词。

我想计算(术语,滥用),(工作,阶级),(工作,激进),(阶级,激进)之间的距离。其他距离不计算,因为它们超出了窗口大小7.

我想得到sparseMatrix的矩阵记录,如下所示:

    i       j     dis
1 term    abuse    2
2 working class    1
3 working radicals 2
4 class   radicals 1

在Python中有没有一种有效的方法,我的语料库大小可能是10G +。

非常感谢!

1 个答案:

答案 0 :(得分:1)

所以基本上,你想要达到7或更短的距离。您可以通过此过程轻松完成此操作(伪代码):

for each word index:
  skip if word[index] is NIL
  for offset from 1 to 7:
    stop if index+offset is past last element
    skip if word[index+offset] is NIL
    make triplet (word[index], word[index+offset], offset)

将它填入scipy sparse matrix应该很容易(你还需要为每个离散的单词分配一个ID,因为scipy矩阵索引必须是整数)。

编辑:不知道为什么我把6放在那里......当然应该是7