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 许可证。
字节跳动发布的AI编程神器IDE
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
全能AI智能助手,随时解答生活与工作的多样问题
问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。
实时语音翻译/同声传译工具
Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
AI助力,做PPT更简单!
咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需 求。
选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。
专业的AI公文写作平台,公文写作神器
AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。
OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。
openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。
最新AI工具、AI资讯
独家AI资源、AI项目落地
微信扫一扫关注公众号