跳转到主要内容

极端文本库的Python接口

项目描述

extremeTextfastText 库的扩展,用于多标签分类,包括极端情况下的成千上万的标签。

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有很好的了解。为此,请考虑主READMEfastText网站上的教程

我们建议您查看文档文件夹内的示例

与任何包一样,您可以使用帮助函数获取有关任何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 (66.4 kB 查看哈希值)

上传时间 源代码

支持者