Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 从切片中删除字符串中包含单词的所有单词_String_Go_Slice - Fatal编程技术网

String 从切片中删除字符串中包含单词的所有单词

String 从切片中删除字符串中包含单词的所有单词,string,go,slice,String,Go,Slice,我正在尝试进行主题提取,我要做的是从字符串中删除所有辅助词,我的伪代码是: topic := make(map[string]int) auxiliaryWord := []string{"hbs", "habis", "dan", "kapan", "bagaimana", "kita", "kamu", "warga", "pada", "paling", "ga", "gak", "enggak", "tidak", "bukan", "usai", "juga", "yg", "yang

我正在尝试进行主题提取,我要做的是从字符串中删除所有辅助词,我的伪代码是:

topic := make(map[string]int)
auxiliaryWord := []string{"hbs", "habis", "dan", "kapan", "bagaimana", "kita", "kamu", "warga", "pada", "paling", "ga", "gak", "enggak", "tidak", "bukan", "usai", "juga", "yg", "yang", "kpd", "kepada", "nya", "adanya", "jd", "jadi", "sih", "lah", "kan", "photo", "from", "by", "ini", "saja", "utk", "untuk", "lebih", "ternyata", "apa", "sok", "tau", "bagi", "eksis", "keluar", "kk", "kakak"}
for chat := range chats {
    arrWord := chat.Split(chat, " ")
    for word := arrWord {
        if word not in auxiliaryWord {
            if topic[word] not exist {
                topic[word] = 1
            } else {
                topic[word]+= 1
            }
        }
    }
}

我的问题是,有没有更快的方法呢?

只需预先计算要散列的辅助词,然后进行查找

主程序包
进口(
“fmt”
“字符串”
)
var辅助词=[]字符串{“hbs”、“habis”、“dan”、“kapan”、“bagaimana”、“kita”、“kamu”、“warga”、“pada”、“paling”、“ga”、“gak”、“enggak”、“tidak”、“bukan”、“usai”、“juga”、“yg”、“yang”、“kpd”、“kepada”、“nya”、“adanya”、“jd”、“jadi”、“sih”、“lah”、“kan”、“photo”、“from”、“by”、“ini”、“saja”、“utk”、“untuk”、“lebih”、“ternyata”、“apa”、“sok”,“tau”、“bagi”、“eksis”、“keluar”、“kk”、“kakak”}
var auxHash=map[string]bool{}
func CountTopics(聊天词[]字符串)映射[string]int{
结果:=map[string]int{}
对于u,word:=范围词{
如果!奥克斯哈什[单词]{
结果[字]+=1
}
}
返回结果
}
func init(){
对于u,字:=范围辅助字{
奥克斯哈什[字]=真
}
}
func main(){
arrWord:=strings.Split(`hai kakakak habis makan apa`,“”)
fmt.Println(计数主题(arrWord))
}

您可以使用
映射
,而不是
切片
,来保存
辅助词
为什么
主题
映射[string]int
?大型
映射[string]接口{}
映射性能变差,因为
字符串
转义到堆(因为它们包含指针)。您应该对其进行基准测试,但使用
[]字符串
可能会更快地进行查找。@minitauros我需要计算(int)聊天室中提到的主题(字符串)的数量。我想在大多数情况下,这只会是次要的,如果您想微调内容,只需考虑一下:)您可以使用[string]的单个映射int,测试是否存在并增加