Python - 计算共生矩阵

GEO*_*GUO 6 python nlp machine-learning matrix

我正在研究NLP任务,我需要计算文档上的共现矩阵.基本配方如下:

这里我有一个形状矩阵(n, length),每行代表一个由length单词组成的句子.所以n总共有相同长度的句子.然后使用定义的上下文大小,例如,window_size = 5我想计算共生矩阵D,其中cth行和wth列中的条目是#(w,c),这意味着上下文单词c在上下文中出现的次数w.

这里可以参考一个例子.如何计算文本窗口中两个单词之间的共现?

我知道它可以通过堆叠循环来计算,但我想知道是否存在简单的方法或简单的函数?我找到了一些答案,但是他们无法使用滑过句子的窗口.例如:单词共现矩阵

所以有人能告诉我,Python中是否有任何功能可以简洁地处理这个问题?因为我认为这个任务在NLP中很常见.

Zea*_*ker 9

我想,这并不复杂.为什么不为自己做一个功能?首先根据本教程获取共生矩阵X:http://scikit-learn.org/stable/modules/feature_extraction.html#common-vectorizer-usage 然后为每个句子计算共现并将它们添加到摘要变量.

m = np.zeros([length,length]) # n is the count of all words
def cal_occ(sentence,m):
    for i,word in enumerate(sentence):
        for j in range(max(i-window,0),min(i+window,length)):
             m[word,sentence[j]]+=1
for sentence in X:
    cal_occ(sentence, m)
Run Code Online (Sandbox Code Playgroud)