导读:Facebook声称fastText比其他学习方法要快得多,能够训练模型“在使用标准多核CPU的情况下10分钟内处理超过10亿个词汇”,特别是与深度模型对比,fastText能将训练时间由数天缩短到几秒钟。
Facebook FAIR实验室在最新博客中宣布将开源资料库fastText,声称相比深度模型,fastText能将训练时间由数天缩短到几秒钟。
理解人们交谈时的内容,或者敲打文章时的内容——这对于人工智能研究者来说是最大的技术挑战之一,但是也确实是关键的一个需求。自动文本处理在日常计算机使用中相当关键,在网页搜索和内容排名以及垃圾内容分类中占重要组成部分。且当它运行的时候你完全感受不到它。随着在线数据总量越来越大,需要有更灵活的工具来更好的理解这些大型数据集,来提供更加精准的分类结果。
为了满足这个需求,Facebook FAIR实验室开源了fastText。 fastText是一个资料库,能针对文本表达和分类帮助建立量化的解决方案 。关于fastText具体实现原理,Facebook另外发表了两篇相关论文,两篇论文具体信息如下:
举例来说:fastText能够学会“男孩”、“女孩”、“男人”、“女人”指代的是特定的性别,并且能够将这些数值存在相关文档中。然后,当某个程序在提出一个用户请求(假设是“我女友现在在儿?”),它能够马上在fastText生成的文档中进行查找并且理解用户想要问的是有关女性的问题。
在文本处理领域中深度神经网络近来大受欢迎,但是它们训练以及测试过程十分缓慢,这也限制了它们在大数据集上的应用。
fastText能够解决这个问题,其 实现过程 如下所示:
Huffman 算法
FastText与基于深度学习方法的Char-CNN以及VDCNN对比
文本分类对于商业界来说非常重要。垃圾邮件或钓鱼邮件过滤器可能就是最典型的例子。现在已经有能为一般分类问题(例如 Vowpal Wabbit 或 libSVM)设计模型的工具,但是 fastText 专注于文本分类。这使得在特别大型的数据集上,它能够被快速训练。我们使用一个标准多核 CPU,得到了在10分钟内训练完超过10亿词汇量模型的结果。此外, fastText还能在五分钟内将50万个句子分成超过30万个类别。
除了文本分类以外,fastText也能被用来学习词汇向量表征。利用其语言形态结构,fastText能够被设计用来支持包括英语、德语、西班牙语、法语以及捷克语等多种语言。它还使用了一种简单高效的纳入子字信息的方式,在用于像捷克语这样词态丰富的语言时,这种方式表现得非常好,这也证明了精心设计的字符 n-gram 特征是丰富词汇表征的重要来源。FastText的性能要比时下流行的word2vec工具明显好上不少,也比其他目前最先进的词态词汇表征要好。
不同语言下FastText与当下最先进的词汇表征进行比较
fastText具体代码实现过程
fastText基于Mac OS或者Linux系统构筑,使用 C++11 的特性。需要 python 2.6 或者更高版本支持,以及 numpy & scipy等软件支持。
示例:
$ git clone https://github.com/facebookresearch/fastText.git
$ cd fastText
$ make
$ ./fasttext supervised
Empty input or output path.
The following arguments are mandatory:
-input training file path
-output output file path
The following arguments are optional:
-lr learning rate [0.05]
-dim size of word vectors [100]
-ws size of the context window [5]
-epoch number of epochs [5]
-minCount minimal number of word occurences [1]
-neg number of negatives sampled [5]
-wordNgrams max length of word ngram [1]
-loss loss function {ns, hs, softmax} [ns]
-bucket number of buckets [2000000]
-minn min length of char ngram [3]
-maxn max length of char ngram [6]
-thread number of threads [12]
-verbose how often to print to stdout [10000]
-t sampling threshold [0.0001]
-label labels prefix [__label__]
总结: Facebook FAIR实验室最新开源工具fastText能将训练时间由数天缩短到几秒钟,相较于基于深度学习的模型方法,在保证同等精度的前提下fastText速度上快了几个数量级。此外,fastText还能作为文本分类在实际应用中的专业工具,特别是对于大型数据集能实现相当快的训练速度。另外因其自身语言形态结构,fastText还能支持包括英语、德语、西班牙语、法语以及捷克语等多种语言。
PS : 本文由雷锋网 (搜索“雷锋网”公众号关注) 编译,未经许可拒绝转载!
via Facebook research blog