https://github.com/facebookresearch/fastText
python版本
https://github.com/salestock/fastText.py
这个是非官方的版本 现在已经不在使用了
官方提供了Python版本
https://github.com/facebookresearch/fastText/tree/master/python
现在用的都是官方的版本
开始一直报错就是因为自己安装了官方的版本
却一直还在调用非官方的api
fasttext是facebook开源的一个词向量与文本分类工具,在学术上没有太多创新点,好处是模型简单,训练速度非常快。简单尝试可以发现,用起来还是非常顺手的,做出来的结果也不错,可以达到上线使用的标准。
简单说来,fastText做的事情,就是把文档中所有词通过lookup table变成向量,取平均后直接用线性分类器得到分类结果。fastText和ACL-15上的deep averaging network(DAN,如下图)比较相似,是一个简化的版本,去掉了中间的隐层。论文指出了对一些简单的分类任务,没有必要使用太复杂的网络结构就可以取得差不多的结果。
fastText结构
fastText论文中提到了两个tricks
- hierarchical softmax
- 类别数较多时,通过构建一个霍夫曼编码树来加速softmax layer的计算,和之前word2vec中的trick相同
- N-gram features
- 只用unigram的话会丢掉word order信息,所以通过加入N-gram features进行补充用hashing来减少N-gram的存储
fastText有监督学习(分类)示例
可以通过pip install fasttext安装包含fasttext python的接口的package
fastText做文本分类要求文本是如下的存储形式:
__label__2 , b