首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >大型数据集上的语义相似性

大型数据集上的语义相似性
EN

Data Science用户
提问于 2022-10-10 00:17:15
回答 2查看 413关注 0票数 2

我正在阅读关于语义相似性的指南,并按原样使用代码。

我正在将它应用于一个数据集,其中每行通常是一个段落(3-4个句子,超过100个单词)。目前,我有超过100 K的观测,但这个数字很可能会增长到500 K。

我想测量所有行之间的语义相似性。

当我在20-30k的样本上测试BoW和TFIDF时,我不会遇到任何性能问题(即使没有清理、停止等等)。

然而,当我尝试word2vec/通用语句编码器时,即使在3-4k行示例上也要花几个小时才能完成。

我也得到了完全不同的结果,但这是不可能的。

有没有一种方法可以提高Word2vec/通用语句编码器的性能,特别是后者。(据我所知,在Word2Vec中,“好”和“坏”这两个词都是互相抵消,这对我的数据是不好的。)

EN

回答 2

Data Science用户

发布于 2022-10-10 14:33:37

一种方法是对代码进行概要分析,从经验中找到最慢的部分。快速浏览您引用的代码可以缓解效率低下的问题。

例如,有几个清单理解:

代码语言:javascript
运行
复制
labels = [headline[:20] for headline in headlines]

docs = [nlp(headline) for headline in headlines]

加快代码速度的一个简单方法是将这些代码转换为生成器表达式。

此外,还有嵌套的for-循环:

代码语言:javascript
运行
复制
similarity = []
for i in range(len(docs)):
    row = []
    for j in range(len(docs)):
        row.append(docs[i].similarity(docs[j]))
similarity.append(row)

您可能不需要进行一次一次的比较。

票数 2
EN

Data Science用户

发布于 2022-10-11 16:23:07

有两个想法:

  • 我知道你计算了每一对行/文档之间的相似性,对吗?如果是这样的话,瓶颈是由于首先对所有对进行二次处理,您应该只比较(d_1,d_2)而不是(d_2,d_1) (使用索引:如果是i<j),这将节省50%的时间。我还假设目标是捕获强相似文档的对/组。如果是的话,一种方法是首先应用弓形/TFIDF方法(更简单、更快),然后将嵌入方法仅应用于与第一种方法至少获得某种相似阈值的对上。
  • 一种完全不同的方法:在文档集上应用主题建模 (LDA或HDP或其他最近的方法)。这可能会更快。它还可能揭示不同类型的文档之间的语义相似性。
票数 0
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/115052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档