是否可从Quanteda生成的相似度矩阵中提取平均值与标准差(SD)
完全可以从quanteda输出的相似度矩阵中提取全局/单文档的平均相似度与标准差(SD),操作方法如下:
textstat_simil()默认返回的是dist类的稀疏三角矩阵,需要先转换为完整矩阵再做计算,注意要排除对角线的1值(文档与自身的相似度,无统计意义),同时为了避免重复计算对称的文档对相似度,建议提取矩阵的上三角/下三角数值做统计。
完整操作代码
- 运行你原本的相似度计算代码:
tstat_q <- textstat_simil(dfmat_q, method = "cosine", margin = "documents")
- 转换为普通矩阵格式:
sim_mat <- as.matrix(tstat_q)
- 提取所有唯一非自身的相似度数值:
# 取矩阵上三角,排除对角线,得到所有不重复的文档对相似度 sim_values <- sim_mat[upper.tri(sim_mat)]
- 计算全局平均与标准差:
# 全局平均相似度 mean(sim_values) # 全局相似度标准差 sd(sim_values)
若要计算单文档的平均相似度/标准差
如果需要得到每一篇文档和其他所有文档的相似度均值与SD,可按行遍历计算,排除对角线的1值即可:
# 单文档平均相似度 doc_mean_sim <- apply(sim_mat, 1, function(x) mean(x[x != 1])) # 单文档相似度标准差 doc_sd_sim <- apply(sim_mat, 1, function(x) sd(x[x != 1]))
内容的提问来源于stack exchange,提问作者Patrizio Tressoldi
相关产品推荐
相关产品推荐

