Skip to main content

An implementation of the https://github.com/facebookresearch/fastText supervised learning algorithm for text classification using Pytorch.

This project has been archived.

The maintainers of this project have marked this project as archived. No new releases are expected.

Project description

torchFastText : Efficient text classification with PyTorch

A flexible PyTorch implementation of FastText for text classification with support for categorical features.

Features

  • Supports text classification with FastText architecture
  • Handles both text and categorical features
  • N-gram tokenization
  • Flexible optimizer and scheduler options
  • GPU and CPU support
  • Model checkpointing and early stopping
  • Prediction and model explanation capabilities

Installation

pip install torchFastText

Key Components

  • build(): Constructs the FastText model architecture
  • train(): Trains the model with built-in callbacks and logging
  • predict(): Generates class predictions
  • predict_and_explain(): Provides predictions with feature attributions

Subpackages

  • preprocess: To preprocess text input, using nltk and unidecode libraries.
  • explainability: Simple methods to visualize feature attributions at word and letter levels, using captumlibrary.

Run pip install torchFastText[preprocess] or pip install torchFastText[explainability] to download these optional dependencies.

Quick Start

from torchFastText import torchFastText

# Initialize the model
model = torchFastText(
    num_tokens=1000000,
    embedding_dim=100,
    min_count=5,
    min_n=3,
    max_n=6,
    len_word_ngrams=True,
    sparse=True
)

# Train the model
model.train(
    X_train=train_data,
    y_train=train_labels,
    X_val=val_data,
    y_val=val_labels,
    num_epochs=10,
    batch_size=64
)
# Make predictions
predictions = model.predict(test_data)

where train_data is an array of size $(N,d)$, having the text in string format in the first column, the other columns containing tokenized categorical variables in int format.

Please make sure y_train contains at least one time each possible label.

Dependencies

  • PyTorch Lightning
  • NumPy

Categorical features

If any, each categorical feature $i$ is associated to an embedding matrix of size (number of unique values, embedding dimension) where the latter is a hyperparameter (categorical_embedding_dims) - chosen by the user - that can take three types of values:

  • None: same embedding dimension as the token embedding matrix. The categorical embeddings are then summed to the sentence-level embedding (which itself is an averaging of the token embeddings). See Figure 1.
  • int: the categorical embeddings have all the same embedding dimensions, they are averaged and the resulting vector is concatenated to the sentence-level embedding (the last linear layer has an adapted input size). See Figure 2.
  • list: the categorical embeddings have different embedding dimensions, all of them are concatenated without aggregation to the sentence-level embedding (the last linear layer has an adapted input size). See Figure 3.

Default is None.

Default-architecture
Figure 1: The 'sum' architecture

avg-architecture
Figure 2: The 'average and concatenate' architecture

concat-architecture
Figure 3: The 'concatenate all' architecture

Documentation

For detailed usage and examples, please refer to the example notebook. Use pip install -r requirements.txt after cloning the repository to install the necessary dependencies (some are specific to the notebook).

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

MIT

References

Inspired by the original FastText paper [1] and implementation.

[1] A. Joulin, E. Grave, P. Bojanowski, T. Mikolov, Bag of Tricks for Efficient Text Classification

@InProceedings{joulin2017bag,
  title={Bag of Tricks for Efficient Text Classification},
  author={Joulin, Armand and Grave, Edouard and Bojanowski, Piotr and Mikolov, Tomas},
  booktitle={Proceedings of the 15th Conference of the European Chapter of the Association for Computational Linguistics: Volume 2, Short Papers},
  month={April},
  year={2017},
  publisher={Association for Computational Linguistics},
  pages={427--431},
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

torchfasttext-0.0.3.tar.gz (25.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

torchfasttext-0.0.3-py3-none-any.whl (29.5 kB view details)

Uploaded Python 3

File details

Details for the file torchfasttext-0.0.3.tar.gz.

File metadata

  • Download URL: torchfasttext-0.0.3.tar.gz
  • Upload date:
  • Size: 25.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for torchfasttext-0.0.3.tar.gz
Algorithm Hash digest
SHA256 f6d60fdd86d1ea35bf055d88288e878593e85e7c91fa02bf6689eac5a6f44d75
MD5 02e59a0b43578cf34750c882ebcbe102
BLAKE2b-256 f6b891322802ac02da4cca881f5a3ed8d6a51f6d6c62086e31dfd66fd5926d1f

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchfasttext-0.0.3.tar.gz:

Publisher: python-publish.yml on InseeFrLab/torch-fastText

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file torchfasttext-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: torchfasttext-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 29.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for torchfasttext-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 85159e0b9d8b0957203cdca6fe6c1332ca87504f5be64f8b2314ab50f11c21b8
MD5 43017575210c53f92ea8b892d22d8ada
BLAKE2b-256 ac8d3cf6ba372e27e70eb916b832147f22e52960fbea849a54e611d905ff867d

See more details on using hashes here.

Provenance

The following attestation bundles were made for torchfasttext-0.0.3-py3-none-any.whl:

Publisher: python-publish.yml on InseeFrLab/torch-fastText

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page