脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Python - Python基于textdistance实现计算文本相似度

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

2024-03-11 16:54 Python

textdistance是Python的第三方库,用于计算文本之间的相似度或距离,本文主要为大家详细介绍了如何使用textdistance实现计算文本相似度,需要的可以了解下

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

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

 

安装

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

原文链接:https://blog.csdn.net/lilongsy/article/details/136556653

延伸 · 阅读

精彩推荐
  • Python一款无代码实时自动分析Pandas DataFrame的工具,推荐!

    一款无代码实时自动分析Pandas DataFrame的工具,推荐!

    AutoProfiler是一个开源的DataFrame分析工具,它专为Jupyter环境设计。当您在Jupyter笔记本中更改或创建DataFrame时,AutoProfiler会自动读取这些DataFrame并进行分析,...

    郭小喵玩AI9942024-01-25
  • Pythonpython发送邮件脚本

    python发送邮件脚本

    这篇文章主要为大家详细介绍了发送邮件python脚本,支持多个附件,中文,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    RangeYan6812021-02-23
  • Python如何在python中实现ECDSA你知道吗

    如何在python中实现ECDSA你知道吗

    这篇文章主要为大家介绍了python中实现ECDSA,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助,希望能够给你带来帮助...

    安分守己的蒟蒻6592022-03-06
  • Pythonpython语言使用技巧分享

    python语言使用技巧分享

    下面小编就为大家带来一篇python语言使用技巧分享。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    Python教程网5882020-08-24
  • PythonPython实现图像的二进制与base64互转

    Python实现图像的二进制与base64互转

    这篇文章主要为大家介绍了如何在Python中使用OpenCV从而实现图像转base64编码、图像转二进制编码、二进制转图像等功能,感兴趣的可以跟上小编一起学习一...

    Vertira5742022-11-17
  • Pythonpython破解zip加密文件的方法

    python破解zip加密文件的方法

    这篇文章主要介绍了python破解zip加密文件的方法,本文图文并茂给大家介绍的非常详细,需要的朋友可以参考下...

    李无敌7702021-02-27
  • PythonPython对List中的元素排序的方法

    Python对List中的元素排序的方法

    这篇文章主要介绍了Python对List中的元素排序 ,需要的朋友可以参考下...

    MSTK14272021-01-26
  • PythonPython3数据库操作包pymysql的操作方法

    Python3数据库操作包pymysql的操作方法

    这篇文章主要介绍了Python3数据库操作包pymysql的操作方法,文章通过实例代码相结合给大家介绍的非常详细,需要的朋友可以参考下...

    Young_id5942021-03-17