Golang Go语言中分词完成得到切片,如何快速的通过停用词表剔除多余的词
求个高效的方法。
Golang Go语言中分词完成得到切片,如何快速的通过停用词表剔除多余的词
4 回复
分词 n 个,停用词 m 个,复杂度就 On。分完的每个词你得最少扫描一遍吧。停用词用 hashset 保存,foreach 迭代分完的词。
更多关于Golang Go语言中分词完成得到切片,如何快速的通过停用词表剔除多余的词的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
分词不会太麻烦吗
那也没办法呀,要统计热点。
在Golang中,通过分词得到切片后,想要快速通过停用词表剔除多余的词,可以遵循以下步骤:
-
准备停用词表:首先,你需要一个停用词表,这通常是一个包含所有需要剔除词汇的切片(
[]string
)。你可以从文件加载这个表,或者硬编码在程序中。 -
使用map优化查找:为了提高查找效率,将停用词表转换为一个map(
map[string]struct{}
),因为map在Go中的查找操作是O(1)时间复杂度。这里使用struct{}
作为map的值类型,因为只关心键(停用词)是否存在,不关心其值。 -
遍历分词切片并过滤:接下来,遍历分词得到的切片,对于每个词,检查它是否存在于停用词map中。如果不存在,则保留该词;否则,剔除。
-
构建结果切片:将保留的词添加到新的切片中,这个切片就是剔除停用词后的结果。
示例代码片段:
stopWordsMap := make(map[string]struct{})
// 填充stopWordsMap,例如从文件读取停用词
words := []string{"这是", "一个", "例子", "中", "的", "词"} // 分词结果
filteredWords := []string{}
for _, word := range words {
if _, found := stopWordsMap[word]; !found {
filteredWords = append(filteredWords, word)
}
}
// filteredWords即为剔除停用词后的结果
这种方法结合了map的高效查找和切片的灵活性,能有效剔除分词结果中的停用词。