我有大量已经计算了 TF-IDF 的文档。我正准备向集合中添加更多文档,我想知道是否有一种方法可以在不重新处理整个数据库的情况下将 TF-IDF 分数添加到新文档中?
我有我的主题字符串
$subj = "Director, My Company";
以及要比较的多个字符串的列表:
$str1 = "Foo bar";$str2 = "Lorem Ipsum";$str3 = "Director";
我想在这里实现的是找到与之相关的最近的字符串$subj.有可能吗?
我理解了 VSM、TFIDF 和余弦相似度的概念,但是,在阅读 lucene 网站后,我仍然对 lucene 如何构建 VSM 并计算每个查询的相似度感到困惑。
据我了解,VSM 是一个矩阵,其中填充了每个术语的 TFIDF 值。当我尝试从一组文档构建 VSM 时,这个工具花了很长时间http://sourceforge.net/projects/wvtool/ 这与编码没有真正的关系,因为直观地构建大数据的 VSM 矩阵是耗时,但 lucene 似乎并非如此。
此外,使用预构建的 VSM,找到最相似的文档,这基本上是计算两个文档之间的相似度或查询与文档之间的相似度,通常很耗时(假设有数百万个文档,因为必须计算与其他人的相似度),但 lucene 似乎它真的很快。我想这也与它如何在内部构建 VSM 有关。如果可能,有人也可以解释一下吗?
所以请帮助我理解这里的两点:1. lucene 如何如此快速地构建 VSM,可用于计算相似度。2.为什么百万文档之间的lucene相似度计算这么快?
如果给出一个真实的例子,我将不胜感激。谢谢
我想计算物种群体之间的马哈拉诺比斯距离,其中:
我试图了解在这种条件下如何在 R 中运行mahalanobis函数。这个问题类似于:
但在那里,只使用了一个变量。如果有多个变量怎么办呢?
下面有一个示例,我相信它再现了我的实际数据。
Sp. X1 X2 X3
A 0.7 11 215
B 0.8 7 214
B 0.8 6.5 187
C 0.3 4 456
D 0.4 3 111
A 0.1 7 205
A 0.2 7 196
C 0.1 9.3 77
D 0.6 8 135
D 0.8 4 167
B 0.4 6 228
C 0.1 5 214
A 0.4 7 156
C 0.5 2 344
Run Code Online (Sandbox Code Playgroud)
Sp。= …
你好,我已经被这个问题困扰了一段时间,找不到解决方案,想知道是否有人可以提供帮助。
我需要将相似的字符串分组,例如:
细长铝质 HDMI 导线、1m 蓝色
细长铝质 HDMI 导线、2m 蓝色
细长铝质 HDMI 导线、3m 蓝色
Frozen 儿童耳机带音量限制器
XLR 插头到插座导线、3m
XLR 插头到插座导线、6m
Monster High 儿童耳机带音量限制器
TMNT Kids带音量限制器的耳机
蝙蝠侠儿童耳机 带音量限制器
1 路电缆入口刷墙板 白色/白色刷子 50 x 45 毫米
2 路电缆入口刷墙板 白色/白色 刷子 50 x 100 毫米
1 路电缆入口刷墙板 白色/黑色刷子 50 x 45mm
2 单元电缆入口刷墙板 白色/黑色刷子 50 x 100mm
细长铝质 HDMI 导线、5m 蓝色
细长铝质 HDMI 导线、7.5m 蓝色
6.35mm (1/4") 单声道插孔到插孔吉他导线、 5m 橙色
XLR 插头到插座引线,0.5m
XLR 插头到插座引线,1m
XLR 插头到插座引线,2m
细长铝质 HDMI 导线,1m 蓝色 …
我试图了解Spacy中的相似性是如何工作的。我尝试使用梅拉尼娅·特朗普的讲话和米歇尔·奥巴马的讲话来看看它们有多相似。
这是我的代码。
import spacy
nlp = spacy.load('en_core_web_lg')
file1 = open("melania.txt").read().decode('ascii', 'ignore')
file2 = open("michelle.txt").read().decode('ascii', 'ignore')
doc1 = nlp(unicode(file1))
doc2 = nlp(unicode(file2))
print doc1.similarity(doc2)
Run Code Online (Sandbox Code Playgroud)
我得到的相似分数是0.9951584208511974。在我看来,这个相似度分数非常高。它是否正确?难道我做错了什么?
Python 中是否有任何函数可以接受多行字符串并返回它们相似程度的百分比?类似SequenceMatcher但对于多个字符串。
例如我们有下面的句子
Hello how are you?
Hi how are you?
hi how are you doing?
Hey how is your day?
Run Code Online (Sandbox Code Playgroud)
我希望能够根据句子之间的相似程度获得百分比
假设我们有这三个句子
Hello how are you?
Hello how are you?
Hello how are you?
Run Code Online (Sandbox Code Playgroud)
那么我们应该得到 100% 相似
但如果我们有
Hello how are you?
Hello how are you?
hola como estats?
Run Code Online (Sandbox Code Playgroud)
那么我们应该得到相似度在 67% 左右的数字。
我想获得相似单词的列表。由于 Spacy 没有对此的内置支持,我想将 spacy 模型转换为 gensim word2vec 并获取相似单词的列表。
我尝试使用下面的方法。但这很耗时。
def most_similar(word):
by_similarity = sorted(word.vocab, key=lambda w: word.similarity(w), reverse=True)
return [w.orth_ for w in by_similarity[:10]]
Run Code Online (Sandbox Code Playgroud)
nlp = spacy.load('en_core_web_md')
nlp.to_disk(filename)
nlp.vocab.vectors.to_disk(filename)
Run Code Online (Sandbox Code Playgroud)
这不会将模型保存到文本文件。因此,我无法使用以下方法。
from gensim.test.utils import datapath, get_tmpfile
from gensim.models import KeyedVectors
from gensim.scripts.glove2word2vec import glove2word2vec
glove_file = datapath('test_glove.txt')
tmp_file = get_tmpfile("test_word2vec.txt")
_ = glove2word2vec(glove_file, tmp_file)
Run Code Online (Sandbox Code Playgroud) 我想评估两个字符串之间的相似性(包括大小写),并给出0到1之间的值.
我尝试了Levenshtein距离实现,但它只给出了整数,并没有比较内部字母.
例如,比较"ABCD"和"Abcd"给出距离3和"AOOO"也给出3的距离,但显然"Abcd"比"AOOO"更好地匹配.
因此,与"ABCD"相比,我希望"ABcd"与"Abcd"最相似,然后是"AOOO",然后是"AOOOO"
我也看过这里,但我不是在寻找可变长度算法.
谢谢
我有很多列表包含不同数量的名义元素.我想将每个列表与每个其他列表进行比较,并针对每个组合计算两个列表共享的元素数量.我不是统计学家,但我认为结果在矩阵中最容易表示.
list1=["Joe","Hanna","Alice"]
list2=["Martin","Ted","Joe"]
list3=["Hanna","Ted","Joe"]
Run Code Online (Sandbox Code Playgroud)

之后我想以图形方式表示结果,可能使用热图或聚类表示.
任何人都可以给我一些提示如何使用R?还有什么是好的代表?非常感谢!
similarity ×10
nlp ×3
string ×3
php ×2
r ×2
spacy ×2
tf-idf ×2
.net ×1
c# ×1
data-mining ×1
gensim ×1
grouping ×1
heatmap ×1
indexing ×1
lucene ×1
mahalanobis ×1
matrix ×1
python ×1
python-3.x ×1
statistics ×1
substring ×1