🚀 fastText (语言识别)
fastText是一个开源、免费且轻量级的库,它允许用户学习文本表示和文本分类器。该库可在标准通用硬件上运行,后续还能对模型进行瘦身,使其甚至能适配移动设备。它在这篇论文中被首次提出,其官方网站可点击此处访问。
此LID(语言识别)模型用于预测输入文本的语言,托管版本(lid218e
)作为NLLB项目的一部分发布,能够检测217种语言。你可以在fastText官方网站上找到旧版本(可识别157种语言)。
✨ 主要特性
- 易于使用:fastText专为开发者、领域专家和学生设计,使用起来非常简单。
- 高效训练:可在任何多核CPU上,在几分钟内对超过十亿个单词进行模型训练。
- 多语言支持:包含在维基百科上学习的预训练模型,支持超过157种不同语言。
- 灵活应用:既可以作为命令行工具使用,也能与C++应用程序链接,还能作为库用于从实验、原型开发到生产的各种用例。
📦 安装指南
文档未提及安装步骤,可参考官方文档进行安装。
💻 使用示例
基础用法
以下是如何使用此模型检测给定文本语言的示例:
>>> import fasttext
>>> from huggingface_hub import hf_hub_download
>>> model_path = hf_hub_download(repo_id="facebook/fasttext-language-identification", filename="model.bin")
>>> model = fasttext.load_model(model_path)
>>> model.predict("Hello, world!")
(('__label__eng_Latn',), array([0.81148803]))
>>> model.predict("Hello, world!", k=5)
(('__label__eng_Latn', '__label__vie_Latn', '__label__nld_Latn', '__label__pol_Latn', '__label__deu_Latn'),
array([0.61224753, 0.21323682, 0.09696738, 0.01359863, 0.01319415]))
高级用法
以下是计算两个单词向量余弦相似度的示例,可用于衡量模型可能存在的偏差:
>>> import numpy as np
>>> def cosine_similarity(word1, word2):
>>> return np.dot(model[word1], model[word2]) / (np.linalg.norm(model[word1]) * np.linalg.norm(model[word2]))
>>> cosine_similarity("man", "boy")
0.061653383
>>> cosine_similarity("man", "ceo")
0.11989131
>>> cosine_similarity("woman", "ceo")
-0.08834904
📚 详细文档
预期用途和限制
你可以使用预训练的词向量进行文本分类或语言识别。可查看其官方网站上的教程和资源,寻找你感兴趣的任务。
训练数据
使用fastText在Common Crawl和维基百科上对157种语言的预训练词向量进行了训练。这些模型使用带有位置权重的CBOW进行训练,维度为300,字符n-gram长度为5,窗口大小为5,负样本数为10。此外,还发布了三个新的词类比数据集,分别针对法语、印地语和波兰语。
训练过程
分词
更多关于这些模型训练的信息可在文章Learning Word Vectors for 157 Languages中找到。
评估数据集
论文中描述的类比评估数据集可在以下链接获取:
BibTeX引用和引用信息
@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}
}
@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}
}
@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}
}
@inproceedings{grave2018learning,
title={Learning Word Vectors for 157 Languages},
author={Grave, Edouard and Bojanowski, Piotr and Gupta, Prakhar and Joulin, Armand and Mikolov, Tomas},
booktitle={Proceedings of the International Conference on Language Resources and Evaluation (LREC 2018)},
year={2018}
}
(* 这些作者贡献相同。)
📄 许可证
语言识别模型遵循知识共享署名 - 非商业性使用 4.0 国际公共许可协议进行分发。