go-ego / gse

Go efficient multilingual NLP and text segmentation; support English, Chinese, Japanese and others.
Apache License 2.0
2.57k stars 215 forks source link

老哥,停止词典一直不生效,加了 #142

Closed ColorfulDick closed 2 years ago

ColorfulDick commented 2 years ago

package main

import ( "fmt"

"github.com/go-ego/gse"

)

var ( text = "第一次爱的人是谁演唱的" new, _ = gse.New("dict.txt")

seg gse.Segmenter

)

func main() { cut() }

func cut() { new.LoadStop("stop.txt") new.AddStop("的") new.AddStop("是") //加了这行也没用 fmt.Println("cut: ", new.Cut(text, true)) fmt.Println("cut all: ", new.CutAll(text)) fmt.Println("cut for search: ", new.CutSearch(text, true)) fmt.Println(new.String(text, true)) }

//控制台打印如下所示 //2022/02/18 17:44:34 Dict files path: [dict.txt] //2022/02/18 17:44:34 Load the gse dictionary: "dict.txt" //2022/02/18 17:44:34 Gse dictionary loaded finished. //2022/02/18 17:44:34 Load the stop word dictionary: "stop.txt" //cut: [第一次爱的人 是 谁 演唱 的] //cut all: [第一次爱的人 是 谁 演唱 的] //cut for search: [第一次爱的人 是 谁 演唱 的] //第一次爱的人/n 是/x 谁/x 演唱/v 的/x

ColorfulDick commented 2 years ago

加了AddStop,停止词也没生效呀

hengfeiyang commented 2 years ago

在分词的时候并不会直接调用是否是停止词,需要使用 seg.IsStop(string) 来自行判断是否为停止词。

一般姿势是,在分词后,使用 stop作为filter对分词后的内容进行一次过滤。

vcaesar commented 2 years ago

Closed because of non-standard. Add there have seg.Trim() and seg.Stop() function.

ColorfulDick commented 2 years ago

在分词的时候并不会直接调用是否是停止词,需要使用 seg.IsStop(string) 来自行判断是否为停止词。

一般姿势是,在分词后,使用 stop作为filter对分词后的内容进行一次过滤。

好哥哥,能在分词之前就去掉吗?如果每次分词都过滤一次,也太浪费时间了

hengfeiyang commented 2 years ago

看上面 作者回复你了 可以使用 seg.Trim() 来处理下分词结果就可以了,就拿你的例子来说。

可以这样使用:

new.Trim(new.CutSearch(text, true))

过滤后,就是不带停止词的了。

ColorfulDick commented 2 years ago

Closed because of non-standard. Add there have seg.Trim() and seg.Stop() function.

oh!THANKS!

ColorfulDick commented 2 years ago

看上面 作者回复你了 可以使用 seg.Trim() 来处理下分词结果就可以了,就拿你的例子来说。

可以这样使用:

new.Trim(new.CutSearch(text, true))

过滤后,就是不带停止词的了。

谢谢老哥