分享
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
承接上次汉字转拼音的思路于是打算用贝叶斯来解决,结果发现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)
}
参考:
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信1956 次点击
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
承接上次汉字转拼音的思路于是打算用贝叶斯来解决,结果发现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)
}
参考: