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

veni · 2017年11月16日 · 最后由 veni 回复于 2017年11月17日 · 839 次阅读

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

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

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

分词速度单线程 9MB/s,goroutines 并发 42MB/s(8 核 Macbook Pro)。

安装/更新

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

Build-tools

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

re gse

To create a new gse application

$ re gse my-gse

re run

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)) 
}

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

更多原创文章干货分享,请关注公众号
  • 加微信实战群请加微信(注明:实战群):gocnio

如何自定义字典以及字典的定义规则是怎样的?想自定义一些词汇。

词典的格式为(每个分词一行): 分词文本 频率 词性

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册