解读题:Textstat_similarity全泰达
Interpretation question: Textstat_similarity Quanteda
我有一个包含 310,225 条推文的数据集。我想找出有多少推文相同或相似。我使用 Quanteda 的 textstat 频率计算了推文之间的相似度。我发现相似度矩阵中距离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.
我需要找出数据集中相似或相同推文的数量。我应该如何解释上面的结果?
最简单的方法是将 textstat_simil()
输出转换为 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 万个句子对之间余弦相似度的非常快速的计算!)
我有一个包含 310,225 条推文的数据集。我想找出有多少推文相同或相似。我使用 Quanteda 的 textstat 频率计算了推文之间的相似度。我发现相似度矩阵中距离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.
我需要找出数据集中相似或相同推文的数量。我应该如何解释上面的结果?
最简单的方法是将 textstat_simil()
输出转换为 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 万个句子对之间余弦相似度的非常快速的计算!)