Skip to main content

A comprehensive Bangla NLP library for Bangla Word conversion

Project description

🇧🇩 BanglaWordKit (v0.1.5)

A Comprehensive NLP Toolkit for Bangla Text Normalization, Standardization, and Conversion.

BanglaWordKit is a robust Python library designed to simplify Bangla Natural Language Processing (NLP) tasks. It provides ready-to-use tools for text normalization, slang removal(Normalizer), dialect conversion, and seamless integration between English and Bangla characters.


🚀 Key Features

  • 🚫 Slang & Abuse Standardizer: Detects and replaces offensive or rude Bangla words with polite alternatives while maintaining semantic meaning.
  • 🔄 English/Banglish to Bangla: Converts English or Banglish words within a Bangla sentence into proper Bangla script (e.g., "office" ➔ "অফিস").
  • 📖 Bagdhara Converter: Translates complex Bangla idioms (Bagdhara) into simple, understandable Bangla.
  • 🏛️ Sadhu to Cholito: Converts archaic Sadhu Bhasha into modern standard Cholito Bhasha.
  • 🌍 Foreign Word Handler: Standardizes foreign words into their common Bangla phonetic representations.
  • 🧹 Advanced Normalization: Cleans redundant spaces, punctuation, and handles multi-modal text structures.

📂 Project Structure

Based on the library Structure:

BNAGLA_NLP_LIBRARY/
├── BanglaWordKit/                          # Core Package
│   ├── data/                            # JSON Datasets (Dictionaries)
│   │   ├── bagdhara_dataset.json
│   │   ├── banglish_to_bangla_word_dataset.json
│   │   ├── foreign_word_to_bangla_word_dataset.json
│   │   ├── sadhu_to_cholito_dataset.json
│   │   └── slang_words_dataset.json
│   ├── __init__.py                      # Package Entry Point
│   ├── bagdhara_converter.py            # Module 1
│   ├── bangla_slang_standardizer.py     # Module 2
│   ├── english_banglish_to_bangla_word.py # Module 3
│   ├── foreign_word_to_bangla_word_converter.py # Module 4
│   └── sadhu_to_cholito_converter.py    # Module 5
├── bangdhara_data_making/               # Data Scraping & Preprocessing Tools
├── bangla_slang_to_bangla_word_data_making/
├── ...                                  # Other Data Making Modules
├── tests/                               # Unit Testing Suite
│   ├── test_bagdhara_converter.py
│   ├── test_bangla_slang_standardizer.py
│   └── ...
├── setup.py                             # Package Configuration
└── README.md                            # Documentation


🛠 Installation
You can install the library directly from PyPI (once published):
 pip install BanglaWordKit

💻 Quick Start
1. Slang Standardization
Clean up rude text while keeping the sentiment intact:

from BanglaWordKit import banglaSlangStandardizer

std = banglaSlangStandardizer()
text = "তুই একটা গাধা, একদম বাজে বকিস না।"
result = std.slang_standardize(text)

print(result) 
Output: তুমি একটা বোকা, একদম অপ্রয়োজনীয় কথা বলছ না।

2. Engliah/Banglish to Bangla Conversion
Automatically fix English words used in Bangla sentences:

from BanglaWordKit import English_banglish_ToBangla
converter = English_banglish_ToBangla()

sample_text = "তোমার রেজাল্ট কেমন হয়েছে?"

print(f"মূল বাক্য: {sample_text}\n")

print(f"Level 1 (Casual): {converter.convert(sample_text, level=1)}")
print(f"Level 2 (Formal): {converter.convert(sample_text, level=2)}")
print(f"Level 3 (Archaic): {converter.convert(sample_text, level=3)}")

Output:
Level 1 (Casual): তোমার রেজাল্ট কেমন হয়েছে?
Level 2 (Formal): তোমার ফলাফল কেমন হয়েছে?
Level 3 (Archaic): তোমার ফলাফল কেমন হয়েছে?

3. Sadhu to Cholito Conversion

from BanglaWordKit import ShadhuToCholito
 
ShadhuToCholito_converter = ShadhuToCholito()
    
test_sentences = [
        # ১. সর্বনাম ও সাধারণ ক্রিয়াপদ টেস্ট
        "তাহারা অদ্য মাঠে খেলিতেছিল এবং আমি তাহা দেখিতেছিলাম।",
        
        # ২. বিশেষ্য, অব্যয় এবং স্বরবর্ণান্ত ধাতু (করিয়া -> করে) টেস্ট
        "বালিকাটি নিজ হস্তে গৃহ পরিষ্কার করিয়া বিশ্রাম নিতেছিল।",
        
        # ৩. অব্যয় (অদ্যাবধি, সহিত) এবং সর্বনাম টেস্ট
        "অদ্যাবধি আমি তাহাদের সহিত কোনো বিবাদে জড়াই নাই।",
        
        # ৪. ডাবল ি-কার (দিলাম) এবং ভাওয়েল শিফট (খাইল -> খেল) টেস্ট
        "আমি উহাকে একটি মৎস্য দিলাম এবং সে তাহা আনন্দে খাইল।",
        
        # ৫. একাধিক ক্রিয়াপদ এবং বিশেষ্য (ব্যাঘ্র -> বাঘ) টেস্ট
        "ব্যাঘ্র দেখিয়া সে ভয়ে কাঁপিতে কাঁপিতে দৌড়াইয়া পলাইল।"
]

