高效关键词匹配库效果对比分析

python

pip install flashtext
from flashtext import KeywordProcessor

kp = KeywordProcessor()
words = ["he", "she", "hers", "his", "share"] 
for word in words:
    kp.add_keyword(keyword=word)  # 新增关键词
kp.extract_keywords('ahishehersshare')
## out:  []

kp.extract_keywords('a his he hers share')  # 这里手动分词一下
## out:  ['his', 'he', 'hers', 'share']

github.com/ayoyu/flashtext

go get ggithub.com/ayoyu/flashtext
import (
	"github.com/ayoyu/flashtext"
	"fmt"
)

var (
	keys = []string{
		"he", "she", "hers", "his", "share",
	}
	key = "ahishershare"
)

func main() {
	// 创建一个关键词处理器,不区分大小写
	var flash = flashtext.NewFlashKeywords(false)

    for _, word := range keys {
        flash.Add(word)
	}
    matches := flash.Search(key)
    for _, match := range matches {
        fmt.Println("match:", match.Key)
        fmt.Println("Start:", match.Start)
        fmt.Println("End:", match.End)
        fmt.Println("---")
}
}
/*
		match: his
		Start: 1
		End: 3
		---
		match: he
		Start: 4
		End: 5
		---
		match: hers
		Start: 4
		End: 7
**/

github.com/code-innovator-zyx/flashtext

go get github.com/code-innovator-zyx/flashtext
import (
	"github.com/code-innovator-zyx/flashtext"
	"fmt"
)

var (
	keys = []string{
		"he", "she", "hers", "his", "share",
	}
	key = "ahishershare"
)

func main() {
	// 创建一个关键词处理器,不区分大小写
	kp := flashtext.NewKeywordProcessor(false)

	// 添加关键词
	kp.AddKeywordsFromList(keys).Build()

	// 提取关键词
	matches := kp.ExtractKeywords(key)

	// 打印匹配结果
	for _, match := range matches {
		fmt.Println("Match:", match.Match)
		fmt.Println("Start:", match.Start)
		fmt.Println("End:", match.End)
		fmt.Println("---")
	}
}

/**
			his
			Start: 1
			End: 3
			---
			she
			Start: 3
			End: 5
			---
			he
			Start: 4
			End: 5
			---
			hers
			Start: 4
			End: 7
			---
			share
			Start: 7
			End: 11
			---
*/

所以 github.com/code-innovator-zyx/flashtext 库目前使用的标准ac自动机,匹配的效果是目前最好的一个库,基于大量关键词,长文本匹配无疑ac自动机算法性能无需质疑。但是可惜的是暂不支持数据清洗功能,因为是多模式匹配,并且内部构建了失败指针,如果进行数据清洗,会有重复清洗的情况,最后输出效果可能与预期的大相径庭,可能后面会支持吧

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯狂的程需猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值