Go 语言高效分词, 支持英文、中文、日文等 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
vway
V2EX    程序员

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

  •  
      vway
    vcaesar 2017-11-16 20:58:28 +08:00 7331 次点击
    这是一个创建于 2889 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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

    31 条回复    2017-11-17 23:37:16 +08:00
    xrlin
        1
    xrlin  
       2017-11-16 21:33:07 +08:00 via iPhone
    支持,希望 go 的生态发展得越来越好
    dobelee
        2
    dobelee  
       2017-11-16 21:36:40 +08:00 via Android
    这个和结巴比如何?
    cheneydog
        3
    cheneydog  
       2017-11-16 21:39:29 +08:00
    需要词库么?
    vway
        4
    vway  
    OP
       2017-11-17 01:22:01 +08:00
    @xrlin 感谢
    vway
        5
    vway  
    OP
       2017-11-17 01:22:27 +08:00
    @cheneydog 需要词库
    vway
        6
    vway  
    OP
       2017-11-17 01:23:39 +08:00
    @dobelee c++绑定的 gojieba? 纯 go, 性能差不多, 比 Python 版好很多
    secsilm
        7
    secsilm  
       2017-11-17 08:17:15 +08:00 via Android
    @vway 比 Python 版本好在哪?
    qsnow6
        8
    qsnow6  
       2017-11-17 09:08:25 +08:00
    @secsilm 干嘛非要比,不同环境下的工具
    picone
        9
    picone  
       2017-11-17 10:37:04 +08:00
    我就说怎么这么熟悉,简介文案都一模一样
    https://github.com/huichen/sego
    picone
        10
    picone  
       2017-11-17 10:38:17 +08:00
    麻烦楼主尊重一下别人开源,fork 一下别人的代码呗,至少也写一下出处,我看到多处代码都一样
    windyboy
        11
    windyboy  
       2017-11-17 10:48:53 +08:00
    楼主居然敢无视世界上最大的同性交友站的威力
    thinkItThrough
        12
    thinkItThrough  
       2017-11-17 10:53:59 +08:00
    wtf ?
    vway
        13
    vway  
    OP
       2017-11-17 11:16:26 +08:00 via iPhone
    @picone 请看底部
    vway
        14
    vway  
    OP
       2017-11-17 11:17:57 +08:00 via iPhone
    @picone 你有认真看介绍和 License,没看就不要乱说
    vway
        15
    vway  
    OP
       2017-11-17 11:18:18 +08:00 via iPhone
    @thinkItThrough 有病?
    vway
        16
    vway  
    OP
       2017-11-17 11:18:31 +08:00 via iPhone
    @windyboy ???
    vway
        17
    vway  
    OP
       2017-11-17 11:20:07 +08:00 via iPhone
    @picone 没写出处?
    vway
        18
    vway  
    OP
       2017-11-17 11:25:20 +08:00 via iPhone
    @picone github 和 License 中写了,你都没看项目,就不要瞎喷
    vway
        19
    vway  
    OP
       2017-11-17 11:26:03 +08:00 via iPhone
    @qsnow6 是的
    vway
        20
    vway  
    OP
       2017-11-17 11:34:18 +08:00 via iPhone
    @windyboy 没有登,,作者不维护,才开的新分支
    yangtukun1412
        21
    yangtukun1412  
       2017-11-17 12:14:41 +08:00
    为什么不直接 fork 呢...感觉这样子破坏了之前的 commit history...
    vway
        22
    vway  
    OP
       2017-11-17 14:56:31 +08:00
    @yangtukun1412 直接 fork 搜不到
    vway
        23
    vway  
    OP
       2017-11-17 14:57:10 +08:00
    @secsilm 只能说性能更好吧
    htfy96
        24
    htfy96  
       2017-11-17 15:13:51 +08:00
    感觉这种算法 /CPU 密集的程序最好做法还是提供一个 C 接口版本,然后其他语言在上面用 FFI 包装一下,这样就不会陷入重复造轮子的情况……
    wzha2008
        25
    wzha2008  
       2017-11-17 17:29:54 +08:00
    再加个 HMM ?
    vway
        26
    vway  
    OP
       2017-11-17 17:38:08 +08:00
    @htfy96 嗯, 那样更通用, 但部署会不方便
    vway
        27
    vway  
    OP
       2017-11-17 17:39:09 +08:00
    @wzha2008 感谢建议, 会列入考虑
    whyw
        28
    whyw  
       2017-11-17 22:12:41 +08:00
    , 支持
    secsilm
        29
    secsilm  
       2017-11-17 23:20:18 +08:00 via Android
    @qsnow6 怪我比了?楼主说的比 Python 好啊,我就想知道好在哪
    vway
        30
    vway  
    OP
       2017-11-17 23:36:57 +08:00
    @secsilm 我说的是性能好很多, 不好意思有歧义
    vway
        31
    vway  
    OP
       2017-11-17 23:37:16 +08:00
    @whyw , 感谢
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4335 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 04:09 PVG 12:09 LAX 21:09 JFK 00:09
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86