V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
vway
V2EX  ›  Go 编程语言

Gse v0.30.0 发布了, Go 高性能分词, 增加 hmm 支持

  •  
  •   vway ·
    vcaesar · 2019-01-24 07:51:51 +08:00 · 5473 次点击
    这是一个创建于 2137 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    词典用双数组 trie ( Double-Array Trie )实现, 分词器算法为基于词频的最短路径加动态规划。v0.30.0 版本主要新增了 DAG 和 HMM (Viterbi) 算法分词, 新增 API 基本和结巴分词保持一致.

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

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

    package main
    
    import (
        "fmt"
    
        "github.com/go-ego/gse"
    )
    
    func main() {
        var seg gse.Segmenter
        seg.LoadDict()
    
        text1 := "你好世界, Hello world"
        fmt.Println(seg.Cut(text1, true))
    }
    

    Rhine River

    Add

    • [NEW] Add HMM cut support
    • [NEW] Add go mod support and remove dep files
    • [NEW] Add find word in dictionary func
    • [NEW] Add Cut(), CutAll(), CutSearch(), LoadModel(), HMMCut() func
    • [NEW] Add hmm cut test code
    • [NEW] Add hmm cut example code

    Update

    • [NEW] Cutting the dict method, move load dictionary to dict_util.go
    • [NEW] Update example and Add more test
    • [NEW] Update and clean utils code
    • [NEW] Simplify test code, add equal benchmark code
    • [NEW] Update pkg cedar code
    • [NEW] Update code style
    • [NEW] Update README.md [ Format README.mdand Update example ]

    Fix

    • [FIX] Fixed and clean issue template
    • [FIX] Update README.md [ update and fixed example ]

    See Commits for more details, after Oct 9.

    16 条回复    2019-01-25 01:35:55 +08:00
    yanaraika
        1
    yanaraika  
       2019-01-24 07:56:48 +08:00 via Android
    其实一直不懂为啥中文分词库一直停留在 hmm 的 level 能不能来个这几年的研究结果和 hmm 性能比较
    vway
        2
    vway  
    OP
       2019-01-24 08:09:57 +08:00
    @yanaraika 刚实现对 hmm 的支持, 后面对比其他库和优化, 应该比起其他库, 性能不会低
    vway
        3
    vway  
    OP
       2019-01-24 08:44:09 +08:00
    @yanaraika 还提供了最短路径、动态规划和 DAG 分词
    wbrobot
        4
    wbrobot  
       2019-01-24 09:13:30 +08:00
    和 sego 谁抄谁?
    vway
        5
    vway  
    OP
       2019-01-24 09:45:48 +08:00
    @wbrobot 总有有些人不看项目的 License, 一部分基于 sego ( 当时 2 年没维护了, 功能不完善有 BUG, 才开的新项目 ), 你可以说抄了 Python 的 jieba
    wbrobot
        6
    wbrobot  
       2019-01-24 10:01:10 +08:00
    那就来个 readme 找不同。。。
    https://github.com/huichen/sego
    https://github.com/go-ego/gse/blob/master/README_zh.md

    奇怪,用代码就用代码,连测试都不自己跑一下,数据直接用人家的?
    vway
        7
    vway  
    OP
       2019-01-24 10:04:22 +08:00
    @wbrobot 你有看代码和 License 吗? soldier, 请搞清楚数据是 jieba 分词, sego 的也是
    vway
        8
    vway  
    OP
       2019-01-24 10:09:40 +08:00
    @wbrobot 有什么奇怪的? 你说的那个 readme 的数字, 有很多功能要实现, 还没更新 readme, 还以为你说的的字典数据呢
    iRiven
        9
    iRiven  
       2019-01-24 10:14:29 +08:00 via Android
    已 star
    vway
        10
    vway  
    OP
       2019-01-24 10:20:49 +08:00
    @iRiven 感谢, 🤝
    lyc1116
        11
    lyc1116  
       2019-01-24 13:15:53 +08:00
    @yanaraika 算法从 HMM,CRF 到深度神经网络,切分的查准和召回率都有小幅提升。但是对分词器切分性能影响最大的还是要有一份好的语料或者词典。
    yanaraika
        12
    yanaraika  
       2019-01-24 14:58:48 +08:00
    @lyc1116 不知道有没有人用词嵌入之类的技术做分词,现在的分词器遇到新词就歇菜了,需要频繁维护 dict 相当麻烦
    ensonmj
        13
    ensonmj  
       2019-01-24 15:19:04 +08:00
    @yanaraika 词嵌入的前提不就是分词?感觉想鸡生蛋的问题啊
    vway
        14
    vway  
    OP
       2019-01-24 23:08:27 +08:00
    @yanaraika
    @ensonmj 是的, 目前的算法要完全解决新词, 只能维护模型和字典
    vway
        15
    vway  
    OP
       2019-01-24 23:14:20 +08:00
    @lyc1116 语料库、模型和词典主要影响新词和准确度, 要完全准确, 只能更新模型和字典; jieba 用的 hmm, pkuseg 是 CRF , 算法都差不多; 准确度看语料库、模型和字典, 性能关键还是看代码实现、实现的语言和字典树算法等这些
    vway
        16
    vway  
    OP
       2019-01-25 01:35:55 +08:00
    @lyc1116 词库和模型的规模和结构, 匹配选词的实现技术, 也严重的影响了分词速度; 但代码实现更重要, 除了准确和速度还要考虑内存占用和维护等
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2570 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 04:36 · PVG 12:36 · LAX 20:36 · JFK 23:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.