【发布时间】:2019-11-20 21:13:19
【问题描述】:
我正在尝试进行主题提取,我所做的是从字符串中删除所有辅助词,我的伪代码是:
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
}
}
}
}
我的问题是,有没有更快的方法来做到这一点?
【问题讨论】:
-
您可以使用
map,而不是slice,来保存auxiliaryWord -
为什么
topic是map[string]int?大型map[string]interface{}映射的性能降低,因为strings 逃逸到堆中(因为它们包含指针)。您应该对其进行基准测试,但使用[]string进行查找可能会更快。 -
@minitauros 我需要计算(int)聊天中提到的主题(字符串)有多少
-
是的,我想在大多数情况下它只会是次要的,如果你想微调一些东西就需要考虑一下 :)