Awesome Open Source
Awesome Open Source

SadedeGel: A General Purpose NLP library for Turkish

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

We keep adding lots to become a general purpose open source NLP library for Turkish langauge.

💫 Version 0.20 out now! Check out the release notes here.

Python package Python Version Coverage pypi Version PyPi downloads License Commit Month Commit Week Last Commit Binder Slack Kaggle

📖 Documentation

Documentation
Contribute How to contribute to the sadedeGel project and code base.

💬 Where to ask questions

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

Features

  • Several datasets

    • Basic corpus

      • Raw corpus (sadedegel.dataset.load_raw_corpus)
      • Sentences tokenized corpus (sadedegel.dataset.load_sentences_corpus)
      • Human annotated summary corpus (sadedegel.dataset.load_annotated_corpus)
    • Extended corpus

      • Raw corpus (sadedegel.dataset.extended.load_extended_raw_corpus)
      • Sentences tokenized corpus (sadedegel.dataset.extended.load_extended_sents_corpus)
    • TsCorpus(sadedegel.dataset.tscorpus)

  • ML based sentence boundary detector (SBD) trained for Turkish language (sadedegel.dataset)

  • 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

    • BERT Tokenizer - Trained tokenizer (pip install sadedegel[bert])
    • Simple Tokenizer - Regex Based
    • IcU Tokenizer (default by 0.19)
  • Various Embeddings Implementation

    • BERT Embeddings (pip install sadedegel[bert])
    • TfIdf Embeddings
  • [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

Install sadedeGel

  • Operating system: macOS / OS X · Linux · Windows (Cygwin, MinGW, Visual Studio)
  • Python version: 3.6+ (only 64 bit)
  • Package managers: pip

pip

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

Optional

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 retrain those embeddings you can use

python -m sadedegel.bblock.cli build-vocabulary

--w2v option requires w2v option to be installed. To install option use

pip install sadedegel[w2v]

Quickstart with SadedeGel

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.

SadedeGel Server

In order to integrate with your applications we provide a quick summarizer server with sadedeGel.

python3 -m sadedegel.server 

SadedeGel Server on Heroku

SadedeGel Server is hosted on free tier of Heroku cloud services.

PyLint, Flake8 and Bandit

sadedeGel utilized pylint for static code analysis, flake8 for code styling and bandit for code security check.

To run all tests

make lint

Run tests

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

📓 Kaggle

Youtube Channel

Some videos from sadedeGel YouTube Channel

SkyLab YTU Webinar Playlist

Youtube

Youtube

Youtube

Youtube

Youtube

Youtube

Youtube

Youtube

References

Special Thanks

Our Community Contributors

We would like to thank our community contributors for their bug/enhancement requests and questions to make sadedeGel better everyday

Software Engineering

  • Special thanks to spaCy project for their work in showing us the way to implement a proper python module rather than merely explaining it.

    • We have borrowed many document and style related stuff from their code base 😄
  • There are a few free-tier service providers we need to thank:

Machine Learning (ML), Deep Learning (DL) and Natural Language Processing (NLP)


Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Python (1,142,951
Machine Learning (31,745
Deep Learning (23,727
Data Science (9,195
Neural Network (8,618
Nlp (8,378
Artificial Intelligence (5,566
Ai (4,813
Natural Language Processing (4,747
Heroku (4,259
Bert (1,170
Embeddings (629
Corpus (425
Binder (314
Acikhack2 (27
News Summarizer (2
Related Projects