共现矩阵
目录
共现矩阵
主要用于发现主题,解决词向量相近关系的表示 例如,语料库如下: - I like deep learning. - I like NLP. - I enjoy flying.
则共现矩阵如下(窗口大小为1)
例如:“I like”出现在第1,2句话中,一共出现2次,所以=2。
对称的窗口指的是,“like I”也是2次
将共现矩阵行(列)作为词向量表示后,可以知道like,enjoy都是在I附近且统计数目大约相等,他们意思相近。
代码
import numpy as np
= {w:i for i,w in enumerate(words)} # word到key,words就是词汇表
word2ind = np.zeros((num_words, num_words)) # num_words是词汇表的长度
M
for c in corpus: # 假设语料库是一个列表,元素为一段文本。遍历语料库
for idx, word in enumerate(c): # 遍历文本的每一个词,这里默认空格分词
for i in range(1, window_size+1): # 对窗口大 小进行遍历
= idx - i # 自己与自己不算共现,所以这里要加减
left
= idx + i
right
if left >= 0: # 左边元素
+= 1
M[word2ind[word], word2ind[c[left]]]
if right < len(c): # 右边元素
+= 1 M[word2ind[word], word2ind[c[right]]]