fastText是一个用于高效学习词表示和句子分类的库。
我们还提供了一个包含有用的单行命令的速查表。
我们使用circleci在各种Docker镜像下持续构建和测试我们的库、CLI和Python绑定。
通常,fastText可以在现代Mac OS和Linux发行版上构建。 由于它使用了一些C++11特性,因此需要支持C++11的编译器。 这些包括:
编译使用Makefile进行,所以你需要有一个可用的make。 如果你想使用cmake,你需要至少2.8.9版本。
我们成功构建和测试CLI的最老的发行版之一是Debian jessie。
对于词相似度评估脚本,你需要:
对于Python绑定(参见python子目录),你需要:
我们成功构建和测试Python绑定的最老的发行版之一是Debian jessie。
如果这些要求使你无法使用fastText,请开一个issue,我们会尽力满足你的需求。
我们讨论构建fastText的最新稳定版本。
你可以在常规位置找到我们的最新稳定版本。
还有master分支,其中包含我们最新的所有工作,但伴随着不稳定分支的所有常见警告。如果你是开发者或高级用户,可能会想使用这个。
$ wget https://github.com/facebookresearch/fastText/archive/v0.9.2.zip
$ unzip v0.9.2.zip
$ cd fastText-0.9.2
$ make
这将为所有类以及主二进制文件fasttext生成对象文件。
如果你不打算使用默认的系统级编译器,请更新Makefile开头定义的两个宏(CC和INCLUDES)。
目前这不是发布版本的一部分,所以你需要克隆master分支。
$ git clone https://github.com/facebookresearch/fastText.git
$ cd fastText
$ mkdir build && cd build && cmake ..
$ make && make install
这将创建fasttext二进制文件以及所有相关库(共享、静态、PIC)。
目前这不是发布版本的一部分,所以你需要克隆master分支。
$ git clone https://github.com/facebookresearch/fastText.git
$ cd fastText
$ pip install .
有关更多信息和介绍,请参见python/README.md
这个库有两个主要用例:词表示学习和文本分类。 这些在1和2两篇论文中有描述。
为了学习词向量,如1中所述,执行:
$ ./fasttext skipgram -input data.txt -output model
其中data.txt是包含UTF-8编码文本的训练文件。
默认情况下,词向量将考虑3到6个字符的字符n-gram。
优化结束时,程序将保存两个文件:model.bin和model.vec。
model.vec是一个文本文件,每行包含一个词向量。
model.bin是一个二进制文件,包含模型参数以及字典和所有超参数。
二进制文件可以在以后用于计算词向量或重新开始优化。
之前训练的模型可以用来计算词表外单词的词向量。
如果你有一个文本文件queries.txt,包含你想计算向量的单词,使用以下命令:
$ ./fasttext print-word-vectors model.bin < queries.txt
这将输出词向量到标准输出,每行一个向量。 这也可以与管道一起使用:
$ cat queries.txt | ./fasttext print-word-vectors model.bin
查看提供的脚本以获取示例。例如,运行:
$ ./word-vector-example.sh
将编译代码、下载数据、计算词向量并在罕见词相似度数据集RW [Thang et al. 2013]上评估它们。
这个库也可以用来训练监督文本分类器,例如用于情感分析。 为了使用2中描述的方法训练文本分类器,使用:
$ ./fasttext supervised -input train.txt -output model
其中train.txt是一个文本文件,每行包含一个训练句子和标签。
默认情况下,我们假设标签是以字符串__label__为前缀的单词。
这将输出两个文件:model.bin和model.vec。
模型训练完成后,你可以通过在测试集上计算k的精确率和召回率(P@k和R@k)来评估它:
$ ./fasttext test model.bin test.txt k
参数k是可选的,默认为1。
为了获取一段文本的k个最可能的标签,使用:
$ ./fasttext predict model.bin test.txt k
或使用predict-prob来同时获取每个标签的概率
$ ./fasttext predict-prob model.bin test.txt k
其中test.txt包含每行一个要分类的文本片段。
这样做会将每行k个最可能的标签打印到标准输出。
参数k是可选的,默认为1。
查看classification-example.sh以获取使用示例。
为了重现2论文中的结果,运行classification-results.sh,这将下载所有数据集并重现表1中的结果。
如果你想计算句子或段落的向量表示,请使用:
$ ./fasttext print-sentence-vectors model.bin < text.txt
这假设text.txt文件包含你想获取向量的段落。
程序将在文件中每行输出一个向量表示。
你也可以使用以下命令量化监督模型以减少其内存使用:
$ ./fasttext quantize -output model
这将创建一个内存占用更小的.ftz文件。所有标准功能,如test或predict,在量化模型上的工作方式相同:
$ ./fasttext test model.ftz test.txt
量化过程遵循3中描述的步骤。你可以运行脚本quantization-example.sh作为示例。
不带参数调用命令以列出可用参数及其默认值:
$ ./fasttext supervised
输入或输出路径为空。
以下参数是必需的:
-input 训练文件路径
-output 输出文件路径
以下参数为可选项:
-verbose 详细程度级别 [2]
以下字典相关参数为可选项:
-minCount 词语最少出现次数 [1]
-minCountLabel 标签最少出现次数 [0]
-wordNgrams 词语n元组最大长度 [1]
-bucket 桶的数量 [2000000]
-minn 字符n元组最小长度 [0]
-maxn 字符n元组最大长度 [0]
-t 采样阈值 [0.0001]
-label 标签前缀 [__label__]
以下训练相关参数为可选项:
-lr 学习率 [0.1]
-lrUpdateRate 学习率更新频率 [100]
-dim 词向量维度 [100]
-ws 上下文窗口大小 [5]
-epoch 训练轮数 [5]
-neg 负采样数量 [5]
-loss 损失函数 {ns, hs, softmax} [softmax]
-thread 线程数 [12]
-pretrainedVectors 用于监督学习的预训练词向量 []
-saveOutput 是否保存输出参数 [0]
以下量化相关参数为可选项:
-cutoff 保留的词语和n元组数量 [0]
-retrain 应用截断时是否微调嵌入 [0]
-qnorm 是否单独量化范数 [0]
-qout 是否量化分类器 [0]
-dsub 每个子向量的大小 [2]
默认值可能因模式而异。(词表示模式 `skipgram` 和 `cbow` 使用默认的 `-minCount` 值为 5。)
## 参考文献
如果使用此代码学习词表示,请引用 [1](#enriching-word-vectors-with-subword-information);如果用于文本分类,请引用 [2](#bag-of-tricks-for-efficient-text-classification)。
### 用子词信息丰富词向量
[1] P. Bojanowski\*, E. Grave\*, A. Joulin, T. Mikolov, [*用子词信息丰富词向量*](https://arxiv.org/abs/1607.04606)
@article{bojanowski2017enriching, title={Enriching Word Vectors with Subword Information}, author={Bojanowski, Piotr and Grave, Edouard and Joulin, Armand and Mikolov, Tomas}, journal={Transactions of the Association for Computational Linguistics}, volume={5}, year={2017}, issn={2307-387X}, pages={135--146} }
### 高效文本分类的技巧包
[2] A. Joulin, E. Grave, P. Bojanowski, T. Mikolov, [*高效文本分类的技巧包*](https://arxiv.org/abs/1607.01759)
@InProceedings{joulin2017bag, title={Bag of Tricks for Efficient Text Classification}, author={Joulin, Armand and Grave, Edouard and Bojanowski, Piotr and Mikolov, Tomas}, booktitle={Proceedings of the 15th Conference of the European Chapter of the Association for Computational Linguistics: Volume 2, Short Papers}, month={April}, year={2017}, publisher={Association for Computational Linguistics}, pages={427--431}, }
### FastText.zip: 压缩文本分类模型
[3] A. Joulin, E. Grave, P. Bojanowski, M. Douze, H. Jégou, T. Mikolov, [*FastText.zip: 压缩文本分类模型*](https://arxiv.org/abs/1612.03651)
@article{joulin2016fasttext, title={FastText.zip: Compressing text classification models}, author={Joulin, Armand and Grave, Edouard and Bojanowski, Piotr and Douze, Matthijs and J{'e}gou, H{'e}rve and Mikolov, Tomas}, journal={arXiv preprint arXiv:1612.03651}, year={2016} }
(\* 这些作者贡献相同。)
## 加入 fastText 社区
* Facebook 页面:https://www.facebook.com/groups/1174547215919768
* Google 群组:https://groups.google.com/forum/#!forum/fasttext-library
* 联系方式:[egrave@fb.com](mailto:egrave@fb.com), [bojanowski@fb.com](mailto:bojanowski@fb.com), [ajoulin@fb.com](mailto:ajoulin@fb.com), [tmikolov@fb.com](mailto:tmikolov@fb.com)
查看 CONTRIBUTING 文件了解如何提供帮助。
## 许可证
fastText 采用 MIT 许可证。


免费创建高清无水印Sora视频
Vora是一个免费创建高清无水印Sora视频的AI工具


最适合小白的AI自动化工作流平台
无需编码,轻松生成可复用、可变现的AI自动化工作流

大模型驱动的Excel数据处理工具
基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指 令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。


AI辅助编程,代码自动修复
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。


AI论文写作指导平台
AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。


AI一键生成PPT,就用博思AIPPT!
博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。


AI赋能电商视觉革命,一站式智能商拍平台
潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。


企业专属的AI法律顾问
iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。


稳定高效的流量提升解决方案,助力品牌曝光
稳定高效的流量提升解决方案,助力品牌曝光


最新版Sora2模型免费使用,一键生成无水印视频
最新版Sora2模型免费使用,一键生成无水印视频
最新AI工具、AI资讯
独家AI资源、AI项目落地

微信扫一扫关注公众号