Python基于textdistance实现计算文本相似度

 更新时间:2024年03月10日 09:27:23   作者:小龙在山东  
textdistance是Python的第三方库,用于计算文本之间的相似度或距离,本文主要为大家详细介绍了如何使用textdistance实现计算文本相似度,需要的可以了解下

textdistance是Python的第三方库,用于计算文本之间的相似度或距离。它提供了30+个算法,简单易用。

安装

pip install textdistance

# 使用扩展库,提高性能
pip install "textdistance[extras]"

使用

import textdistance

# 计算编辑距离
distance = textdistance.levenshtein.distance("如何更换花呗绑定银行卡", "花呗更改绑定银行卡")
print("编辑距离:", distance)

# 计算余弦相似度
similarity = textdistance.cosine.similarity("如何更换花呗绑定银行卡", "花呗更改绑定银行卡")
print("余弦相似度:", similarity)

# 计算 Jaccard 系数
coefficient = textdistance.jaccard("如何更换花呗绑定银行卡", "花呗更改绑定银行卡")
print("Jaccard 系数:", coefficient)

# 计算 Hamming 距离
distance = textdistance.hamming.distance("如何更换花呗绑定银行卡", "花呗更改绑定银行卡")
print("Hamming 距离:", distance)

结果:

编辑距离: 5
余弦相似度: 0.8040302522073697
Jaccard 系数: 0.6666666666666666
Hamming 距离: 10

应用场景

拼写检查

在拼写检查中,可以使用编辑距离等算法来比较单词之间的相似度,从而找出可能的正确拼写。

import textdistance

# 拼写检查
word = "发愤图强"
possible_spellings = ["发奋图强", "发奋图", "发愤图"]

for spelling in possible_spellings:
    distance = textdistance.levenshtein.distance(word, spelling)
    if distance <= 1:
        print("可能的正确拼写:", spelling)

结果

可能的正确拼写: 发奋图强
可能的正确拼写: 发愤图

文档相似度计算

在信息检索和推荐系统中,经常需要计算文档之间的相似度,以便为用户提供相关的信息或推荐内容。

import textdistance

# 文档相似度计算
doc1 = "Python is a programming language"
doc2 = "Python is used for web development"
doc3 = "Java is a programming language"

similarity1 = textdistance.cosine.similarity(doc1, doc2)
similarity2 = textdistance.cosine.similarity(doc1, doc3)

print("文档1和文档2的余弦相似度:", similarity1)
print("文档1和文档3的余弦相似度:", similarity2)

结果

文档1和文档2的余弦相似度: 0.6063390625908325
文档1和文档3的余弦相似度: 0.8391463916782737

数据清洗

在数据清洗过程中,可以使用 Hamming 距离等算法来比较数据条目之间的相似度,从而找出相似但不完全相同的数据。

import textdistance

# 数据清洗
data = ["配偶", "原配", "元配", "老婆", "夫人", "爱人"]

for i in range(len(data)):
    for j in range(i+1, len(data)):
        distance = textdistance.hamming.distance(data[i], data[j])
        if distance <= 1:
            print("相似但不完全相同的数据:", data[i], data[j])

结果:

相似但不完全相同的数据: 原配 元配
相似但不完全相同的数据: 夫人 爱人

import textdistance

# 姓名匹配
name1 = "李建国"
name2 = "张建国"
name3 = "王爱国"

coefficient1 = textdistance.jaccard.normalized_similarity(name1, name2)
coefficient2 = textdistance.jaccard.normalized_similarity(name1, name3)

print("姓名1和姓名2的Jaccard系数:", coefficient1)
print("姓名1和姓名3的Jaccard系数:", coefficient2)

结果

姓名1和姓名2的Jaccard系数: 0.5
姓名1和姓名3的Jaccard系数: 0.19999999999999996

textdistance 提供了丰富多样的文本比较算法和距离度量方法,可以满足各种不同的文本比较需求。

相关链接

源码

到此这篇关于Python基于textdistance实现计算文本相似度的文章就介绍到这了,更多相关Python textdistance计算文本相似度内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python常用内置模块你了解吗

    python常用内置模块你了解吗

    这篇文章主要为大家介绍了python的常用内置模块,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • python中cv2.imdecode()与cv2.imencode()的使用小结

    python中cv2.imdecode()与cv2.imencode()的使用小结

    本文介绍了cv2.imencode()和cv2.imdecode()函数的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-01-01
  • python3学习之Splash的安装与实例教程

    python3学习之Splash的安装与实例教程

    splash 是一个python语言编写的用于配合scrapy解析js的库,下面这篇文章主要给大家介绍了关于python3学习之Splash的安装与使用的一些相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-07-07
  • Python+pandas计算数据相关系数的实例

    Python+pandas计算数据相关系数的实例

    今天小编就为大家分享一篇Python+pandas计算数据相关系数的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • python爬虫实战项目之爬取pixiv图片

    python爬虫实战项目之爬取pixiv图片

    最近决定写个P站的爬虫,实际操作起来确实遇到了些新问题,通过解决也有所收获,下面这篇文章主要给大家介绍了关于python爬虫实战项目之爬取pixiv图片的相关资料,需要的朋友可以参考下
    2022-07-07
  • python批量修改交换机密码的示例

    python批量修改交换机密码的示例

    这篇文章主要介绍了python批量修改交换机密码的示例,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-09-09
  • pycharm 如何缩进和SQL乱码及SQL包含变量

    pycharm 如何缩进和SQL乱码及SQL包含变量

    这篇文章主要介绍了pycharm 如何缩进和SQL乱码及SQL包含变量,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • MAC平台基于Python Appium环境搭建过程图解

    MAC平台基于Python Appium环境搭建过程图解

    这篇文章主要介绍了MAC平台基于Python Appium环境搭建过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • 跟老齐学Python之有容乃大的list(1)

    跟老齐学Python之有容乃大的list(1)

    这一讲中的list类型,也是python的一种数据类型。翻译为:列表。LIST在python中具有非常强大的功能。
    2014-09-09
  • 浅析python 字典嵌套

    浅析python 字典嵌套

    这篇文章主要介绍了python 字典嵌套的相关资料,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-09-09

最新评论