为什么 textstat_simil() 方法 "cosine" returns NA

Why does textstat_simil() with method "cosine" returns NA

我正在计算两个 dfm 对象的余弦相似度。一个是我的参考对象,尺寸为 5 x 4,728,而第二个 dfm 是我的目标对象,尺寸为 2,325,329 x 40,595。

我不明白的是为什么 textstat_simil() returns NA。我尝试重现 "issue" 但到目前为止运气不好。您可以在以下 Dropbox 链接中找到数据。请注意,目标 dfm 仅包含第一个文档。

  1. Reference dfm
  2. Target dfm

这是我正在使用的代码。 dfm_match() 扩充我的参考 dfm 以匹配目标对象的特征数量。

library(quanteda)

# make sure you load the two required dfms

reference_dfm = dfm_match(reference_dfm, featnames(target_dfm))
textstat_simil( target_dfm, reference_dfm, method = "cosine")

#> textstat_simil object; method = "cosine"
#>         negative slightly_negative neutral slightly_positive positive
#> text1.1       NA                NA      NA                NA       NA

有什么想法吗?

您的 target_dfm 完全是稀疏的(全为 0),因此您无法计算余弦相似度。

target_df <- convert(target_dfm, "data.frame")
sum(target_df[,2:ncol(target_df)] > 0)
#> 0

您还可以注意到,当您打印 dfm 以进行控制台时,它表示它是“100.0% 稀疏”。这是远离稀疏的 dfm 1 个值,并且计算有效。

test_dfm <- dfm(corpus("adds"))
test_dfm <- dfm_match(test_dfm, featnames(target_dfm))
textstat_simil(test_dfm, reference_dfm2, method = "cosine")
#> textstat_simil object; method = "cosine"
#>         negative slightly_negative neutral slightly_positive positive
#> text1.1        0                 0       0                 0        0