From c860267db1dfb8184e96cd791c3d8c3a2b019306 Mon Sep 17 00:00:00 2001 From: leomaurodesenv Date: Tue, 7 Nov 2023 18:35:14 -0300 Subject: [PATCH] feat: add introduction, badges --- README.md | 16 ++++++++++++++-- docs/submission-score.png | Bin 0 -> 24930 bytes 2 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 docs/submission-score.png diff --git a/README.md b/README.md index 3adf309..6232c8c 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,20 @@ -# dvc-luigi +# NLP Pipeline using DVC and Luigi + +[![GitHub](https://img.shields.io/static/v1?label=Code&message=GitHub&color=blue&style=flat-square)](https://github.com/leomaurodesenv/dvc-luigi-nlp) +[![MIT license](https://img.shields.io/static/v1?label=License&message=MIT&color=blue&style=flat-square)](LICENSE) +[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/leomaurodesenv/dvc-luigi-nlp/continuous-integration.yml?label=Build&style=flat-square)](https://github.com/leomaurodesenv/dvc-luigi-nlp/actions/workflows/continuous-integration.yml) + + +This is a project study to create a NLP pipeline using DVC and Luigi. The pipeline consists of several tasks that process text data, including preprocessing, feature extraction, and model training. Each task is defined as a [Luigi task](https://luigi.readthedocs.io/), which allows for easy tracking of dependencies and parallel execution. The pipeline also uses [DVC](https://dvc.org/) to manage data versioning and ensure reproducibility. The resulting model can be used for text classification or other NLP tasks. + +> Note: This project contains a top-50 solution on the competition. + +

+ This is a learning repository about DVC Data Version Control and Luigi Pipelines - luigi, dvc, pre-commit -- https://luigi.readthedocs.io/ +- - setup https://pre-commit.com/, https://pre-commit.com/hooks.html - setup https://github.com/Kaggle/kaggle-api - `kaggle competitions download -c sentiment-analysis-on-movie-reviews -p data` diff --git a/docs/submission-score.png b/docs/submission-score.png new file mode 100644 index 0000000000000000000000000000000000000000..f48c3f270ce76431e590256f0a1c4936409c6bcf GIT binary patch literal 24930 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 DO;;5b literal 0 HcmV?d00001