长沙网站开发哪家好,想做运营怎么入手,在PC上安装WordPress,网页加速器安卓fasttext的基本使用 java 、python为例子 今天早上在地铁上看到知乎上看到有人使用fasttext进行文本分类#xff0c;到公司试了下情况在GitHub上找了下#xff0c;最开始是c版本的实现#xff0c;不过有Java、Python版本的实现了#xff0c;正好拿下来试试手#xff0c; p… fasttext的基本使用 java 、python为例子 今天早上在地铁上看到知乎上看到有人使用fasttext进行文本分类到公司试了下情况在GitHub上找了下最开始是c版本的实现不过有Java、Python版本的实现了正好拿下来试试手 python情况: python版本参考,作者提供了详细的实现并且提供了中文分词之后的数据正好拿下来用用感谢作者代码提供的数据作者都提供了点后链接在上面有百度盘可下载java接口用到的数据也一样: [html] view plaincopy http://blog.csdn.net/lxg0807/article/details/52960072 [python] view plaincopy import logging import fasttext logging.basicConfig(format%(asctime)s : %(levelname)s : %(message)s, levellogging.INFO) #classifier fasttext.supervised(fasttext/news_fasttext_train.txt,fasttext/news_fasttext.model,label_prefix__label__) #load训练好的模型 classifier fasttext.load_model(fasttext/news_fasttext.model.bin, label_prefix__label__) result classifier.test(fasttext/news_fasttext_test.txt) print(result.precision) print(result.recall) labels_right [] texts [] with open(fasttext/news_fasttext_test.txt) as fr: lines fr.readlines() for line in lines: labels_right.append(line.split(\t)[1].rstrip().replace(__label__,)) texts.append(line.split(\t)[0]) # print labels # print texts # break labels_predict [e[0] for e in classifier.predict(texts)] #预测输出结果为二维形式 # print labels_predict text_labels list(set(labels_right)) text_predict_labels list(set(labels_predict)) print(text_predict_labels) print(text_labels) A dict.fromkeys(text_labels,0) #预测正确的各个类的数目 B dict.fromkeys(text_labels,0) #测试数据集中各个类的数目 C dict.fromkeys(text_predict_labels,0) #预测结果中各个类的数目 for i in range(0,len(labels_right)): B[labels_right[i]] 1 C[labels_predict[i]] 1 if labels_right[i] labels_predict[i]: A[labels_right[i]] 1 print(A ) print(B) print( C) #计算准确率召回率F值 for key in B: p float(A[key]) / float(B[key]) r float(A[key]) / float(C[key]) f p * r * 2 / (p r) print (%s:\tp:%f\t%fr:\t%f % (key,p,r,f)) java版本情况 githup上下载地址 [html] view plaincopy https://github.com/ivanhk/fastText_java 看了下sh脚本的使用方法自己简单些了个text的方法正好用用后面会拿xgboost进行对比看看效果效果可以的写成service进行上线: [java] view plaincopy package test; import java.util.List; import fasttext.FastText; import fasttext.Main; import fasttext.Pair; public class Test { public static void main(String[] args) throws Exception { String[] text { supervised, -input, /Users/shuubiasahi/Documents/python/fasttext/news_fasttext_train.txt, -output, /Users/shuubiasahi/Documents/faste.model, -dim, 10, -lr, 0.1, -wordNgrams, 2, -minCount, 1, -bucket, 10000000, -epoch, 5, -thread, 4 }; Main op new Main(); op.train(text); FastText fasttext new FastText(); String[] test { 就读, 科技, 学生 ,学生,学生}; fasttext.loadModel(/Users/shuubiasahi/Documents/faste.model.bin); ListPairFloat, String list fasttext.predict(test, 6); //得到最大可能的六个预测概率 for (PairFloat, String parir : list) { System.out.println(key is: parir.getKey() value is: parir.getValue()); } System.out.println(Math.exp(list.get(0).getKey())); //得到最大预测概率 } } 这里设置bucket不适用设置过大过大会产生OOM而且模型保存太大上面的设置模型保存就有1个g-wordNgrams可以设置为2比设置为1能提高模型分类的准确性 结果情况: key is:0.0 value is:__label__edu key is:-17.75125 value is:__label__affairs key is:-17.75125 value is:__label__economic key is:-17.75125 value is:__label__ent key is:-17.75125 value is:__label__fashion key is:-17.75125 value is:__label__game 1.0 注意fasttext对输入格式有要求label标签使用 “__label__”实际标签的形式 over 有问题联系我 2016年5月26 我的模型已经上线了 效果还不错