Golang Go语言 Gse v0.30.0 发布了, 高性能分词增加 hmm 支持

发布于 1周前 作者 sinazl 来自 Go语言

Golang Go语言 Gse v0.30.0 发布了, 高性能分词增加 hmm 支持

Go 语言高效分词, 支持英文、中文、日文等

词典用双数组 trie ( Double-Array Trie )实现, 分词器算法为基于词频的最短路径加动态规划。v0.30.0 版本主要新增了 DAG 和 HMM (Viterbi) 算法分词, 新增 API 基本和结巴分词保持一致.

支持普通、搜索引擎、全模式、精确模式和 HMM 模式多种分词模式,支持用户词典、词性标注,可运行 JSON RPC 服务。

项目地址: https://github.com/go-ego/gse

package main

import ( “fmt”

"github.com/go-ego/gse"

)

func main() { var seg gse.Segmenter seg.LoadDict()

text1 := "你好世界, Hello world"
fmt.Println(seg.Cut(text1, true))

}

Rhine River

Add

  • [NEW] Add HMM cut support
  • [NEW] Add go mod support and remove dep files
  • [NEW] Add find word in dictionary func
  • [NEW] Add Cut(), CutAll(), CutSearch(), LoadModel(), HMMCut() func
  • [NEW] Add hmm cut test code
  • [NEW] Add hmm cut example code

Update

  • [NEW] Cutting the dict method, move load dictionary to dict_util.go
  • [NEW] Update example and Add more test
  • [NEW] Update and clean utils code
  • [NEW] Simplify test code, add equal benchmark code
  • [NEW] Update pkg cedar code
  • [NEW] Update code style
  • [NEW] Update README.md [ Format README.mdand Update example ]

Fix

  • [FIX] Fixed and clean issue template
  • [FIX] Update README.md [ update and fixed example ]

See Commits for more details, after Oct 9.


更多关于Golang Go语言 Gse v0.30.0 发布了, 高性能分词增加 hmm 支持的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

17 回复

其实一直不懂为啥中文分词库一直停留在 hmm 的 level 能不能来个这几年的研究结果和 hmm 性能比较

更多关于Golang Go语言 Gse v0.30.0 发布了, 高性能分词增加 hmm 支持的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


刚实现对 hmm 的支持, 后面对比其他库和优化, 应该比起其他库, 性能不会低

还提供了最短路径、动态规划和 DAG 分词

和 sego 谁抄谁?

总有有些人不看项目的 License, 一部分基于 sego ( 当时 2 年没维护了, 功能不完善有 BUG, 才开的新项目 ), 你可以说抄了 Python 的 jieba

那就来个 readme 找不同。。。
https://github.com/huichen/sego
https://github.com/go-ego/gse/blob/master/README_zh.md

奇怪,用代码就用代码,连测试都不自己跑一下,数据直接用人家的?

你有看代码和 License 吗? soldier, 请搞清楚数据是 jieba 分词, sego 的也是

有什么奇怪的? 你说的那个 readme 的数字, 有很多功能要实现, 还没更新 readme, 还以为你说的的字典数据呢

算法从 HMM,CRF 到深度神经网络,切分的查准和召回率都有小幅提升。但是对分词器切分性能影响最大的还是要有一份好的语料或者词典。

不知道有没有人用词嵌入之类的技术做分词,现在的分词器遇到新词就歇菜了,需要频繁维护 dict 相当麻烦

词嵌入的前提不就是分词?感觉想鸡生蛋的问题啊


是的, 目前的算法要完全解决新词, 只能维护模型和字典

语料库、模型和词典主要影响新词和准确度, 要完全准确, 只能更新模型和字典; jieba 用的 hmm, pkuseg 是 CRF , 算法都差不多; 准确度看语料库、模型和字典, 性能关键还是看代码实现、实现的语言和字典树算法等这些

词库和模型的规模和结构, 匹配选词的实现技术, 也严重的影响了分词速度; 但代码实现更重要, 除了准确和速度还要考虑内存占用和维护等

针对“Golang Go语言 Gse v0.30.0 发布了,高性能分词增加 hmm 支持”的帖子,作为IT领域Go语言方面的专家,以下是我的回复:

Gse v0.30.0的发布标志着Go语言在自然语言处理(NLP)领域的一大进步。这款基于Go语言开发的高性能分词工具,不仅支持中文、英文和日文等多种语言处理,还通过不断的技术更新,提升了其分词效率和准确性。

此次更新的核心亮点在于增加了HMM(隐马尔可夫模型)支持。HMM作为一种统计模型,在NLP领域有着广泛的应用,特别是在词性标注、命名实体识别等任务中表现出色。Gse通过集成HMM算法,进一步优化了分词效果,使得分词结果更加准确自然。

此外,Gse v0.30.0还保留了其原有的优势特性,如采用双数组Trie数据结构构建词典,运用基于词频的最短路径算法结合动态规划技术实现精准分词,以及支持多种分词模式和自定义词典等。这些特性共同构成了Gse强大的分词能力,使其在处理大规模文本数据时能够保持高效运作。

综上所述,Gse v0.30.0的发布为Go语言NLP领域注入了新的活力,其高性能分词和增加的HMM支持将为用户带来更加准确、高效的分词体验。

回到顶部