我正在对时间序列数据进行一些数据挖掘.我需要计算两个相等维度系列之间的距离或相似度.我被建议使用欧几里德距离,Cos相似度或马哈拉诺比斯距离.前两个没有提供任何有用的信息.我似乎无法理解网络上的各种教程.
所以,
给定两个向量A(A1,A2,A3,...,AN)和B(B1,B2,B3,...,BN)你如何找到马氏它们之间的距离?
我有一个问题问你.
我想编写一个查询,检索与给定字符串"Londn"相似的值(给定相似函数,如Lev),以与DBPedia的谓词"RDFS:label"进行比较.例如,在输出中,我想获得"伦敦"的价值.我已经读过可用的方法可能是使用iSPARQL("不精确的SPARQL"),尽管它在文献中没有被广泛使用.
我可以使用iSPARQL还是有一些SPARQL方法来执行相同的操作?
假设我使用一些方法从两个样本中提取了两个特征向量,我想比较这两个特征向量以预测它们是来自同一类还是不同的类。我可以为此目的使用 SVM 吗?据我了解,SVM 用于接受一个输入(现在我有两个)并预测它是否属于一个特定的类。我不知道如何使用它进行相似度测量。
余弦距离或欧几里德距离等简单方法已经测试过,性能较差。所以我只想尝试一些学习方法,例如 SVM、NN 或其他,如果您有任何建议。谢谢!
我正在寻找的不仅仅是两个文本之间的简单相似度分数。但是字符串中子字符串的相似度得分。说:
text1 = 'cat is sleeping on the mat'.
text2 = 'The cat is sleeping on the red mat in the living room'.
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,所有的词text1都存在于text2完全中,因此相似度应该是 100%。
如果text1缺少某些单词,则得分会更低。
我正在处理一个不同段落大小的大型数据集,因此在具有这种相似性得分的较大段落中找到较小的段落至关重要。
我只发现了比较两个字符串的字符串相似性,例如余弦相似性、difflib 相似性等。但不是关于另一个字符串中的子字符串分数。
我正在尝试衡量公司名称的相似性,但是在尝试匹配这些名称的缩写时遇到了困难。例如:
IBM
The International Business Machines Corporation
Run Code Online (Sandbox Code Playgroud)
我曾尝试使用fuzzywuzzy来衡量相似性:
>>> fuzz.partial_ratio("IBM","The International Business Machines Corporation")
33
>>> fuzz.partial_ratio("General Electric","GE Company")
20
>>> fuzz.partial_ratio("LTCG Holdings Corp","Long Term Care Group Inc")
39
>>> fuzz.partial_ratio("Young Innovations Inc","YI LLC")
33
Run Code Online (Sandbox Code Playgroud)
您是否知道任何技术可以衡量此类缩写的更高相似度?
我想测量两个词之间的相似度。想法是使用OCR读取文本并检查关键字的结果。我要寻找的功能应该比较两个单词并以%返回相似度。因此,将单词与自身进行比较应该是100%相似的。我自己编写了一个函数,然后逐个字符比较char,然后返回与长度成比例的匹配数。但是问题是
wordComp('h0t',hot')
0.66
wordComp('tackoverflow','stackoverflow')
0
Run Code Online (Sandbox Code Playgroud)
但是直观的两个示例都应该具有很高的相似度> 90%。加Levenstein距离
import nltk
nltk.edit_distance('word1','word2')
Run Code Online (Sandbox Code Playgroud)
在我的函数中会将第二个结果提高到92%,但第一个结果仍然不好。
我已经找到了针对“ R”的解决方案,可以将此功能与另一种方法结合rpy2使用或agrepy用作另一种方法。但是我想通过更改接受基准来使程序变得越来越敏感(仅接受相似度> x%的匹配项)。
我还有其他可以使用的好方法吗?或者您有什么想法可以改善我的功能?
我想计算可以具有不同长度的时间序列数据段之间的相似性。在寻找相似性度量时,我想考虑长度和价值的差异。我认为 Levenshtein distance 对此会很好,只要它适用于一系列浮点数而不是字符串。
这个问题解释了当被替换的整数值的差异无关紧要时,如何将 Levenshtein distance 与整数列表一起使用。在这种情况下,值的差异很重要,较大的差异应该受到更多的惩罚(我正在使用浮点数)。
当然,我对完成类似事情的其他相似性指标持开放态度,我只是认为 Levenshtein 距离已经非常接近我想要的了。
例子:
比较第一个元素的惩罚较小,下一个元素的惩罚稍大,然后第三个元素的惩罚较大,最后一个元素的删除惩罚。
algorithm signal-processing similarity information-theory levenshtein-distance
我想针对未标记数据的特定域微调 BERT,并让输出层检查它们之间的相似性。我该怎么做?我是否需要先微调分类器任务(或问题答案等)并获得嵌入?或者我可以只使用预先训练好的 Bert 模型而无需执行任务并使用我自己的数据进行微调?
我想使用 Word2Vec 来检查文本的相似性。
我目前正在使用另一种逻辑:
from fuzzywuzzy import fuzz
def sim(name, dataset):
matches = dataset.apply(lambda row: ((fuzz.ratio(row['Text'], name) ) = 0.5), axis=1)
return
Run Code Online (Sandbox Code Playgroud)
(名字是我的专栏)。
为了应用此功能,我执行以下操作:
df['Sim']=df.apply(lambda row: sim(row['Text'], df), axis=1)
Run Code Online (Sandbox Code Playgroud)
你能告诉我如何用 Word2Vec 替换 Fuzzy.ratio 以便比较数据集中的文本吗?
数据集示例:
Text
Hello, this is Peter, what would you need me to help you with today?
I need you
Good Morning, John here, are you calling regarding your cell phone bill?
Hi, this this is John. What can I do for you?
...
Run Code Online (Sandbox Code Playgroud)
第一个文本和最后一个文本非常相似,尽管它们用不同的词来表达相似的概念。我想创建一个新列,用于为每一行放置相似的文本。我希望你能帮助我。
similarity ×10
python ×4
nlp ×3
distance ×2
string ×2
algorithm ×1
compare ×1
data-mining ×1
dbpedia ×1
linked-data ×1
math ×1
measure ×1
pandas ×1
path ×1
semantic-web ×1
sparql ×1
svm ×1
time ×1
word2vec ×1