fasttext的基本使用 java 、python为例子
fasttext的基本使用 java 、python为例子
今天早上在地铁上看到知乎上看到有人使用fasttext进行文本分类,到公司试了下情况在GitHub上找了下,最开始是c++版本的实现,不过有Java、Python版本的实现了,正好拿下来试试手,
python情况:
python版本参考,作者提供了详细的实现,并且提供了中文分词之后的数据,正好拿下来用用,感谢作者,代码提供的数据作者都提供了,点后链接在上面有百度盘,可下载,java接口用到的数据也一样:
- http://blog.csdn.net/lxg0807/article/details/52960072
- import logging
- import fasttext
- logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.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版本情况:
- https://github.com/ivanhk/fastText_java
- 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");
- List<Pair<Float, String>> list = fasttext.predict(test, 6); //得到最大可能的六个预测概率
- for (Pair<Float, String> parir : list) {
- System.out.println("key is:" + parir.getKey() + " value is:"
- + parir.getValue());
- }
- System.out.println(Math.exp(list.get(0).getKey())); //得到最大预测概率
- }
- }
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 我的模型已经上线了 效果还不错
fasttext的基本使用 java 、python为例子的更多相关文章
- 梯度迭代树(GBDT)算法原理及Spark MLlib调用实例(Scala/Java/python)
梯度迭代树(GBDT)算法原理及Spark MLlib调用实例(Scala/Java/python) http://blog.csdn.net/liulingyuan6/article/details ...
- 编程开发(C/C++&Java&Python&JavaScript&Go&PHP&Ruby&Perl&R&Erlang)
使用Docker快速部署主流编程语言的开发.编译环境及其常用框架,包括C.C++.Java.Python.JavaScript.Go.PHP.Ruby.Perl.R.Erlang等. 在今后采用编程语 ...
- (八)map,filter,flatMap算子-Java&Python版Spark
map,filter,flatMap算子 视频教程: 1.优酷 2.YouTube 1.map map是将源JavaRDD的一个一个元素的传入call方法,并经过算法后一个一个的返回从而生成一个新的J ...
- 芒果TV招聘研发工程师(JAVA PYTHON),地点长沙
长沙芒果TV招聘高级 JAVA Python 工程师,工作地点:湖南广电 有兴趣的邮件0xmalloc@gmail.com; zealotyin@qq.com 公司有一大批从北京上海一线互联网企业 ...
- paip.提高效率---集合的存取括号方式 uapi java python php js 的实现比较
paip.提高效率---集合的存取括号方式 uapi java python php js 的实现比较 ##java ----------- 在JDK1.7中,摒弃了Java集合接口的实现类,如:Ar ...
- paip.复制文件 文件操作 api的设计uapi java python php 最佳实践
paip.复制文件 文件操作 api的设计uapi java python php 最佳实践 =====uapi copy() =====java的无,要自己写... ====php copy ...
- paip.获取文件名从路径uapi java python php总结...
paip.获取文件名从路径uapi java python php总结... =====uapi basename_noext($fname); =============java 自己写.. St ...
- paip.日期时间操作以及时间戳uapi php java python 总结
paip.日期时间操作以及时间戳uapi php java python 总结 ///uapi Date 函数 | Day 函数 | Hour 函数 | Minute 函数 | Month 函数 | ...
- paip.文件读写api php java python总结.txt
paip.文件读写api php java python总结.txt 一.多种方式读文件内容. 1.按字节读取文件内容 以字节为单位读取文件,常用于读二进制文件,如图片.声音.影像等文件. ...
随机推荐
- SQL Select选择
SQL Select(选择) 语法 SELECT 语法用于从数据库中选择数据. 返回的数据存储在结果表中,称为结果集. SQL SELECT 语法 SELECT column1, column2, . ...
- 「题解」:$Smooth$
问题 A: Smooth 时间限制: 1 Sec 内存限制: 512 MB 题面 题面谢绝公开. 题解 维护一个队列,开15个指针,对应前15个素数. 对于每一次添加数字,暴扫15个指针,将指针对应 ...
- 单调栈+线段树——cf1220F
首先考虑初始排列,pi会让周围所有比其大的元素深度+1,所以要求每个点的深度,只要其被覆盖了几次即可 这个覆盖可以通过处理每个元素的左右边界(单调栈O(n))+线段树区间更新(Ologn(n))来做 ...
- delphi与javascript互通
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...
- ES数据导入导出
ES数据导入导出 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ...
- 破解极验(geetest)验证码
破解极验(geetest)验证码 这是两年前的帖子: http://www.v2ex.com/t/138479 一个月前的破解程序,我没用过 asp.net ,不知道是不是真的破解了, demo ...
- ASP.NET Core学习——前言
跌跌撞撞,公司的新项目终于要在这个月月底上线. 新项目使用ASP.NET Core来做,以前没接触过这方面的内容,只能一边学习,一边搞开发. 眼看项目上线在即,工作没那么忙,也不需要天天加班. 回想了 ...
- svn启动服务
bin目录添加到环境变量classpathsvn --version 查看版本svnadmin create D:\\xx 创建本地中央仓库启动svn服务 cmd命令 svnserve -d -r D ...
- 前端(二十)—— vue介绍:引用vue、vue实例、实例生命周期钩子
vue 一.认识Vue 定义:一个构建数据驱动的 web 界面的渐进式框架 优点: 1.可以完全通过客户端浏览器渲染页面,服务器端只提供数据 2.方便构建单页面应用程序(SPA) 3.数据驱动 =&g ...
- Unity3D中动态创建编辑轴(点,线,圆,圆锥)
问题分析: 最近在搞软件底层开发,将一些工具或者底层脚本打成dll导入unity使用,有这样一需求,就是编辑功能,需要像Scene场景一样,实现那种编辑轴 实现方式: 创建Mesh,构建编辑轴,这个地 ...