我有一个310,225条推特的数据集。我想知道有多少推文是相同或相似的。我用全德达的文本统计频率计算了推文之间的相似性。我发现相似度矩阵中距离1和0.9999的频率如下:
0.9999 1
2288 162743 这是我的密码:
dfmat_users <- dfm_data %>%
dfm_select(min_nchar = 2) %>%
dfm_trim(min_termfreq = 10)
dfmat_users <- dfmat_users[ntoken(dfmat_users) > 10,]
tstat_sim <- textstat_simil(dfmat_users, method = "cosine", margin = "documents", min_simil = 0.9998)
table(tstat_sim@x) #result of this code is given above.我需要找出数据集中的相似或相同的tweet的数量。我应该如何解释上面的结果?
发布于 2020-07-19 20:40:57
最简单的方法是将textstat_simil()输出转换为唯一对的data.frame,然后过滤余弦值超过阈值的data.frame(这里是.9999)。
为了说明这一点,我们可以将内置的就职演说语料库重组为句子,然后计算这些句子上的相似度矩阵,然后对data.frame进行强制,并使用dplyr来过滤所需的结果。
library("quanteda", warn.conflicts = FALSE)
## Package version: 2.1.0.9000
## Parallel computing: 2 of 8 threads used.
## See https://quanteda.io for tutorials and examples.
sim_df <- data_corpus_inaugural %>%
corpus_reshape(to = "sentences") %>%
dfm() %>%
textstat_simil(method = "cosine") %>%
as.data.frame()
nrow(sim_df)
## [1] 12508670您可以为您的数据调整下面的条件为0.9999 -这里我用0.99作为一个例子。
library("dplyr", warn.conflicts = FALSE)
filter(sim_df, cosine > .99)
## document1 document2 cosine
## 1 1861-Lincoln.69 1861-Lincoln.71 1
## 2 1861-Lincoln.69 1861-Lincoln.73 1
## 3 1861-Lincoln.71 1861-Lincoln.73 1
## 4 1953-Eisenhower.6 1985-Reagan.6 1
## 5 1953-Eisenhower.6 1989-Bush.15 1
## 6 1985-Reagan.6 1989-Bush.15 1
## 7 1989-Bush.140 2009-Obama.108 1
## 8 1989-Bush.140 2013-Obama.87 1
## 9 2009-Obama.108 2013-Obama.87 1
## 10 1989-Bush.140 2017-Trump.9 1
## 11 2009-Obama.108 2017-Trump.9 1
## 12 2013-Obama.87 2017-Trump.9 1(是的,这是1250万个句子对间余弦相似度的非常快速的计算!)
https://stackoverflow.com/questions/62980321
复制相似问题