摘要:使用gojieba: github.com/yanyiwu/gojieba这个扩展包
需求背景:使用AI生成一小段文本,我需要处理文本接口中返回10个关键词
注意:jisba会存在词语识别不准的问题
package main
import (
"fmt"
"regexp"
"github.com/yanyiwu/gojieba"
)
func main() {
x := gojieba.NewJieba()
defer x.Free()
text := preProcess(`在这个充满活力的数字时代,技术的进步正以前所未有的速度改变着我们的生活。从人工智能到物联网,从云计算到大数据分析,创新无处不在。企业和个人都在积极适应这一变化,以期在这个新兴的数字经济中占据一席之地。`)
tokensAll := x.CutAll(text)
fmt.Println("全模式分词结果:", tokensAll)
// 搜索引擎模式分词
tokensSearch := x.CutForSearch(text, true)
fmt.Println("搜索引擎模式分词结果:", tokensSearch)
keywords := x.ExtractWithWeight(text, 10)
for _, kw := range keywords {
fmt.Printf("word: %s, weight: %f\n", kw.Word, kw.Weight)
}
}
func preProcess(text string) string {
//去除HTML标签
re := regexp.MustCompile(`(?s)<.*?>`)
text = re.ReplaceAllString(text, "")
//去除特殊符号
re = regexp.MustCompile(`[^\p{Han}\w]+`)
text = re.ReplaceAllString(text, "")
//去除停用词
stopwords := []string{"的", "了", "是", "在", "这", "个"}
for _, stopword := range stopwords {
re = regexp.MustCompile(`\b` + stopword + `\b`)
text = re.ReplaceAllString(text, "")
}
return text
}
结果
全模式分词结果: [在 这个 充满 充满活力 活力 的 数字 时代 技术 的 进步 正 以前 前所 前所未有 未有 的 速度 改变 着 我们 的 生活 从 人工 人工智能 智能 能到 物 联网 从 云计算 计算 算到 大数 数据 数据分析 分析 创新 无处 无处不在 不在 企业 和 个人 都 在 积极 适应 这 一 变化 以期 在 这个 新兴 的 数字 经济 济中 占据 一席 一席之地]
搜索引擎模式分词结果: [在 这个 充满 活力 充满活力 的 数字 时代 技术 的 进步 正以 前所 未有 前所未有 的 速度 改变 着 我们 的 生活 从 人工 智能 人工智能 到物 联网 从 计算 云计算 到 大 数据 分析 数据分析 创新 无处 不在 无处不在 企业 和 个人 都 在 积极 适应 这一 变化 以期 在 这个 新兴 的 数字 经济 中 占据 一席 一席之地]
word: 数字, weight: 12.950640
word: 正以, weight: 11.739204
word: 云计算, weight: 11.739204
word: 到物, weight: 11.739204
word: 数据分析, weight: 9.893344
word: 一席之地, weight: 9.857626
word: 无处不在, weight: 9.726290
word: 充满活力, weight: 9.652182
word: 人工智能, weight: 9.458026
word: 前所未有, weight: 7.731067