🚀 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 國際公共許可協議進行分發。