golang实现中文分词,scws,jieba

一、scws

1、安装 scws

官网以及文档
https://github.com/hightman/scws

wget -q -O - http://www.xunsearch.com/scws/down/scws-1.2.3.tar.bz2 | tar xjf -

cd scws-1.2.3
./configure --prefix=/usr/local/scws --enable-shared
make && make install

Libraries have been installed in: /usr/local/scws/lib

cli客户端
/usr/local/scws/bin/scws -hwget 下载并解压词典,或从主页下载然后自行解压再将 *.xdb 放入 /usr/local/scws/etc 目录中。
cd /usr/local/scws/etc
wget http://www.xunsearch.com/scws/down/scws-dict-chs-utf8.tar.bz2
wget http://www.xunsearch.com/scws/down/scws-dict-chs-gbk.tar.bz2
tar xjf scws-dict-chs-utf8.tar.bz2
tar xjf scws-dict-chs-gbk.tar.bz2
2、golang调用scws

go get github.com/jk0011/goscws

package main

import (
	"log"

	"github.com/jk0011/goscws"
)

func main() {
	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()
}

go run goscws.go

报错:error while loading shared libraries: libscws.so.1: cannot open shared object file: No such file or directory
解决:cp /usr/local/scws/lib/*scws* /usr/lib/

> go run goscws.go

2023/10/12 11:47:46 陈凯歌 11.87 nr
2023/10/12 11:47:46 并 0 c
2023/10/12 11:47:46 不是 4.74 v
2023/10/12 11:47:46 《 0 un
2023/10/12 11:47:46 无极 10.02 ns
2023/10/12 11:47:46 》 0 un
2023/10/12 11:47:46 的 0 uj
2023/10/12 11:47:46 唯一 4.9 b
2023/10/12 11:47:46 著作权人 6.07 n
2023/10/12 11:47:46 , 0 un
2023/10/12 11:47:46 一 0 m
2023/10/12 11:47:46 部 0 n
2023/10/12 11:47:46 电影 4.17 n
2023/10/12 11:47:46 的 0 uj
2023/10/12 11:47:46 整体 4.93 n
2023/10/12 11:47:46 版权 4.92 n
2023/10/12 11:47:46 归 0 v
2023/10/12 11:47:46 电影 4.17 n
2023/10/12 11:47:46 制片厂 8.38 n
2023/10/12 11:47:46 所有 4.72 v
2023/10/12 11:47:46 。 0 un

2、jieba

主要是两个库
github.com/yanyiwu/gojieba
github.com/wangbin/jiebago

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(Golang)是一种开源的编程语言,它具有简洁、高效和并发性强的特点。在Go语言中,函数是一等公民,可以像其他类型的值一样进行传递和操作。 下面是介绍Golang实现函数的几个关键点: 1. 函数定义:使用关键字`func`来定义函数,语法如下: ``` func 函数名(参数列表) 返回值列表 { // 函数体 } ``` 例如,定义一个计算两个整数之和的函数: ``` func add(a, b int) int { return a + b } ``` 2. 函数参数:函数可以接受零个或多个参数,参数之间用逗号分隔。参数可以指定类型,例如`a, b int`表示两个整数类型的参数。如果多个参数的类型相同,可以只在最后一个参数后面指定类型。 例如,定义一个计算两个整数之差的函数: ``` func subtract(a, b int) int { return a - b } ``` 3. 函数返回值:函数可以返回一个或多个值。返回值列表放在函数名后面的括号中,并指定返回值的类型。如果函数没有返回值,可以省略返回值列表。 例如,定义一个计算两个整数之积和商的函数: ``` func multiplyAndDivide(a, b int) (int, float64) { return a * b, float64(a) / float64(b) } ``` 4. 匿名函数:在Go语言中,可以使用匿名函数,即没有函数名的函数。匿名函数可以直接赋值给变量,也可以作为参数传递给其他函数。 例如,定义一个匿名函数并将其赋值给变量: ``` add := func(a, b int) int { return a + b } ``` 5. 函数作为参数和返回值:在Go语言中,函数可以作为参数传递给其他函数,也可以作为函数的返回值。 例如,定义一个接受函数作为参数的函数: ``` func operate(a, b int, operation func(int, int) int) int { return operation(a, b) } ``` 以上是Golang实现函数的基本介绍。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值