gmq版本

This commit is contained in:
2026-04-21 10:54:10 +08:00
parent 8b7ccb212c
commit c10586ad10

View File

@@ -2,7 +2,6 @@ package utils
import ( import (
"context" "context"
"path/filepath"
"sort" "sort"
"sync" "sync"
@@ -37,56 +36,25 @@ type gseTool struct {
tr *extracker.TextRanker tr *extracker.TextRanker
} }
// newGseTool 初始化工具(使用外部数据文件 // newGseTool 初始化工具(内置词典 + 停用词
func newGseTool() (tool *gseTool, err error) { func newGseTool() (tool *gseTool, err error) {
// 1. 初始化分词器 // 1. 初始化分词器
var seg gse.Segmenter var seg gse.Segmenter
// 内置词典(无外部文件)
// gse数据文件在可执行文件同级的gse/dict目录下
gseDataPath := "gse"
dictPath := filepath.Join(gseDataPath, "dict", "zh")
idfPath := filepath.Join(dictPath, "idf.txt")
stopPath := filepath.Join(dictPath, "stop.txt")
// 加载词典
err = seg.LoadDict(filepath.Join(dictPath, "dict.txt"))
if err != nil {
glog.Warning(context.Background(), "加载gse词典失败尝试embed模式:", err)
// 回退到embed模式
err = seg.LoadDictEmbed() err = seg.LoadDictEmbed()
if err != nil { if err != nil {
return return
} }
// 内置停用词v1.0.2 标准)
err = seg.LoadStopEmbed() err = seg.LoadStopEmbed()
if err != nil { if err != nil {
return return
} }
tfidf := &extracker.TagExtracter{}
tfidf.WithGse(seg)
err = tfidf.LoadIdf()
if err != nil {
return
}
tr := &extracker.TextRanker{}
tr.WithGse(seg)
tool = &gseTool{
seg: seg,
tfidf: tfidf,
tr: tr,
}
return
}
// 加载停用词
err = seg.LoadStop(stopPath)
if err != nil {
glog.Warning(context.Background(), "加载停用词失败,继续:", err)
}
// 2. 初始化 TF-IDF 提取器 // 2. 初始化 TF-IDF 提取器
tfidf := &extracker.TagExtracter{} tfidf := &extracker.TagExtracter{}
tfidf.WithGse(seg) tfidf.WithGse(seg)
err = tfidf.LoadIdf(idfPath) err = tfidf.LoadIdf()
if err != nil { if err != nil {
return return
} }