golang goscws中文分词

jmrs · 2018-07-19 20:40:32 · 1712 次点击 · 预计阅读时间 2 分钟 · 大约8小时之前 开始浏览    
这是一个创建于 2018-07-19 20:40:32 的文章,其中的信息可能已经有所发展或是发生改变。

golang goscws中文分词

scws是一个很好的中文分词库,由于项目中用到scws分词但go语言没有很好用的绑定,于是就自己 写了goscws,并且他支持协程分词。

例子:

根据 SendText 设定的文本内容,返回一系列切好的词汇

    gs := goscws.NewScws()
    gs.SetCharset("utf8")
    err := gs.SetDict("/usr/local/scws/etc/dict.utf8.xdb", goscws.SCWS_XDICT_MEM)
    if err != nil {
        log.Println(err)
    }
    err = gs.SetRule("/usr/local/scws/etc/rules.utf8.ini")
    if err != nil {
        log.Println(err)
    }
    err = gs.SetIgnore(0)
    if err != nil {
        log.Println(err)
    }
    text := []byte(`陈凯歌并不是《无极》的唯一著作权人,一部电影的整体版权归电影制片厂所有。`)
    gs.SendText(text, len(text))
    for  res := gs.GetResult(); res != nil;  res = gs.GetResult() {
            log.Println(string(res.Word), res.Idf, string(res.Attr))
    }
    gs.DeleteScws()

根据 SendText 设定的文本内容,返回系统计算出来的最关键词汇列表

    gs := goscws.NewScws()
    gs.SetCharset("utf8")
    err := gs.SetDict("/usr/local/scws/etc/dict.utf8.xdb", goscws.SCWS_XDICT_MEM)
    if err != nil {
        log.Println(err)
    }
    err = gs.SetRule("/usr/local/scws/etc/rules.utf8.ini")
    if err != nil {
        log.Println(err)
    }
    err = gs.SetIgnore(0)
    if err != nil {
        log.Println(err)
    }
    text := []byte(`陈凯歌并不是《无极》的唯一著作权人,一部电影的整体版权归电影制片厂所有。`)
    gs.SendText(text, len(text))
    for res := gs.GetTops(); res != nil; res = gs.GetTops() {
        log.Println(string(res.Word), res.Weight, res.Times,
            string(res.Attr))
    }
    gs.DeleteScws()

根据SendText 设定的文本内容,返回系统中词性符合要求的关键词汇

gs := goscws.NewScws()
    gs.SetCharset("utf8")
    err := gs.SetDict("/usr/local/scws/etc/dict.utf8.xdb", goscws.SCWS_XDICT_MEM)
    if err != nil {
        log.Println(err)
    }
    err = gs.SetRule("/usr/local/scws/etc/rules.utf8.ini")
    if err != nil {
        log.Println(err)
    }
    err = gs.SetIgnore(0)
    if err != nil {
        log.Println(err)
    }
    text := []byte(`陈凯歌并不是《无极》的唯一著作权人,一部电影的整体版权归电影制片厂所有。`)
    gs.SendText(text, len(text))
    for res := gs.GetWords([]byte("n")); res != nil; res = gs.GetWords(
        []byte("n")) {
        log.Println(string(res.Word), res.Weight, res.Times,
            string(res.Attr))
    }
    gs.DeleteScws()

License MIT

最后喜欢的同学请给个start支持,不喜欢的也给个start表示表示????


有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1712 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传