开源的GSE golang的高效分词库,支持英文、中文、日文等

Golang 归档:201901
普通
浏览:4289
2019-01-24 14:29:39
Go efficient text segmentation; support english, chinese, japanese and other

开源项目地址

https://github.com/go-ego/gse

信息

GSE
词典用双数组 trie(Double-Array Trie)实现, 分词器算法为基于词频的最短路径加动态规划。
支持 HMM 分词, 使用 viterbi 算法.
支持普通和搜索引擎两种分词模式,支持用户词典、词性标注,可运行 JSON RPC 服务。
分词速度单线程 9MB/s,goroutines 并发 42MB/s(8核 Macbook Pro)。
QQ 群: 120563750

安装/更新

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

开始一个新程序

$ re gse my-gse

运行

$ 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 := "你好世界, Hello world."

    hmm := seg.Cut(text, true)
    fmt.Println("hmm cut: ", hmm)

    hmm = seg.CutSearch(text, true)
    fmt.Println("hmm cut: ", hmm)

    hmm = seg.CutAll(text)
    fmt.Println("cut all: ", hmm)

    // 分词文本
    tb: = []byte("山达尔星联邦共和国联邦政府")

    // 处理分词结果
    // 支持普通模式和搜索模式两种分词,见代码中 ToString 函数的注释。
    // 搜索模式主要用于给搜索引擎提供尽可能多的关键字
    fmt.Println("输出分词结果, 类型为字符串, 使用搜索模式: ", seg.String(tb, true))
    fmt.Println("输出分词结果, 类型为 slice: ", seg.Slice(tb))

    segments := seg.Segment(tb)
    // 处理分词结果
    fmt.Println(gse.ToString(segments))

    text1 := []byte("深圳地标建筑, 深圳地王大厦")
    segments1 := seg.Segment([]byte(text1))
    fmt.Println(gse.ToString(segments1, true))
}
注意事项
  • 此文章对你有帮助,对作者表示感谢(微信):
  • 本文地址:https://22v.net/article/3231/
  • 转载本文时,请注明转载自“SamBlog”的字样。
  • 如此文章有损您的合法权益,请使用页面底部的邮箱与我取得联系。
分类目录
文章归档
友情站点