求教两组间的标签重合度计算,这个应该学习什么算法?

2019-12-03 00:28:40 +08:00
 TaihongZhang
向大家请教一下,本人最近刚刚接触编程,学习的 Python,目前有一个想法想要学习:
就是现在有很多组各不相同的标签,然后想计算两组之间的相似程度,找到重合度最高的。这种算法要学习什么算法呢?有没有 Python 的解决方案?
4127 次点击
所在节点    Python
18 条回复
lithiumii
2019-12-03 00:34:20 +08:00
不懂算法,盲猜一个 pca ( Principal component analysis?
TaihongZhang
2019-12-03 00:40:04 +08:00
@lithiumii 好的我去看看
how2code
2019-12-03 00:45:41 +08:00
说 PCA 的拉出去 251...

最简单的应该是关键词 TF IDF + cosine similarity
ZRS
2019-12-03 00:46:39 +08:00
直接每个 label 单独一维算 cosine 相似度吧
how2code
2019-12-03 00:48:25 +08:00
wangyzj
2019-12-03 01:02:27 +08:00
@lithiumii 哈哈,我也是这么想的
klesh
2019-12-03 01:03:30 +08:00
看看 Jaccard Similarity 或 Overlap Coefficient 够不够用?

a = {'foo', 'bar', 'hello', 'world'}
b = {'foo', 'bar', 'hello', 'world', 'test'}
c = a.intersection(b)
d = a.union(b)
print('js(a, b)=', float(len(c))/float(len(d)))
print('oc(a, b)=', float(len(c))/float(min(len(a), len(b))))
Mohanson
2019-12-03 01:08:25 +08:00
将对象表示为多维特征向量,然后欧几里德距离搞定
ecloud
2019-12-03 01:33:24 +08:00
如果仅仅是数人头的话,用统计学就能搞定
如果要考虑出现的位置上下文关系什么的,那就干脆把每个字节的 ASCII 码作为纵坐标,字节作为横坐标,形成一个波函数
然后对波形进行拟合,scipy 简直不要太好用了
nimab
2019-12-03 01:34:43 +08:00
document distance
cedoo22
2019-12-03 01:41:43 +08:00
#9 楼略靠谱,关键是相似度怎么量化比较~
虽然,我不懂算法。
ClericPy
2019-12-03 09:22:01 +08:00
猛的就想起 <集体智慧编程> 头两章来了... 欧式距离 皮尔逊相关度什么的... 实习的时候玩过这些, 后来发现还是余弦向量简单又实惠...
MengQuadra
2019-12-03 10:27:57 +08:00
数据区分度大大并且量多话可以用 simhash, 比起其他需要保证输入向量大小相同的方法来说更灵活
TimePPT
2019-12-03 10:34:22 +08:00
先定义你想要的相似度是啥?
lst_a = ['皇上', '皇后', '大臣']
lst_b = ['国王', '王后', '大臣']

这俩列表的标签文本字符层面的重叠相似度只有一个签,但要考虑语义相似度可是三个签
TaihongZhang
2019-12-03 10:58:58 +08:00
@TimePPT 就是只需要文本字符层面的相似度,不考虑语义,标签是固定的
TimePPT
2019-12-03 11:08:38 +08:00
@TaihongZhang 那有啥纠结的,量不大,全部放在两个 set 里直接取个交集不就完了
cambria
2019-12-03 13:46:33 +08:00
楼主只是个初学者,你们都快把支持向量机搬出来了。。。
@TimePPT 的方法靠谱 python 里有个 set 的数据结构,支持 & 运算符求交集运算,如果不用加权直接计数就可以了
photon006
2019-12-03 14:16:06 +08:00
皮尔逊相关系数

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/625311

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX