我正在研究NLP任务,我需要计算文档上的共现矩阵.基本配方如下:
这里我有一个形状矩阵(n, length)
,每行代表一个由length
单词组成的句子.所以n
总共有相同长度的句子.然后使用定义的上下文大小,例如,window_size = 5
我想计算共生矩阵D
,其中cth
行和wth
列中的条目是#(w,c)
,这意味着上下文单词c
在上下文中出现的次数w
.
这里可以参考一个例子.如何计算文本窗口中两个单词之间的共现?
我知道它可以通过堆叠循环来计算,但我想知道是否存在简单的方法或简单的函数?我找到了一些答案,但是他们无法使用滑过句子的窗口.例如:单词共现矩阵
所以有人能告诉我,Python中是否有任何功能可以简洁地处理这个问题?因为我认为这个任务在NLP中很常见.
我想,这并不复杂.为什么不为自己做一个功能?首先根据本教程获取共生矩阵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)