我正在阅读关于语义相似性的这指南,并按原样使用代码。
我正在将它应用于一个数据集,其中每行通常是一个段落(3-4个句子,超过100个单词)。目前,我有超过100 K的观测,但这个数字很可能会增长到500 K。
我想测量所有行之间的语义相似性。
当我在20-30k的样本上测试BoW和TFIDF时,我不会遇到任何性能问题(即使没有清理、停止等等)。
然而,当我尝试word2vec/通用语句编码器时,即使在3-4k行示例上也要花几个小时才能完成。
我也得到了完全不同的结果,但这是不可能的。
有没有一种方法可以提高Word2vec/通用语句编码器的性能,特别是后者。(据我所知,在Word2Vec中,“好”和“坏”这两个词都是互相抵消,这对我的数据是不好的。)
发布于 2022-10-10 14:33:37
一种方法是对代码进行概要分析,从经验中找到最慢的部分。快速浏览您引用的代码可以缓解效率低下的问题。
例如,有几个清单理解:
labels = [headline[:20] for headline in headlines]
docs = [nlp(headline) for headline in headlines]
加快代码速度的一个简单方法是将这些代码转换为生成器表达式。
此外,还有嵌套的for-循环:
similarity = []
for i in range(len(docs)):
row = []
for j in range(len(docs)):
row.append(docs[i].similarity(docs[j]))
similarity.append(row)
您可能不需要进行一次一次的比较。
发布于 2022-10-11 16:23:07
有两个想法:
https://datascience.stackexchange.com/questions/115052
复制相似问题