我正在尝试使用 SVD 模型在 Brown 语料库上进行词嵌入。为此,我想首先生成一个词-词共现矩阵,然后转换为 PPMI 矩阵以进行 SVD 矩阵乘法过程。
我尝试使用 SkLearn CountVectorizer 创建共现
count_model = CountVectorizer(ngram_range=(1,1))
X = count_model.fit_transform(corpus)
X[X > 0] = 1
Xc = (X.T * X)
Xc.setdiag(0)
print(Xc.todense())
Run Code Online (Sandbox Code Playgroud)
但:
(1) 不确定如何使用此方法控制上下文窗口?我想尝试不同的上下文大小,看看它对流程有何影响。
(2) 假设 PMI(a, b) = log p(a, b)/p(a)p(b),如何正确计算 PPMI
任何有关思维过程和实施的帮助将不胜感激!
谢谢 (-: