【发布时间】:2019-05-29 16:32:29
【问题描述】:
我希望能够找到两个字符串之间的相似性,用它的逆文档频率加权每个标记(单词)(这些频率不是从那些字符串中获取的)。
使用quanteda,我可以创建一个具有反转频率权重的dfm_tfidf,但不知道之后如何进行。
样本数据:
ss = c(
"ibm madrid limited research",
"madrid limited research",
"limited research",
"research"
)
counts = list(ibm = 1, madrid = 2, limited = 3, research = 4)
cor = corpus(long_list_of_strings) ## the documents where we take words from
df = dfm(cor, tolower = T, verbose = T)
dfi = dfm_tfidf(df)
我们的目标是找到一个函数similarity,它将使:
res = similarity(dfi, "ibm limited", similarity_scheme = "simple matching")
res 格式为(示例中为随机数):
"ibm madrid limited research" 0.445
"madrid limited research" 0.2
"limited research" 0.76
"research" 0.45
理想情况下,将像这样的函数应用于这些频率:
sim = sum(Wc) / sqrt(sum(Wi)*sum(Wj))
在哪里:
Wc 是两个字符串共有的词的权重。Wi 和Wj 是string1 和string2 中词的权重。
【问题讨论】:
-
查看包 'tidytext' (tidytextmining.com)。不确定,但也许你找到了解决方案
标签: r similarity quanteda