极端文本库的Python接口
项目描述
extremeText 是 fastText 库的扩展,用于多标签分类,包括极端情况下的成千上万的标签。
extremeText 实现
概率标签树(PLT)损失,用于极端多标签分类,使用自上而下的层次聚类(k-means)构建树,
sigmoid损失用于多标签分类,
L2正则化和FOBOS更新用于所有损失,
带有袋装法的损失层集成,
将隐藏(文档)向量计算为单词向量的加权平均值,
计算单词的TF-IDF权重。
需求
extremeText 基于 Mac OS 和 Linux 现代发行版。由于它使用 C++11 功能,因此需要具有良好 C++11 支持的编译器。包括
(gcc-4.8 或更高版本) 或 (clang-3.3 或更高版本)
您需要
安装extremetext
获取 extremeText 的最简单方法是使用 pip。
$ pip install extremetext
在MacOS上安装可能需要首先设置 MACOSX_DEPLOYMENT_TARGET=10.9
$ export MACOSX_DEPLOYMENT_TARGET=10.9 $ pip install extremetext
最新版本的extremeText可以通过源代码使用pip或setuptools构建。
$ git clone https://github.com/mwydmuch/extremeText.git $ cd extremeText $ pip install . (or) $ python setup.py install
现在你可以用以下方式导入这个库
import extremeText
示例
通常假设读者已经对fastText/extremeText有很好的了解。为此,请考虑主README和fastText网站上的教程。
我们建议您查看文档文件夹内的示例。
与任何包一样,您可以使用帮助函数获取有关任何Python函数的帮助。
例如
+>>> import extremeText +>>> help(extremeText.ExtremeText) Help on module extremeText.ExtremeText in extremeText: NAME extremeText.ExtremeText DESCRIPTION # Copyright (c) 2017-present, Facebook, Inc. # All rights reserved. # # This source code is licensed under the BSD-style license found in the # LICENSE file in the root directory of this source tree. An additional grant # of patent rights can be found in the PATENTS file in the same directory. FUNCTIONS load_model(path) Load a model given a filepath and return a model object. tokenize(text) Given a string of text, tokenize it and return a list of tokens [...]
重要:数据预处理 / 编码约定
通常,正确预处理您的数据非常重要。根目录中的示例脚本就是这样做的。
extremeText与fastText一样,假设文本是UTF-8编码的。所有文本都必须是Python2中的unicode和Python3中的str。传递的文本将在传递给extremeText C++库之前由pybind11编码为UTF-8。这意味着在构建模型时使用UTF-8编码的文本非常重要。在类Unix系统上,您可以使用iconv转换文本。
extremeText将基于以下ASCII字符(字节)进行分词(将文本分割成片段)。特别是,它不识别UTF-8空白。我们建议用户将UTF-8空白/单词边界转换为以下符号之一。
空格
制表符
垂直制表符
回车符
换页符
空字符
换行符用于分隔文本行。特别是,如果遇到换行符,将追加EOS标记到文本行。唯一的例外是如果标记数超过在Dictionary头文件中定义的MAX_LINE_SIZE常量。这意味着如果您有不以换行符分隔的文本,例如fil9数据集,它将分成具有MAX_LINE_SIZE标记的块,并且不会追加EOS标记。
标记的长度是考虑字节的前两位来识别多字节序列的后续字节的UTF-8字符数。了解这一点对于选择子词的最小和最大长度尤为重要。此外,EOS标记(如Dictionary头文件中指定)被视为一个字符,并且不会被拆分成子词。
参考
如果您使用此包进行极端分类,请引用以下工作。
M. Wydmuch, K. Jasinska, M. Kuznetsov, R. Busa-Fekete, K. Dembczyński. *将层次softmax推广到极端多标签分类的无 regret 通用方法*. Advances in Neural Information Processing Systems 31, 2018.
项目详情
extremetext-0.8.4.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | bb0843c232586df8c56ece6d59ddcc57b5c7d28c7c65e4b92fe237dc649b838c |
|
MD5 | a048169eb808c311138c0c647537db2e |
|
BLAKE2b-256 | 89b9037923bbb7fad83e46a864e27aac0d5f332d07530d3d6c4b7dcd643b0503 |