zoukankan      html  css  js  c++  java
  • fastText一个库用于词表示的高效学习和句子分类

    fastText

    fastText 是 Facebook 开发的一个用于高效学习单词呈现以及语句分类的开源库。

    要求

    fastText 使用 C++11 特性,因此需要一个对 C++11 支持良好的编译器,可以使用:

    • (gcc-4.6.3 或者更新版本) 或者 (clang-3.3 或者更新版本)

    我们使用 Makefile 进行编译,因此需要 make 工具。为了运行单词相似度演示脚本,我们需要如下工具:

    • python 2.6 or newer
    • numpy & scipy

    构建 fastText

    使用如下命令来构建 fastText 库:

    $ git clone git@github.com:facebookresearch/fastText.git
    $ cd fastText
    $ make

    这将会为所有的类产生一堆文件,包括主二进制文件fasttext.如果你不打算用系统默认的编译器,在Makefile(CC 和 INCLUDES)的头部修改两个宏定义.

    使用样例

    这个包有两个主要功能:单词特征学习与文本分类.这都在以面两份论文[1] and [2]中有描述

    单词特征学习

    为了学习单词向量,就像[1]描述的那样:如下操作:

    $ ./fasttext skipgram -input data.txt -output model

    data.txt是一个训练文件,包含一些以utf-8编码的文本.默认的这些词向量将会划入字符(3致6个字符)帐目 g-grams . 最后的分析程序会保存为两个文件:model.bin 和 model.vec .   model.vec是文本文件包含单词向量,每个单词一行.model.bin是二进制文件包含字典模型参数与所有的其它参数. 这个二进制文件可以用于计算单词向量或重新分析。

    第 2 段(可获 2.01 积分)

    从输出单词处获取单词向量

    前期的训练模型可以从输出单词处计算词向量.假如你有一个文本文件queries.txt包含一些你想切分的单词向量,运用下面的命令:

    $ ./fasttext print-vectors model.bin < queries.txt

    这会将单词向量输出到标准输出,一个向量一行.你也可以使用管道:

    $ cat queries.txt | ./fasttext print-vectors model.bin

    上面的脚本只是一个示例,为了更形像点运行:

    $ ./word-vector-example.sh

    第 3 段(可获 0.86 积分)

    这将会编译代码,下载数据,计算词向量,并可以测试那些由很少出现的词组成的数据集,测试它们的相似性[例如Thang 等等].

    文本分类

    这个类库也可以用来监督文本分类训练,例如情绪分析.[2]里面描述可以用于训练文本分类, 使用:

    $ ./fasttext supervised -input train.txt -output model

    train.txt是包含训练语句的文本文件,每行都带有标签,默认情况下,我们假设标签为单词,用前后加下划线的单词表示 如__label__.这个命令将会生成两个文件:model.bin 和 model.vec .  一旦模型被训练,你可以评价它,用第一部分来测试计算它的精度:

    第 4 段(可获 1.4 积分)
    $ ./fasttext test model.bin test.txt
    

    为了获得一段文本最相似的标签,可以使用如下命令:

    $ ./fasttext predict model.bin test.txt
    

    test.txt 包含一些文本用来根据每行进行分类。执行完毕将会输出每一行的近似标签。请看 classification-example.sh 来了解示例代码的使用场景。为了从论文 [2] 中重新生成结果,可以运行 classification-results.sh 脚本,这将下载所有的数据集并从表1中重新生成结果。

    命令完整文档

    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 [1000]
      -t          sampling threshold [0.0001]
      -label      labels prefix [__label__]
    
    第 5 段(可获 0.86 积分)

    参考资料

    如果使用这些代码用于学习单词的呈现请引用 [1] ,如果用于文本分类请引用 [2]。

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

    @article{bojanowski2016enriching,
      title={Enriching Word Vectors with Subword Information},
      author={Bojanowski, Piotr and Grave, Edouard and Joulin, Armand and Mikolov, Tomas},
      journal={arXiv preprint arXiv:1607.04606},
      year={2016}
    }
    

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

    第 6 段(可获 0.63 积分)
    @article{joulin2016bag,
      title={Bag of Tricks for Efficient Text Classification},
      author={Joulin, Armand and Grave, Edouard and Bojanowski, Piotr and Mikolov, Tomas},
      journal={arXiv preprint arXiv:1607.01759},
      year={2016}
    }
    

    (* 这些作者贡献一样.)

    加入 fastText 社区

     

     

    fastText一个库用于词表示的高效学习和句子分类

    fastText一个库用于词表示的高效学习和句子分类
  • 相关阅读:
    有关.net 框架的学习笔记
    简单定义工程架构
    respondsToSelector的相关使用
    IOS框架和服务
    iOS常用第三方类库
    ios换肤思想,及工具类
    集成激光推送
    远程推送
    ios本地推送
    UIPopoverController 的使用
  • 原文地址:https://www.cnblogs.com/timssd/p/7163813.html
Copyright © 2011-2022 走看看