探索文本世界的灵鹊——Magpie
Magpie 是一个用于多标签文本分类的深度学习工具。它从训练语料库中学习,并能对任意文本进行标签预测,适用于未知数据的预处理。该项目最初由CERN开发,旨在为高能物理摘要分配主题类别并提取关键词。
简短了解
只需几行代码,你就可以启动Magpie并进行训练和预测:
>>> magpie = Magpie()
>>> magpie.init_word_vectors('/path/to/corpus', vec_dim=100)
>>> magpie.train('/path/to/corpus', ['label1', 'label2', 'label3'], epochs=3)
Training...
>>> magpie.predict_from_text('Well, that was quick!')
[('label1', 0.96), ('label3', 0.65), ('label2', 0.21)]
深入理解
训练模型需要大量已标注的文本数据,文件以UTF-8编码。提供了一个示例语料库data/hep-categories
。Magpie寻找.txt
(文本)和.lab
(标签)文件,文件名相同但扩展名不同。
首先,你需要使用提供的语料库构建词向量表示。然后,通过拟合缩放矩阵来标准化输入数据。训练过程可以一次完成:
magpie = Magpie()
magpie.init_word_vectors('data/hep-categories', vec_dim=100)
接着,指定标签并训练模型:
labels = ['Gravitation and Cosmology', 'Experiment-HEP', 'Theory-HEP']
magpie.train('data/hep-categories', labels, test_ratio=0.2, epochs=30)
在预测阶段,可以对单个文件或自定义文本进行操作:
>>> magpie.predict_from_file('data/hep-categories/1002413.txt')
[('Experiment-HEP', 0.47593361), ...]
>>> magpie.predict_from_text('Stephen Hawking studies black holes')
[('Gravitation and Cosmology', 0.96627593), ...]
保存与加载模型
Magpie的组件包括词向量映射、缩放器和Keras模型。你可以单独保存这些组件,然后在后续训练中加载它们:
magpie.save_word2vec_model('/save/my/embeddings/here')
magpie.save_scaler('/save/my/scaler/here', overwrite=True)
magpie.save_model('/save/my/model/here.h5')
重新初始化时,指定保存路径即可:
magpie = Magpie(
keras_model='/save/my/model/here.h5',
word2vec_model='/save/my/embeddings/here',
scaler='/save/my/scaler/here',
labels=['cat', 'dog', 'cow']
)
安装
虽然Magpie尚未发布到PyPi,但可以直接从GitHub安装:
$ pip install git+https://github.com/inspirehep/magpie.git@v2.1.1
确保安装了setup.py
文件中列出的所有依赖项。
引用与联系
Magpie中的神经网络模型基于Yoon Kim和Mark Berger的工作。如有问题,请随时创建问题,我们会尽力帮助!
Magpie以其简洁的API和高效的数据处理能力,为文本分类任务提供了强大的解决方案。无论你是学术研究者,还是产品经理,或者是热衷于自然语言处理的技术爱好者,Magpie都是你值得尝试的开源项目。现在就加入Magpie的世界,探索文本数据的无限可能吧!