分词相关内容

1:首先需要将需要分词统计的文本保存在.txt文件中,比如word.txt,如下

 

2:分词过程需要用一个分词字典,字典中有所有分词的词组,比如中国,美国,中美等。

分词字典使用的现成的网络库,github.com/huichen/sego/data/dictionary.txt,代码运行阶段会把分词文件加载到内存中。

然后会通过分词字典,把待分词的文本,分解成n个词组。分词有两种输出模式,以"中华人民共和国"为例

普通模式(searchMode=false)输出一个分词"[中华人民共和国]"

,索模式(searchMode=true) 输出普通模式的再细致切分:"[中华 人民 共和 共和国 人民共和国 中华人民共和国]”,搜索模式主要用于给搜索引擎提供尽可能多的关键字,本次使用的是搜索模式。output := sego.SegmentsToSlice(segments, true)

true参数代表搜索,false代表普通,

分好的词或存放在一个切片里,通过遍历切片,写入到map里,memory := make(map[string]int, 10000)

key是分词,value是出现的次数,比如map[“你好”]

=10,代表你好出现10次。统计好后根据频次进行排序。

PariList实现了sort接口,可以使用sort.Sort对其排序

type PairList []Pair

func (p PairList) Swap(i, j int)      { p[i], p[j] = p[j], p[i] }

func (p PairList) Len() int           { return len(p) }

func (p PairList) Less(i, j int) bool { return p[j].Value < p[i].Value } // 逆序

最终可以通过运行命令执行程序,go run ./main.go test4.txt | head -n 20000>detail.txt

test4.txt 代表分词文件,head -n 20000代表只获取前20000行,>detail.txt表示结果会写入到detail.txt文件中。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值