Bangla NLP toolkit.
Bangla NLP toolkit. This toolkit was fully made by dataset and pretrained. This is version 2.0(Summarizer and Paper will come next version). You can use it now.
This repository was made Public at 29,jan 2020
‘++’ sign means data will increase later \
Must Download Word2Vec from google drive or it will make error
from bn_nlp.preprocessing import ban_processing
bp=ban_processing()
text="সড়কের ‘কারণে’ বৃহস্পতিবার দেখা গেল পুরো এলাকা ‘হাবুডুবু’ খাচ্ছে অথৈ পানিতে।"
print(bp.punctuation_remove(text))
output
সড়কের কারণে বৃহস্পতিবার দেখা গেল পুরো এলাকা হাবুডুবু খাচ্ছে অথৈ পানিতে
Remove some constant word from sentence. you can find those word in ‘stop_word.txt’.
from bn_nlp.preprocessing import ban_processing
bp=ban_processing()
text="সড়কের ‘কারণে’ বৃহস্পতিবার দেখা গেল পুরো এলাকা ‘হাবুডুবু’ খাচ্ছে অথৈ পানিতে।"
print(bp.stop_word_remove(text))
output
সড়কের ‘কারণে’ বৃহস্পতিবার পুরো এলাকা ‘হাবুডুবু’ খাচ্ছে অথৈ পানিতে।
Add word in stopword list
from bn_nlp.preprocessing import ban_processing
bp=ban_processing()
text="সড়কের ‘কারণে’ বৃহস্পতিবার দেখা গেল পুরো এলাকা ‘হাবুডুবু’ খাচ্ছে অথৈ পানিতে।"
bp.add_stopword('সড়কের')
print(bp.stop_word_remove(text))
output
‘কারণে’ বৃহস্পতিবার পুরো এলাকা ‘হাবুডুবু’ খাচ্ছে অথৈ পানিতে।
Everything will remove from word with out bangla character
from bn_nlp.preprocessing import ban_processing
bp=ban_processing()
text="সড়কের12A'--,.:Bকারণে"
print(bp.dust_removal(text))
output
সড়কেরকারণে
similar vowel defines same character for better accuracy.
from bn_nlp.preprocessing import ban_processing
bp=ban_processing()
text="অসহনীয় ভারী বর্ষণে"
print(bp.word_normalize(text))
output
অসহনিয় ভারি বর্ষণে
from bn_nlp.preprocessing import ban_processing
bp=ban_processing()
text="রাজধানী"
print(bp.bn2enCon(text))
output
rajadhani
from bn_nlp.preprocessing import ban_processing
bp=ban_processing()
vec=['১', 'ঘণ্টার', 'ভারী' ,'বর্ষণে', 'সোমবার', 'রাজধানীর', 'বিভিন্ন', 'এলাকায়', 'জলাবদ্ধতা', 'দেখা', 'দেয়']
print(bp.bn_word_sort(vec))
output
['১', 'ভারী', 'বিভিন্ন', 'বর্ষণে', 'দেখা', 'দেয়', 'এলাকায়', 'ঘণ্টার', 'জলাবদ্ধতা', 'রাজধানীর', 'সোমবার']
from bn_nlp.preprocessing import ban_processing
bp=ban_processing()
vec=['১', 'ঘণ্টার', 'ভারী' ,'বর্ষণে', 'সোমবার', 'রাজধানীর', 'বিভিন্ন', 'এলাকায়', 'জলাবদ্ধতা', 'দেখা', 'দেয়']
print(bp.bn_word_sort_bn_sys(vec))
output
['এলাকায়', 'ঘণ্টার', 'জলাবদ্ধতা', 'দেখা', 'দেয়', 'বিভিন্ন', 'বর্ষণে', 'ভারী', 'রাজধানীর', 'সোমবার', '১']
from bn_nlp.tokenizer import wordTokenizer
wordtoken=wordTokenizer()
text="১ ঘণ্টার ভারী বর্ষণে সোমবার রাজধানীর বিভিন্ন এলাকায় জলাবদ্ধতা দেখা দেয়"
print(wordtoken.basic_tokenizer(text))
output
['১', 'ঘণ্টার', 'ভারী', 'বর্ষণে', 'সোমবার', 'রাজধানীর', 'বিভিন্ন', 'এলাকায়', 'জলাবদ্ধতা', 'দেখা', 'দেয়']
from bn_nlp.tokenizer import wordTokenizer
wordtoken=wordTokenizer()
text="১ ঘণ্টার ভারী বর্ষণে সোমবার রাজধানীর বিভিন্ন এলাকায় জলাবদ্ধতা দেখা দেয়"
print(wordtoken.normalize_tokenizer(text))
output
['১', 'ঘণ্টার', 'ভারি', 'বর্ষণে', 'সোমবার', 'রাজধানির', 'বিভিন্ন', 'এলাকায়', 'জলাবদ্ধতা', 'দেখা', 'দেয়']
from bn_nlp.tokenizer import sentenceTokenizer
senttoken=sentenceTokenizer()
text="ভোগান্তিতে পড়েন নগরবাসী। ব্যাহত হয় যান চলাচল। গতকাল সকালবেলা ছিল অসহনীয় গরম।"
print(senttoken.basic_tokenizer(text))
output
['ভোগান্তিতে পড়েন নগরবাসী', ' ব্যাহত হয় যান চলাচল', ' গতকাল সকালবেলা ছিল অসহনীয় গরম']
No Dust. No punctuation. Normalize words.
from bn_nlp.tokenizer import sentenceTokenizer
senttoken=sentenceTokenizer()
text="ভোগান্তিতে পড়েন নগরবাসী। ব্যাহত হয় যান চলাচল। গতকাল সকালবেলা ছিল অসহনীয় গরম।"
print(senttoken.basic_tokenizer(text))
output
['ভোগান্তিতে পড়েন নগরবাসি', 'ব্যাহত হয় যান চলাচল', 'গতকাল সকালবেলা ছিল অসহনিয় গরম']
Is this word exist in bangla dictionary?
from bn_nlp.Stemmer import stemmerOP
stemmer=stemmerOP()
text="ভোগান্তিতে"
print(stemmer.search(text))
output
True
finding root word.
from bn_nlp.Stemmer import stemmerOP
stemmer=stemmerOP()
text="ভোগান্তিতে"
print(stemmer.stem(text))
text="ভোগান্তিতে পড়েন নগরবাসী"
print(stemmer.stemSent(text))
output
ভোগান্তি
ভোগান্তি পড় নগরবাসি
pretrained word2vec embedding download link:
After downloading, paste this file in bn_nlp directory.
from bn_nlp.word2vec_embedding import word2vec
w2v=word2vec()
text="বর্ষণে"
print(w2v.closure_word(text,5))
text2="বৃষ্টি"
print(w2v.dist(text,text2))
# you can get embedding vector by calling 'w2v.embedding_vec'
output
['বর্ষণে', 'বৃষ্টিপাতে', 'বৃষ্টিতে', 'কালবৈশাখী', 'জলোচ্ছ্বাসে']
26.64097023010254
Less value closure similarity. Built from word2vec. you can make embedding vector from similarity.
I directly implement dist, cause we basically need distance.
from bn_nlp.sent2sent_embedding import sent2sent
s2s=sent2sent()
text1="আমি ভাত খাই"
text2="আমি পাস্তা খেতে চাই"
print(s2s.dist(text1,text2))
# 'sent2sent_dist' function takes vector and gives 2D array with every sent to other sent dist
output
37.503074645996094
from bn_nlp.posTag import postag
tagger=postag()
text="সড়কের ‘কারণে’ বৃহস্পতিবার দেখা গেল পুরো এলাকা ‘হাবুডুবু’ খাচ্ছে অথৈ পানিতে।"
print(tagger.tag(text))
Output
[('সড়ক', 'noun'), ('কারণে', 'preposition'), ('বৃহস্পতিবার', 'noun'), ('দেখা', 'verb'), ('গেল', 'verb'), ('পুরো', 'verb'), ('এলাকা', 'noun'), ('হাবুডুবু', 'noun'), ('খাচ্ছে', 'verb'), ('অথৈ', 'adverb'), ('পানি', 'noun')]
Good accuracy for single entity.
from bn_nlp.NER import UncustomizeNER
ner=UncustomizeNER()
text="আর্জেন্টিনা দক্ষিণ আমেরিকার একটি রাষ্ট্র। বুয়েনোস আইরেস দেশটির বৃহত্তম শহর ও রাজধানী।"
print(ner.NER(text))
output
{'আর্জেন্টিনা': 'LOC', 'দক্ষিণ আমেরিকার': 'LOC', 'রাষ্ট্র': 'LOC', 'বুয়েনোস আইরেস': 'PER', 'দেশটির': 'LOC', 'বৃহত্তম শহর': 'LOC'}
Thank you
Let’s make better resources for Bangla