过去几个月来我一直在使用Quanteda,非常喜欢使用该软件包。我有一个问题是,在创建相似性矩阵的时间过长之前,textstat_simil函数可以处理dfm的几行。
我有一个包含1500万个文档的搜索语料库。每个文档都是一个简短的句子,包含5到10个字(文档有时也包含3-4位数字)。我已经使用字符bigrams标记了该搜索语料库,并从中创建了dfm。
我还有另一个语料库,称为匹配语料库。它有数百个长度相似的文档,具有相同的标记化,并且还为此创建了dfm。目的是从搜索语料库中为每个匹配的语料库文档找到最接近的匹配文档。
通过将匹配dfm与搜索dfm绑定在一起来生成组合的dfm。组合dfm的唯一标记数约为1580。然后,我使用“余弦”方法,“文档”作为页边距,在此组合dfm上运行textstat_simil,所选内容只是要测试的匹配语料库文档之一。但是,当我运行textstat_simil时,要花5分钟以上的时间。
对于使用Quanteda的这种方法而言,这种体积是否过多?
干杯, 索普
答案 0 :(得分:0)
在 quanteda v1.3.13中,我们重新编程了用于计算余弦相似度的功能,以便更高效地存储和存储。但是,听起来您仍在尝试获取逐文档距离矩阵(不包括对角线),该矩阵的大小为(15000000 ^ 2)/ 2-150000000 = 1.124998e + 14个像元。如果您完全可以运行它,那么您的机器将给我留下深刻的印象!
但是,对于您的1,850个目标文档集,您可以使用selection
参数来缩小范围。
还要在v1.3.13中寻找实验性的textstat_proxy()
函数,该函数是我们为此类问题而创建的。您可以指定一个最小距离,在该最小距离以下将不记录距离,并且它使用稀疏矩阵对象返回距离矩阵。这仍然是实验性的,因为稀疏值不是零,但是任何稀疏矩阵运算都会将其视为零。 (这违反了一些距离属性-请参见讨论here。)