SadedeGel is initially designed to be a library for unsupervised extraction-based news summarization using several old and new NLP techniques.
Development of the library started as a part of Açık Kaynak Hackathon Programı 2020 in which SadedeGel was the 2nd place winner.
We are keeping on adding features with the goal of becoming a general purpose open source NLP library for Turkish language.
💫 Version 0.21 out now! Check out the release notes here.
Documentation | |
---|---|
Contribute | How to contribute to the sadedeGel project and code base. |
The SadedeGel project is initialized by @globalmaksimum AI team members @dafajon, @askarbozcan, @mccakir, @husnusensoy and @ertugruldemir.
Other community maintainers
Type | Platforms |
---|---|
🚨 Bug Reports | GitHub Issue Tracker |
🎁 Feature Requests | GitHub Issue Tracker |
Questions | Slack Workspace |
Several datasets
Basic corpus
sadedegel.dataset.load_raw_corpus
)sadedegel.dataset.load_sentences_corpus
) sadedegel.dataset.load_annotated_corpus
) sadedegel.dataset.extended.load_extended_raw_corpus
)sadedegel.dataset.extended.load_extended_sents_corpus
)TsCorpus(sadedegel.dataset.tscorpus
)
Various domain specific datasets (e-commerce, social media, tourism etc.)
ML based sentence boundary detector (SBD) trained for Turkish language
Sadedegel Extractive Summarizers
Various baseline summarizers
Position Summarizer
Length Summarizer
Band Summarizer
Random Summarizer
Various unsupervised/supervised summarizers
ROUGE1 Summarizer
TextRank Summarizer
Cluster Summarizer
Lexrank Summarizer
BM25 Summarizer
TfIdf Summarizer
Various Word Tokenizers
pip install sadedegel[bert]
)0.19
)Various Sparse and Dense Embeddings implemented for Sentences
and Document
objects.
pip install sadedegel[bert]
)Word Vectors for your tokens (pip install sadedegel[w2v]
)
A sklearn
compatible Feature Extraction API
Word Vectors for your tokens (pip install sadedegel[w2v]
)
A sklearn
compatible Feature Extraction API
[Experimental] Prebuilt models for several common NLP tasks (sadedegel.prebuilt
).
from sadedegel.prebuilt import news_classification
model = news_classification.load()
doc_str = ("Bilişim sektörü, günlük devrimlerin yaşandığı ve hızına yetişilemeyen dev bir alan haline geleli uzun bir zaman olmadı. Günümüz bilgisayarlarının tarihi, yarım asırı yeni tamamlarken; yaşanan gelişmeler çok "
"daha büyük ölçekte. Türkiye de bu gelişmelere 1960 yılında Karayolları Umum Müdürlüğü (şimdiki Karayolları Genel Müdürlüğü) için IBM’den satın aldığı ilk bilgisayarıyla dahil oldu. IBM 650 Model I adını taşıyan bilgisayarın "
"satın alınma amacı ise yol yapımında gereken hesaplamaların daha hızlı yapılmasıydı. Türkiye’nin ilk bilgisayar destekli karayolu olan 63 km uzunluğundaki Polatlı - Sivrihisar yolu için yapılan hesaplamalar IBM 650 ile 1 saatte yapıldı. "
"Daha öncesinde 3 - 4 ayı bulan hesaplamaların 1 saate inmesi; teknolojinin, ekonomik ve toplumsal dönüşüme büyük etkide bulunacağının habercisiydi.")
y_pred = model.predict([doc_str])
📖 For more details, refer to sadedegel.ai
Using pip, sadedeGel releases are available as source packages and binary wheels.
pip install sadedegel
or update now
pip install sadedegel -U
When using pip it is generally recommended to install packages in a virtual environment to avoid modifying system state:
python -m venv .env
source .env/bin/activate
pip install sadedegel
Certaing attributes of SadedeGel's NLP objects are dependent on shipped vocabulary dumps that are created over sadedegel.dataset.extened_corpus
via each of the existing SadedeGel tokenizers. Those tokenizers are listed above. If you want to re-train a specific tokenizer's vocabulary with custom settings:
python -m sadedegel.bblock.cli build-vocabulary -t [bert|icu|simple]
This will create a vocabulary dump using sadedegel.dataset.extended_corpus
based on custom user settings.
For all options to customize your vocab dump refer to:
python -m sadedegel.bblock.cli build-vocabulary --help
To keep core sadedegel as light as possible we decomposed our initial monolitic design.
To enable BERT embeddings and related capabilities use
pip install sadedegel[bert]
We ship 100-dimension word vectors with the library. If you need to re-train those word embeddings you can use
python -m sadedegel.bblock.cli build-vocabulary -t [bert|icu|simple] --w2v
--w2v
option requires w2v
option to be installed. To install option use
This will create a vocabulary dump with keyed vectors of arbitrary size using sadedegel.dataset.extended_corpus
based on custom user settings.
pip install sadedegel[w2v]
To load SadedeGel, use sadedegel.load()
from sadedegel import Doc
from sadedegel.dataset import load_raw_corpus
from sadedegel.summarize import Rouge1Summarizer
raw = load_raw_corpus()
d = Doc(next(raw))
summarizer = Rouge1Summarizer()
summarizer(d, k=5)
To trigger sadedeGel NLP pipeline, initialize Doc
instance with a document string.
Access all sentences using Python built-in list
function.
from sadedegel import Doc
doc_str = ("Bilişim sektörü, günlük devrimlerin yaşandığı ve hızına yetişilemeyen dev bir alan haline geleli uzun bir zaman olmadı. Günümüz bilgisayarlarının tarihi, yarım asırı yeni tamamlarken; yaşanan gelişmeler çok "
"daha büyük ölçekte. Türkiye de bu gelişmelere 1960 yılında Karayolları Umum Müdürlüğü (şimdiki Karayolları Genel Müdürlüğü) için IBM’den satın aldığı ilk bilgisayarıyla dahil oldu. IBM 650 Model I adını taşıyan bilgisayarın "
"satın alınma amacı ise yol yapımında gereken hesaplamaların daha hızlı yapılmasıydı. Türkiye’nin ilk bilgisayar destekli karayolu olan 63 km uzunluğundaki Polatlı - Sivrihisar yolu için yapılan hesaplamalar IBM 650 ile 1 saatte yapıldı. "
"Daha öncesinde 3 - 4 ayı bulan hesaplamaların 1 saate inmesi; teknolojinin, ekonomik ve toplumsal dönüşüme büyük etkide bulunacağının habercisiydi.")
doc = Doc(doc_str)
list(doc)
['Bilişim sektörü, günlük devrimlerin yaşandığı ve hızına yetişilemeyen dev bir alan haline geleli uzun bir zaman olmadı.',
'Günümüz bilgisayarlarının tarihi, yarım asırı yeni tamamlarken; yaşanan gelişmeler çok daha büyük ölçekte.',
'Türkiye de bu gelişmelere 1960 yılında Karayolları Umum Müdürlüğü (şimdiki Karayolları Genel Müdürlüğü) için IBM’den satın aldığı ilk bilgisayarıyla dahil oldu.',
'IBM 650 Model I adını taşıyan bilgisayarın satın alınma amacı ise yol yapımında gereken hesaplamaların daha hızlı yapılmasıydı.',
'Türkiye’nin ilk bilgisayar destekli karayolu olan 63 km uzunluğundaki Polatlı - Sivrihisar yolu için yapılan hesaplamalar IBM 650 ile 1 saatte yapıldı.',
'Daha öncesinde 3 - 4 ayı bulan hesaplamaların 1 saate inmesi; teknolojinin, ekonomik ve toplumsal dönüşüme büyük etkide bulunacağının habercisiydi.']
Access sentences by index.
doc[2]
Türkiye de bu gelişmelere 1960 yılında Karayolları Umum Müdürlüğü (şimdiki Karayolları Genel Müdürlüğü) için IBM’den satın aldığı ilk bilgisayarıyla dahil oldu.
In order to integrate with your applications we provide a quick summarizer server with sadedeGel.
python3 -m sadedegel.server
SadedeGel Server is hosted on free tier of Heroku cloud services.
sadedeGel utilized pylint for static code analysis, flake8 for code styling and bandit for code security check.
To run all tests
make lint
sadedeGel comes with an extensive test suite. In order to run the
tests, you'll usually want to clone the repository and build sadedeGel from source.
This will also install the required development dependencies and test utilities
defined in the requirements.txt
.
Alternatively, you can find out where sadedeGel is installed and run pytest
on
that directory. Don't forget to also install the test utilities via sadedeGel's
requirements.txt
:
make test
Some videos from sadedeGel YouTube Channel
Starlang Software for their contribution to open source Turkish NLP development and corpus preperation.
Olcay Taner Yıldız, Ph.D., one of our refrees in Açık Kaynak Hackathon Programı 2020, for helping our development on sadedegel.
Taner Sezer for his contribution on tokenization corpus and labeled news corpus.
We would like to thank our community contributors for their bug/enhancement requests and questions to make sadedeGel better everyday
Special thanks to spaCy project for their work in showing us the way to implement a proper python module rather than merely explaining it.
There are a few free-tier service providers we need to thank:
sadedegel.dataset.extended
data.Resources on Extractive Text Summarization:
Other NLP related references