dousi1961 2019-07-11 07:59
浏览 143
已采纳

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

i'm trying to make a topic extraction, what i do is remove all auxiliary word from string, my pseudo-code is :

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
            }
        }
    }
}

my question is, is there any faster way to do this ?

  • 写回答

1条回答 默认 最新

  • donglu1971 2019-07-11 09:43
    关注

    Just precalculate auxilaryWord to hash, then do a lookup.

    package main
    
    import (
        "fmt"
        "strings"
    )
    
    var auxilaryWords = []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"}
    var auxHash = map[string]bool{}
    
    func CountTopics(chatWords []string) map[string]int {
        result := map[string]int{}
        for _, word := range chatWords {
            if !auxHash[word] {
                result[word] += 1
            }
        }
        return result
    }
    
    func init() {
        for _, word := range auxilaryWords {
            auxHash[word] = true
        }
    }
    
    func main() {
        arrWord := strings.Split(`hai kakak habis makan apa`, " ")
        fmt.Println(CountTopics(arrWord))   
    }
    

    https://play.golang.org/p/Wr2gK_zizL0

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站