【手撕 - 自然语言处理】手撕 FastText 源码(01)分类器的预测过程_fasttext predict-程序员宅基地

技术标签: 自然语言处理  

作者:LogM

本文原载于 https://segmentfault.com/u/logm/articles ,不允许转载~

1. 源码来源

FastText 源码:https://github.com/facebookre...

本文对应的源码版本:Commits on Jun 27 2019, 979d8a9ac99c731d653843890c2364ade0f7d9d3

FastText 论文:

[1] P. Bojanowski, E. Grave, A. Joulin, T. Mikolov, Enriching Word Vectors with Subword Information

[2] A. Joulin, E. Grave, P. Bojanowski, T. Mikolov, Bag of Tricks for Efficient Text Classification

2. 概述

FastText 的论文写的比较简单,有些细节不明白,网上也查不到,所幸直接撕源码。

FastText 的"分类器"功能是用的最多的,所以先从"分类器的predict"开始挖。

3. 开撕

先看程序入口的 main 函数,ok,是调用了 predict 函数。

// 文件:src/main.cc
// 行数:403
int main(int argc, char** argv) {
  std::vector<std::string> args(argv, argv + argc);
  if (args.size() < 2) {
    printUsage();
    exit(EXIT_FAILURE);
  }
  std::string command(args[1]);
  if (command == "skipgram" || command == "cbow" || command == "supervised") {
    train(args);           
  } else if (command == "test" || command == "test-label") {
    test(args);
  } else if (command == "quantize") {
    quantize(args);
  } else if (command == "print-word-vectors") {
    printWordVectors(args);
  } else if (co
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_28739605/article/details/104212532

智能推荐

sql(mysql数据库)计算经纬度之间的距离_数据库经纬度计算300米内-程序员宅基地

文章浏览阅读1.5k次。(6371*ACOS(SIN(latitude)*SIN("+lat+")*COS(longitude-"+lng+")+COS(latitude)*COS("+lat+"))*"+Math.PI+")/180_数据库经纬度计算300米内

基于matlab测幅值,基于MATLAB的分析测试系统-程序员宅基地

文章浏览阅读261次。基于MATLAB的分析测试系统来源:华强电子网作者:华仔浏览:663时间:2016-08-10 14:18标签:摘要:摘 要:介绍基于matlab的分析测试系统的结构,详细阐述了系统的工作原理及其应用。 关键词:matlab;分析;测试;信号处理systemof analyse and testing based on matlab   lijie,tangxiao-quan,zhangyi-mi..._幅度 matlab 测量

MySQL安装和配置(超详细简单实用)_mysql安装及配置超详细教程-程序员宅基地

文章浏览阅读2.3k次。MySQL安装和配置(超详细简单实用)_mysql安装及配置超详细教程

Studio 3T工具下载安装及使用教程-程序员宅基地

文章浏览阅读1.3w次,点赞10次,收藏63次。Studio 3T工具下载安装及使用教程_studio 3t

Solr4.7从文件创建索引_solr4创建索引库-程序员宅基地

文章浏览阅读478次。索引数据源并不会一定来自于数据库、XML、JSON、CSV这类结构化数据,很多时候也来自于PDF、word、html、word、MP3等这类非结构化数据,从这类非结构化数据创建索引,solr也给我们提供了很好的支持,利用的是apache tika。下面我们来看看在solr4.7中如何从pdf文件创建索引。 一、配置文件索引库1、 新建core我们新建一个solr的cor_solr4创建索引库

哈希长度拓展攻击 (hash length extension attacks) 示例与原理_哈希长度扩展-程序员宅基地

文章浏览阅读2.2k次,点赞4次,收藏6次。哈希长度拓展攻击 hash length extension attacks示例与原理哈希长度拓展攻击:指针对某些允许包含额外信息的加密散列函数的攻击手段。次攻击适用于MD5和SHA-1等基于Merkle–Damgård构造的算法介绍目录:哈希与加密的区别常用哈希算法的介绍Md5加密过程Md5拓展攻击示例及原理哈希与加..._哈希长度扩展

随便推点

神奇百变的迪万科技3d打印机是如何进行3d打印服务_3d打印有哪几种特殊材质说说他们的神奇功用-程序员宅基地

文章浏览阅读177次。3D打印是添加剂制造技术的一种形式,在添加剂制造技术中三维对象是通过连续的物理层创建出来的。  3D打印机就是可以“打印”出真实3D物体的一种设备,即通过逐层增加材料来生成3D实体,与传统的去除材料加工技术完全不同,因此分层加工的过程与喷墨打印十分相似。  先通过计算机建模软件建模,如果你有现成的模型也可以,比如动物模型、人等。然后通过SD卡或者USB优盘把它拷贝到3D打印机中,进行打印设置后..._3d打印有哪几种特殊材质说说他们的神奇功用

『thunder43』 SD2C 2008 之 流水账-程序员宅基地

文章浏览阅读1.1k次。原文链接:http://blog.csdn.net/thunder43/archive/2008/12/12/3504772.aspx作者:thunder431st day 11:30 坐上984路公交车,开始用iPod Touch看绝影 的《疯狂的程序员》 (欢迎观看SD大会现场录制的宣传片 )。 12:30 抬头看到前面几排的座位上坐着一个似乎看着很眼熟的人,过去看了一下,是同事毕东 。 13:00 到达九华山庄,有一个奇怪的男子找不到会场,可是我们也不知道会场在哪儿…最后毕东打了通电话终于找到了,后来

Unity使用AssetDatabase.CreateAsset报错:Couldn't create asset file!-程序员宅基地

文章浏览阅读8.1k次,点赞7次,收藏2次。使用AssetDatabase.CreateAsset(UnityEngine.Object asset, string path)新建资源时:路径path使用:application .datapath +"/xxx/xxx",实际路径会是“E:/asdf/asdfasdf/Assets/xxx/xxx”,这样就会报错“Couldn't create asset file!”如下图:..._couldn't create asset file!

单饼怎么和面做又软又好吃_打单饼怎么和面-程序员宅基地

文章浏览阅读1k次。制作材料:面粉、盐、油我们先和面,和面的时候水温不能太高,可以把面分成两半,冷水和面这样能保持住面原有的韧性,另一半开水和面半烫面。这样今天的面既有韧劲,又柔软。和面的时候边倒水边搅面,搅出絮状揉成稍软的面团,盖上保鲜膜饧发一至两个小时,面饧的时间越长面越有韧劲,饧面的中间揉两次,会使面更加柔软。面饧好之后,面板上撒上干面粉,多揉一会,把面彻底揉上劲后,将揉好的面搓成长条,切成大小均匀的剂子。把剂子按扁,用擀面杖擀成大小薄厚均匀的小饼,然后把每个小饼双面都抹上油,撒上干面粉,防止油溢出。每三个饼叠加到一起_打单饼怎么和面

每日一题——编辑距离-程序员宅基地

文章浏览阅读196次。菜鸡每日一题系列打卡72天每天一道算法题目小伙伴们一起留言打卡坚持就是胜利,我们一起努力!题目描述(引自LeetCode)给你两个单词word1和word2,请你计算出将word1转换..._编辑距离 时间限制:1秒 内存限制:128m 题目描述 设a和b是两个字符串。我们要用最

当用python读取几十万行文本时_python readlines如果文件行数几十万行-程序员宅基地

文章浏览阅读4.4k次。我在使用python读取几十万行的文件中的数据,并构造字典,列表等数据结构时,再访问字典,列表时,一般都会出现内存不够的问题,然后只能循环读取几百行或者一定数量的行数来循环操作。keyword_list=[line.strip() for line in open("keywords.txt",'r')]#f1=open("part_wiki_vec.txt",'r')f1=open("wik_python readlines如果文件行数几十万行

推荐文章

热门文章

相关标签