for i, sentence in enumerate(test_sentences, 1):
        cholito_sentence = ShadhuToCholito_converter.convert(sentence)
        print(f"সাধু : {sentence}")
        print(f"চলিত : {cholito_sentence}")

Output:
সাধু : তাহারা অদ্য মাঠে খেলিতেছিল এবং আমি তাহা দেখিতেছিলাম।
চলিত : তারা আজ মাঠে খেলছিল এবং আমি তা দেখছিলাম।
সাধু : বালিকাটি নিজ হস্তে গৃহ পরিষ্কার করিয়া বিশ্রাম নিতেছিল।
চলিত : মেয়েটি নিজ হাতে বাড়ি পরিষ্কার করে বিশ্রাম নিছিল।
সাধু : অদ্যাবধি আমি তাহাদের সহিত কোনো বিবাদে জড়াই নাই।
চলিত : আজ পর্যন্ত আমি তাদের সাথে কোনো বিবাদে জড়াই নাই।
সাধু : আমি উহাকে একটি মৎস্য দিলাম এবং সে তাহা আনন্দে খাইল।
চলিত : আমি ওকে একটি মাছ দিলাম এবং সে তা আনন্দে খাল।
সাধু : ব্যাঘ্র দেখিয়া সে ভয়ে কাঁপিতে কাঁপিতে দৌড়াইয়া পলাইল।
চলিত : বাঘ দেখে সে ভয়ে কাঁপতে কাঁপতে দৌড়াইয়া পলাইল।

4. Foreign (not english) word to Bangla standard word
from BanglaWordKit import ForeignToBangla

converter = ForeignToBangla()

test_text = "আমি জলদি সাবান মেখে প্রস্তুত হলাম, কারণ আদালতে আমার একটি জরুরি মকদ্দমা আছে।"

print("মূল বাক্য:", test_text)
print("Level 1 (Normal):", converter.convert(test_text, level=1))
print("Level 2 (Formal):", converter.convert(test_text, level=2))
print("Level 3 (Archaic):", converter.convert(test_text, level=3))

Output:
মূল বাক্য: আমি জলদি সাবান মেখে প্রস্তুত হলাম, কারণ আদালতে আমার একটি জরুরি মকদ্দমা আছে।
Level 1 (Normal): আমি দ্রুত সাবান মেখে প্রস্তুত হলাম, কারণ আদালতে আমার একটি আবশ্যক মকদ্দমা আছে।
Level 2 (Formal): আমি দ্রুত সাবান মেখে প্রস্তুত হলাম, কারণ বিচারালয়ে আমার একটি আবশ্যক মামলা আছে।
Level 3 (Archaic): আমি দ্রুত মলিনানাশক মেখে প্রস্তুত হলাম, কারণ বিচারালয়ে আমার একটি আবশ্যক মামলা আছে।

5. Conversion of Baghara (idioms) word to standard Bangla word:
from BanglaWordKit import BanglaBagdharaConverter

bagdhara_transformar = BanglaBagdharaConverter()
text = "এইটুকু ছেলের কথা শুনে আমার তো আক্কেল গুড়ুম।"
result = bagdhara_transformar.transform(text)
print("ফলাফল:", result)

Output:
ফলাফল: এইটুকু ছেলের কথা শুনে আমার তো স্তম্ভিত।



🧪 Running Tests
To ensure everything is working correctly, run the test suite:
python -m unittest discover tests

🤝 Contributing
Contributions are welcome! If you want to add new words to the dataset or improve the logic:

1. Fork the Project.

2. Create your Feature Branch (git checkout -b feature/NewModule).

3. Commit your changes (git commit -m 'Add some NewModule').

4. Push to the Branch (git push origin feature/NewModule).

5. Open a Pull Request.

📄 License
Distributed under the MIT License. See LICENSE for more information.

✉️ Contact
Your Name: Rejaul Karim
GitHub :reja273
Email: reja86305@gmail.com

Author(Just creator)
~Rejaul Karim

## 🔗 Links
- **GitHub Repository**: [https://github.com/reja273/BanglaWordKit](https://github.com/reja273/BanglaWordKit)
- **PyPI Package**: [https://pypi.org/project/BanglaWordKit/](https://pypi.org/project/BanglaWordKit/)

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

banglawordkit-0.1.5.tar.gz (56.5 kB view details)

Uploaded Source

Built Distribution

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

banglawordkit-0.1.5-py3-none-any.whl (61.4 kB view details)

Uploaded Python 3

File details

Details for the file banglawordkit-0.1.5.tar.gz.

File metadata

  • Download URL: banglawordkit-0.1.5.tar.gz
  • Upload date:
  • Size: 56.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for banglawordkit-0.1.5.tar.gz
Algorithm Hash digest
SHA256 d43043330b6a7b80bd0c05e6e46b7a4d002ba0375e022f479c1ad96df1d457c2
MD5 812a3fd389c6f7d12c4e7967ab769362
BLAKE2b-256 352c1541a6db9bb50979f35b2f06bd2d96b0a90bbf1252f48d8a0d0ebd20d92b

See more details on using hashes here.

File details

Details for the file banglawordkit-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: banglawordkit-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 61.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for banglawordkit-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 14f8b2ca2aa0c1fac637bcbeb0c721f5abef9b063c401d57e3018cd1901d07dd
MD5 a43fa50673a3d9d56f5c51e16f2f23ba
BLAKE2b-256 69c2fd790180cefe88e22020f82961c57aba0b48d75fd4d9c78071f1888674a9

See more details on using hashes here.

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