首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
Coding
V2EX  ›  Python

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

  •  
  •   TaihongZhang · 10 天前 · 808 次点击
    向大家请教一下,本人最近刚刚接触编程,学习的 Python,目前有一个想法想要学习:
    就是现在有很多组各不相同的标签,然后想计算两组之间的相似程度,找到重合度最高的。这种算法要学习什么算法呢?有没有 Python 的解决方案?
        1
    lithiumii   10 天前
    不懂算法,盲猜一个 pca ( Principal component analysis?
        2
    TaihongZhang   10 天前
    @lithiumii 好的我去看看
        3
    how2code   10 天前
    说 PCA 的拉出去 251...

    最简单的应该是关键词 TF IDF + cosine similarity
        4
    ZRS   10 天前
    直接每个 label 单独一维算 cosine 相似度吧
        6
    wangyzj   10 天前
    @lithiumii 哈哈,我也是这么想的
        7
    klesh   10 天前
    看看 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))))
        8
    Mohanson   10 天前 via Android
    将对象表示为多维特征向量,然后欧几里德距离搞定
        9
    ecloud   10 天前
    如果仅仅是数人头的话,用统计学就能搞定
    如果要考虑出现的位置上下文关系什么的,那就干脆把每个字节的 ASCII 码作为纵坐标,字节作为横坐标,形成一个波函数
    然后对波形进行拟合,scipy 简直不要太好用了
        10
    nimab   10 天前 via Android
    document distance
        11
    cedoo22   10 天前
    #9 楼略靠谱,关键是相似度怎么量化比较~
    虽然,我不懂算法。
        12
    ClericPy   10 天前
    猛的就想起 <集体智慧编程> 头两章来了... 欧式距离 皮尔逊相关度什么的... 实习的时候玩过这些, 后来发现还是余弦向量简单又实惠...
        13
    MengQuadra   10 天前
    数据区分度大大并且量多话可以用 simhash, 比起其他需要保证输入向量大小相同的方法来说更灵活
        14
    TimePPT   10 天前
    先定义你想要的相似度是啥?
    lst_a = ['皇上', '皇后', '大臣']
    lst_b = ['国王', '王后', '大臣']

    这俩列表的标签文本字符层面的重叠相似度只有一个签,但要考虑语义相似度可是三个签
        15
    TaihongZhang   10 天前
    @TimePPT 就是只需要文本字符层面的相似度,不考虑语义,标签是固定的
        16
    TimePPT   10 天前
    @TaihongZhang 那有啥纠结的,量不大,全部放在两个 set 里直接取个交集不就完了
        17
    cambria   10 天前
    楼主只是个初学者,你们都快把支持向量机搬出来了。。。
    @TimePPT 的方法靠谱 python 里有个 set 的数据结构,支持 & 运算符求交集运算,如果不用加权直接计数就可以了
        18
    photon006   10 天前
    皮尔逊相关系数
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3092 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 33ms · UTC 10:36 · PVG 18:36 · LAX 02:36 · JFK 05:36
    ♥ Do have faith in what you're doing.