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
👍, 支持
|