百科.dev
全部条目AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
S

simhash

> 编程语言
开源

中文文档 simhash 值计算

1.2K stars0 点赞0 次浏览
访问官网GitHub

工具介绍

中文文档 simhash 值计算

专门针对中文文档的simhash算法库

简介

此项目用来对中文文档计算出对应的 simhash 值。 simhash 是谷歌用来进行文本去重的算法,现在广泛应用在文本处理中。

详见simhash算法原理及实现

特性

  • 使用 CppJieba 作为分词器和关键词抽取器
  • 使用 jenkins 作为 hash 函数
  • hpp 风格,所有源码都是 .hpp 文件里面,方便使用。 没有链接,就没有伤害。
  • 本项目的副产品项目:simhash_server 提供了简单的 simhash HTTP 服务。

依赖

  • g++ (version >= 4.1 recommended), or clang++ .

用法

git clone --recurse-submodules https://github.com/yanyiwu/simhash.git
cd simhash
mkdir build
cd build
cmake ..
make

测试

make test

演示

文本:"我是蓝翔技工拖拉机学院手扶拖拉机专业的。不用多久,我就会升职加薪,当上总经理,出任CEO,走上人生巅峰。"
关键词序列是: ["蓝翔:11.7392", "CEO:11.7392", "升职:10.8562", "加薪:10.6426", "手扶拖拉机:10.0089"]
simhash值是: 17831459094038722629
100010110110和110001110011 simhash值的相等判断如下:
海明距离阈值默认设置为3,则isEqual结果为:0
海明距离阈值默认设置为5,则isEqual结果为:1

详情请看 demo

关键词数量(topN)的设置

make() 函数的 topN 参数控制从文本中抽取多少个关键词来参与 simhash 计算。关键词越多,指纹对文本内容的覆盖越全面,但计算开销也随之增加。

不同大小的文件应该使用不同的 topN:

文本长度(字节) 建议 topN
≤ 600 5
~1200 10
~7800 65
≥ 24000 200

自动选择 topN(推荐):

可以使用 Simhasher::getTopN(text) 获取自动推荐的 topN 值(规则:max(5, min(200, text.size() / 120))), 或直接调用无需手动指定 topN 的 make(text, v64) 重载,它会自动调用 getTopN():

Simhasher shash(DICT_PATH, HMM_PATH, IDF_PATH, STOP_WORDS_PATH);
string text = /* 读入文本 */;

// 方法一:自动确定 topN
uint64_t simhashValue;
shash.make(text, simhashValue);

// 方法二:手动查询推荐值后再调用
size_t topN = Simhasher::getTopN(text);
shash.make(text, topN, simhashValue);

Benchmark

./benchmark/benchmarking

结果如下:

…

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

C++

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言