golang贝叶斯算法训练敏感词过滤

cao-guang · · 1387 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

承接上次汉字转拼音的思路于是打算用贝叶斯来解决,结果发现python都有,但是golang没有贝叶斯算法于是给安排上。

    源码地址

1、添加引用

import(
"github.com/cao-guang/bayes"
)

2、示例

func main()  {
        //准备训练样本数据,这里就准备了3组,训练样本数据越多,效果你懂的
        aa := []string{"狗b", "我艹", "愚蠢", "装你大爷", "五毛们"}
       bb := []string{"法L功", "sb", "杀b", "你吗b", "你妈的", "五毛们", "愚蠢"}
       cc := []string{"爱国", "奉献", "勤劳", "努力", "奋斗", "汗水"}
       classVec := []int{1, 1, 0} // 1 代表敏感词 0 代表正常类词汇
       //考虑到数据来源的多样性,需要加载样本数据返回需要的格式
       docs, docClass := bayes.LoadDataNB(classVec, aa, bb, cc)
        myVocabList := bayes.CreateUnionList(aa, bb, cc) //求样本数据并集
        //对得到的并集样本数据进行向量化 ps:这里就不进一步封装了,便于大家理解
        trainDB := [][]int{}
        for _, v := range docs {
            trainDB = append(trainDB, bayes.Set2Vec(myVocabList, v))
        }
        p0V, p1V, pAb := bayes.MultinomialNB(trainDB, docClass) //贝叶斯算法计算概率
        test1 := []string{"装你大爷"}
        Doc1 := bayes.Set2Vec(myVocabList, test1)
        result_1 := bayes.ClassNB(Doc1, p0V, p1V, pAb)
        fmt.Println("训练结果:", result_1)
        test2 := []string{"爱国", "奉献"}
        Doc2 := bayes.Set2Vec(myVocabList, test2)      //得到需要训练的词的向量
        result_2 := bayes.ClassNB(Doc2, p0V, p1V, pAb) //分类器分类
        fmt.Println("训练结果:", result_2)
}

参考:

golang汉字转拼音

机器学习之朴素贝叶斯(NB)分类算法与Python实现

NLP系列(2)_用朴素贝叶斯进行文本分类(上)


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1387 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传