什么是 fastText
fastText 是一个 Facebook 开源的文本分类工具,它利用词向量(word vectors)的方法训练词汇,通过类别标签(class labels)对大量文本进行分类。相对于传统模型,fastText 有更快的训练速度和更高的准确率。
安装 fastText
安装 fastText 可以通过官方的 GitHub 页面进行下载:
git clone https://github.com/facebookresearch/fastText.git
cd fastText
pip install .
对文本进行分类
首先,需要准备用于分类的文本数据和对应的类别标签。然后,使用 fastText 进行训练。
下面是一个示例:
import fasttext
# 构建并训练分类器
classifier = fasttext.train_supervised('train.txt')
# 对测试数据进行预测
results = classifier.test('test.txt')
# 输出分类器性能指标和准确率
print(results.precision)
print(results.recall)
print(results.nexamples)
# 输出测试数据的标签和预测结果
with open('test.txt', 'r') as f:
test_data = [line.strip().split('\t') for line in f.readlines()]
for i in range(len(test_data)):
true_label = test_data[i][0]
predicted_label = classifier.predict(test_data[i][1])
print('True Label: {}, Predicted Label: {}'.format(true_label, predicted_label))
这个示例中,文本数据分别以 train.txt 和 test.txt 存储,每一行以 ‘\t’ 分隔类别标签和文本内容。分类器以 train.txt 作为训练数据进行训练,然后进行预测,并输出了测试数据的标签和预测结果。
训练自己的词向量模型
fastText 还能用于训练自己的词向量模型。使用预训练的词向量有时不能满足特定数据集的需求,因此训练自己的词向量模型是十分必要的。
示例代码如下:
import fasttext
# 构建并训练词向量模型
model = fasttext.train_unsupervised('text_data.txt', model='skipgram')
# 获取单词向量
word_vector = model.get_word_vector('word')
# 保存词向量模型
model.save_model('model.bin')
这个示例中,text_data.txt 包含用于训练词向量模型的文本数据。skipgram 是训练词向量模型的算法之一,它通过上下文单词来生成中心单词的向量。get_word_vector 方法能获取给定单词的向量。最后,通过 save_model 方法保存训练好的模型。