我想构建一个距离矩阵(稀疏矩阵),它与共生矩阵类似。在大小为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 +。
非常感谢!
答案 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
。