gmq版本
This commit is contained in:
40
utils/gse.go
40
utils/gse.go
@@ -2,7 +2,6 @@ package utils
|
||||
|
||||
import (
|
||||
"context"
|
||||
"path/filepath"
|
||||
"sort"
|
||||
"sync"
|
||||
|
||||
@@ -37,56 +36,25 @@ type gseTool struct {
|
||||
tr *extracker.TextRanker
|
||||
}
|
||||
|
||||
// newGseTool 初始化工具(使用外部数据文件)
|
||||
// newGseTool 初始化工具(内置词典 + 停用词)
|
||||
func newGseTool() (tool *gseTool, err error) {
|
||||
// 1. 初始化分词器
|
||||
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()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
// 内置停用词(v1.0.2 标准)
|
||||
err = seg.LoadStopEmbed()
|
||||
if err != nil {
|
||||
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 提取器
|
||||
tfidf := &extracker.TagExtracter{}
|
||||
tfidf.WithGse(seg)
|
||||
err = tfidf.LoadIdf(idfPath)
|
||||
err = tfidf.LoadIdf()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user