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计算文本相似度内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • scrapy处理python爬虫调度详解

    scrapy处理python爬虫调度详解

    在本篇文章里小编给大家整理的是一篇关于scrapy处理python爬虫调度的相关内容,有兴趣的朋友们学习下。
    2020-11-11
  • 如何在Python中使用pyecharts图形画可视化大屏

    如何在Python中使用pyecharts图形画可视化大屏

    最近碰巧需要用到pyecharts,pyecharts库是一个用于生成echarts图表的类库,这篇文章主要给大家介绍了关于如何在Python中使用pyecharts图形画可视化大屏的相关资料,需要的朋友可以参考下
    2024-05-05
  • python实现k均值算法示例(k均值聚类算法)

    python实现k均值算法示例(k均值聚类算法)

    这篇文章主要介绍了python实现k均值算法示例,简单实现平面的点K均值分析,使用欧几里得距离,并用pylab展示,需要的朋友可以参考下
    2014-03-03
  • Python基于正则表达式实现文件内容替换的方法

    Python基于正则表达式实现文件内容替换的方法

    这篇文章主要介绍了Python基于正则表达式实现文件内容替换的方法,涉及Python文件、目录及字符串正则替换等相关操作技巧,需要的朋友可以参考下
    2017-08-08
  • 如何使用PyTorch优化一个边缘检测器

    如何使用PyTorch优化一个边缘检测器

    这篇文章主要给大家介绍了关于如何使用PyTorch优化一个边缘检测器的相关资料,文中通过代码介绍的非常详细,对大家的学习或者工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-09-09
  • Python学习之名字,作用域,名字空间(下)

    Python学习之名字,作用域,名字空间(下)

    这篇文章主要介绍了Python学习之名字,作用域,名字空间,紧接上一篇文章内容展开全文,需要的小伙伴可以参考一下,希望对你的学习有所帮助
    2022-05-05
  • Python排序搜索基本算法之归并排序实例分析

    Python排序搜索基本算法之归并排序实例分析

    这篇文章主要介绍了Python排序搜索基本算法之归并排序,简单描述了归并排序的特点,并结合实例形式分析了Python实现归并排序的具体操作技巧,需要的朋友可以参考下
    2017-12-12
  • Pycharm 解决自动格式化冲突的设置操作

    Pycharm 解决自动格式化冲突的设置操作

    这篇文章主要介绍了Pycharm 解决自动格式化冲突的设置操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • Python密码学ROT13算法教程

    Python密码学ROT13算法教程

    这篇文章主要为大家介绍了Python密码学ROT13算法的教程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • python协程异步IO中asyncio的使用

    python协程异步IO中asyncio的使用

    这篇文章主要介绍了python异步编程之asyncio的使用,python中异步IO操作是通过asyncio来实现的,为了更加详细说明asyncio,我们先从协程的最基础开始讲解
    2023-12-12

最新评论