计算R中两个单词的余弦相似度?

时间:2018-01-17 23:34:17

标签: r vector nlp cosine-similarity

我有一个文本文件,并希望为文件中的每个单词创建语义向量。然后我想提取大约500对单词的余弦相似度。 R中最好的包装是什么?

2 个答案:

答案 0 :(得分:1)

您可以使用static class GlobalProperties { private static ObservableCollection<string> _mylist = new ObservableCollection<string>(); public static ObservableCollection<string> MyList { get { return _mylist; } set { if (_mylist == value) return; // suggested on comment. Relocate if you still need to run GotUpdated() _mylist = value; GotUpdated(); _mylist.CollectionChanged += (sender, e) => GotUpdated(); } } public static Action GotUpdated { private get; set; } } 库。库的lsa函数给出了余弦相似度矩阵。它需要一个矩阵作为输入。

答案 1 :(得分:1)

如果我正确理解了您的问题,则需要两个单词向量的余弦相似度。让我们从两个词的余弦相似性开始:

library(stringdist)
d <- stringdist("ca","abc",method="cosine")

结果是预期的d= 0.1835034

该软件包中还包含一个函数stringdistmatrix(),该函数可计算所有成对的字符串之间的距离:

> d <- stringdistmatrix(c('foo','bar','boo','baz'))
> d
  1 2 3
2 3    
3 1 2  
4 3 1 2

出于您的目的,您可以只使用类似这样的内容

stringdist(c("ca","abc"),c("aa","abc"),method="cosine")

结果是一方面测量caaa之间的距离,另一方面测量abcabc之间的距离:

0.2928932 0.0000000

免责声明::库stringdist是全新的(2019年6月),但运行良好。我与图书馆的作者无关。