MIT License

技术解读

以下内容由 GitRead 中文社区 编辑团队基于项目 README 与官方资料整理, 结合中文开发者的常见使用场景补充技术选型建议。具体以项目官方文档为准。

中文文本相似度计算器:深入分析 “kiwirafe/xiangsi”

项目背景与痛点

在现代的自然语言处理(NLP)领域,中文文本相似度计算是一个核心问题。这一技术能够用于识别和比较文本内容间的相似性,从而在搜索引擎、推荐系统、信息检索等应用场景中发挥关键作用。然而,现有的许多工具和算法并不是为了中文语言专门优化的,自然语言的复杂性和特殊性意味着通用模型并不总是能够精确捕捉中文文本的语义和语法特性。因此,专门针对中文的相似度计算器——“xiangsi” 应运而生,旨在提供更加精准的中文文本相似度比对功能。

核心技术揭秘

“xiangsi” 贯彻了以语义为核心的文本相似度计算理念,结合使用了 Jaccard 相似度、TF-IDF 以及词向量模型,通过多种算法有机结合,以实现高性能的文本相似度计算。项目实现精细地解析文本,提取文本特征,并通过上述多种方法进行相似度计算,灵活应对多种应用需求。

下面通过 Mermaid 图来直观展示 “xiangsi” 的数据处理流程,从输入到输出的整个过程。

graph TD A[用户上传文本] --> B[预处理] B --> C{"分词?"} C -->|"是"| D[TF-IDF 特征提取] C -->|"否"| E[词向量转化] D --> F[计算相似度] E --> F F --> G[结果输出]

此举不仅能保证文本处理的灵活性和准确性,还有效提升了处理效率。

功能亮点与差异

与其他流行文本相似度计算器相比,“xiangsi” 独特之处在于它对中文文本的精确处理能力。其通过内置中文分词组件与字符编码支持,有效克服了中文编码、脚本识别等难题,这使其更适合进行复杂中文文本的处理任务。同时,相比一些功能单一的工具,“xiangsi” 提供了多种计算方法,使得用户可以按需调用最适合实际情况的方法。

应用场景与落地建议

在实际运用中,“xiangsi” 特别适用于需要高性能和高精度中文文本处理的应用,如自动驾驶系统的指令解析与反馈、智能客服系统的语义理解、以及大规模文本的数据挖掘和信息过滤等。需要注意的是,由于可能涉及大规模的中文文本处理,计算资源的优化对于确保性能至关重要;另外,分词配置兼容性也是需关注的重点,因为分词效果直接影响文本相似性判断的准确性。

综合评价

“xiangsi” 在技术实现上展现出高水平的中文文本处理能力,通过采用多种计算策略提升了相似度计算的灵活性与准确性。然而,如同任何开源项目,“xiangsi” 也存在进一步优化的空间,例如在扩展多语言支持、增强实时性能及稳定性方面。具备良好的扩展性和模块化设计,该项目展示了成为中文文本相似度计算领域领先者的潜力。

简要分析

热度分
218
价值分
107
活跃状态
活跃

语言占比

Python

贡献者

README

Xiangsi

中文文本相似度计算器

Pypi Version Downloads

简体中文 | English

Xiangsi是一个计算文本相似度的Python包,并支持中文文本(即中文分词、停用词过滤等)
Xiangsi提供4个传统相似度算法,分别是:余弦相似度,Simhash,Minhash以及Jaccard

在线计算文本相似度

下载与安装

Pip安装:

pip3 install xiangsi

国内较慢的话可以使用清华镜像:

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple xiangsi

使用方法

计算文本相似度

Xiangsi会自动对文本进行中文分词处理,并过滤掉停用词。之后,Xiangsi会根据所选算法计算文本相似度。

余弦相似度
import xiangsi as xs
xs.cossim("如何更换花呗绑定银行卡", "花呗更改绑定银行卡")
Simhash & Minhash & Jaccard相似度
import xiangsi as xs
# Simhash
xs.simhash("如何更换花呗绑定银行卡", "花呗更改绑定银行卡")
# Minhash
xs.minhash("如何更换花呗绑定银行卡", "花呗更改绑定银行卡")
# Jaccard
xs.jaccard("如何更换花呗绑定银行卡", "花呗更改绑定银行卡")

其它加权方法

默认的加权方法是计算每个单词在文本中出现的频率。此外,还有另外两种加权方法可供选择。

TFIDF
arg = [
    "西班牙失业率创新高",
    "澳大利亚失业率高达5.1%",
    "花呗更改绑定银行卡",
    "我什么时候开通了花呗",
    "从这个角度来看, 我们一般认为,抓住了问题的关键,其他一切则会迎刃而解。"
    "从这个角度来看, 每个人都不得不面对这些问题。"

]
xs.weight = "TFIDF" # 将加权方式设置为TFIDF
xs.construct(arg) # 输入TFIDF文本,相同的文本只需调用这个函数一次

xs.cossim("如何更换花呗绑定银行卡", "花呗更改绑定银行卡")
xs.simhash("如何更换花呗绑定银行卡", "花呗更改绑定银行卡")
没有加权
xs.weight = "None" # 将加权方式设置为None
xs.cossim("如何更换花呗绑定银行卡", "花呗更改绑定银行卡")

修改参数

修改默认值
import xiangsi as xs
#计算Simhash时取前多少的TFIDF值。默认值为64
xs.feature = 64
#计算Minhash时算出多少个哈希值。默认值为16
xs.HashNums = 16
#计算Minhash时的最大哈希。默认值为4294967311
xs.prime = 4294967311
修改停用词

在v4.2.1之后,Textsim支持更改停用词:

import xiangsi as xs
stopwords = ["你好", "世界"]
xs.update_stopwords(stopwords)

新版本

v4.2.3: 从xiangshi改名为xiangsi
v4.2.2: 解决路径问题
v4.2.1: 支持英文文本相似度

注意:
  • v4.2.0+文本相似度的计算结果可能和v4.1.0不一样,因为v4.1.0加权方式不同。
  • v4.2.0+文本相似度的输入均为两个string,且不与v4.1.0反向兼容。
  • v4.2.0+不再支持文本聚类(如果还有人需要的话请联系我,我会另开一个包)

其他链接

评论

暂无评论