Go 语言高效分词, 支持英文、中文、日文等
词典用双数组 trie ( Double-Array Trie )实现, 分词器算法为基于词频的最短路径加动态规划。
支持普通和搜索引擎两种分词模式,支持用户词典、词性标注,可运行 JSON RPC 服务。
分词速度单线程 9MB/s,goroutines 并发 42MB/s ( 8 核 Macbook Pro )。
go get -u github.com/go-ego/gse
go get -u github.com/go-ego/re
To create a new gse application
$ re gse my-gse
To run the application we just created, you can navigate to the application folder and execute:
$ cd my-gse && re run
package main import ( "fmt" "github.com/go-ego/gse" ) func main() { // 载入词典 var segmenter gse.Segmenter segmenter.LoadDict() // segmenter.LoadDict("your gopath"+"/src/github.com/go-ego/gse/data/dict/dictionary.txt") // 分词 text := []byte("中华人民共和国中央人民政府") segments := segmenter.Segment(text) // 处理分词结果 // 支持普通模式和搜索模式两种分词,见代码中 ToString 函数的注释。 fmt.Println(gse.ToString(segments, false)) text1 := []byte("深圳地王大厦") segments1 := seg.Segment([]byte(text1)) fmt.Println(gse.ToString(segments1, false)) }
![]() | 1 xrlin 2017-11-16 21:33:07 +08:00 via iPhone 支持,希望 go 的生态发展得越来越好 |
2 dobelee 2017-11-16 21:36:40 +08:00 via Android 这个和结巴比如何? |
![]() | 3 cheneydog 2017-11-16 21:39:29 +08:00 需要词库么? |
![]() | 9 picone 2017-11-17 10:37:04 +08:00 我就说怎么这么熟悉,简介文案都一模一样 https://github.com/huichen/sego |
![]() | 10 picone 2017-11-17 10:38:17 +08:00 麻烦楼主尊重一下别人开源,fork 一下别人的代码呗,至少也写一下出处,我看到多处代码都一样 |
![]() | 11 windyboy 2017-11-17 10:48:53 +08:00 楼主居然敢无视世界上最大的同性交友站的威力 |
12 thinkItThrough 2017-11-17 10:53:59 +08:00 wtf ? |
![]() | 15 vway OP @thinkItThrough 有病? |
21 yangtukun1412 2017-11-17 12:14:41 +08:00 为什么不直接 fork 呢...感觉这样子破坏了之前的 commit history... |
![]() | 22 vway OP @yangtukun1412 直接 fork 搜不到 |
![]() | 24 htfy96 2017-11-17 15:13:51 +08:00 感觉这种算法 /CPU 密集的程序最好做法还是提供一个 C 接口版本,然后其他语言在上面用 FFI 包装一下,这样就不会陷入重复造轮子的情况…… |
![]() | 25 wzha2008 2017-11-17 17:29:54 +08:00 再加个 HMM ? |
28 whyw 2017-11-17 22:12:41 +08:00 , 支持 |