2019-04-22 02:59:20 +00:00

3.7 KiB
Raw Permalink Blame History

gse

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

CircleCI Status codecov Build Status Go Report Card GoDoc Release Join the chat at https://gitter.im/go-ego/ego

词典用双数组 trieDouble-Array Trie实现 分词器算法为基于词频的最短路径加动态规划。

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

分词速度单线程 9MB/sgoroutines 并发 42MB/s8核 Macbook Pro

QQ 群: 120563750

安装/更新

go get -u github.com/go-ego/gse

Build-tools

go get -u github.com/go-ego/re 

re gse

创建一个新的 gse 程序

$ re gse my-gse

re run

运行我们刚刚创建的应用程序, CD 到程序文件夹并执行:

$ cd my-gse && re run

使用

package main

import (
	"fmt"

	"github.com/go-ego/gse"
)

func main() {
	// 载入词典
	var seg gse.Segmenter
	// 加载默认字典
	seg.LoadDict()
	// seg.LoadDict("your gopath"+"/src/github.com/go-ego/gse/data/dict/dictionary.txt")

	// 分词
	text := []byte("中华人民共和国中央人民政府")
	fmt.Println(seg.String(text, true)) 

	segments := seg.Segment(text)
  
	// 处理分词结果
	// 支持普通模式和搜索模式两种分词,见代码中 ToString 函数的注释。
	// 搜索模式主要用于给搜索引擎提供尽可能多的关键字
	fmt.Println(gse.ToString(segments)) 

	text1 := []byte("深圳地标建筑, 深圳地王大厦")
	segments1 := seg.Segment([]byte(text1))
	fmt.Println(gse.ToString(segments1, true)) 
}

自定义词典分词示例


package main

import (
	"fmt"

	"github.com/go-ego/gse"
)

func main() {
	var seg gse.Segmenter
	seg.LoadDict("zh,testdata/test_dict.txt,testdata/test_dict1.txt")

	text1 := []byte("所以, 你好, 再见")

	segments := seg.Segment(text1)
	fmt.Println(gse.ToString(segments))
}

中文分词示例

日文分词示例

License

Gse is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0), base on sego.