quanteda中textstat_simil与textstat_dist的差异及相关文献问询
Quanteda中
textstat_simil与textstat_dist的实现差异说明 核心逻辑差异
两个函数的计算逻辑严格对齐学界通用的相似度、距离定义,并非重复实现同一功能,核心差异如下:
textstat_simil直接输出对应方法的相似度计算结果:比如选择cosine方法时,输出值域为[0,1],数值越高代表两个文档/特征的相似程度越高;选择jaccard方法时,输出结果为两个样本的特征重合比例,数值越高重合度越高。textstat_dist输出对应方法的距离计算结果,本质是相似度的逆转换结果,完全满足距离度量的非负性、对称性、三角不等式要求:比如选择euclidean方法时直接输出标准欧氏距离结果,数值越高样本差异越大;选择cosine方法时,默认计算规则为1 - 余弦相似度,输出值域同样为[0,1],数值越高相似程度越低。
实现逻辑验证示例
你可以通过以下代码直观验证两者的转换关系:
library(quanteda) # 构建测试文档特征矩阵 test_corp <- corpus(c( d1 = "文本挖掘 定量分析 定性研究", d2 = "文本挖掘 主题模型 统计计算", d3 = "定性研究 田野调查 案例分析" )) test_dfm <- dfm(tokens(test_corp)) # 计算余弦相似度 cos_simil <- textstat_simil(test_dfm, method = "cosine") # 计算余弦距离 cos_dist <- textstat_dist(test_dfm, method = "cosine")
运行后对比两个结果的对应单元格,可直接观察到cos_dist = 1 - cos_simil的转换关系。
参考依据
两类度量的转换规则完全遵循《信息检索导论》(曼宁等著)第3章的规范定义,quanteda官方实现未做自定义修改,所有计算结果和学界通用计算逻辑完全一致。
你也可以参考quanteda官方开发文档对应的算法说明部分,就能完全厘清底层运行逻辑。
内容的提问来源于stack exchange,提问作者Adam R Pope
相关产品推荐
相关产品推荐

