项目作者: Foysal87

项目描述 :
Bangla NLP toolkit.
高级语言: Python
项目地址: git://github.com/Foysal87/bn_nlp.git
创建时间: 2020-11-09T19:05:54Z
项目社区:https://github.com/Foysal87/bn_nlp

开源协议:

下载


bn_nlp

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

what will you get here?

Required package(python 3.7)

  • numpy
  • scipy

Dataset

  • Bangla word Count(6,15,621++)
  • Bangla root Word count (83,665)
  • Bangla Stop Word(356++)
  • Bangla Suffix (100++)
  • Bangla root word Postag count(1,33,973++)
  • Bangla word2Vec embedding(7,25,061)
  • Bangla NER tag(4,08,837++)

‘++’ sign means data will increase later \
Must Download Word2Vec from google drive or it will make error

Punctuation Remove

  1. from bn_nlp.preprocessing import ban_processing
  2. bp=ban_processing()
  3. text="সড়কের ‘কারণে’ বৃহস্পতিবার দেখা গেল পুরো এলাকা ‘হাবুডুবু’ খাচ্ছে অথৈ পানিতে।"
  4. print(bp.punctuation_remove(text))

output

  1. সড়কের কারণে বৃহস্পতিবার দেখা গেল পুরো এলাকা হাবুডুবু খাচ্ছে অথৈ পানিতে

Stopword removal

Remove some constant word from sentence. you can find those word in ‘stop_word.txt’.

  1. from bn_nlp.preprocessing import ban_processing
  2. bp=ban_processing()
  3. text="সড়কের ‘কারণে’ বৃহস্পতিবার দেখা গেল পুরো এলাকা ‘হাবুডুবু’ খাচ্ছে অথৈ পানিতে।"
  4. print(bp.stop_word_remove(text))

output

  1. সড়কের ‘কারণে’ বৃহস্পতিবার পুরো এলাকা ‘হাবুডুবু’ খাচ্ছে অথৈ পানিতে।

Stopword add

Add word in stopword list

  1. from bn_nlp.preprocessing import ban_processing
  2. bp=ban_processing()
  3. text="সড়কের ‘কারণে’ বৃহস্পতিবার দেখা গেল পুরো এলাকা ‘হাবুডুবু’ খাচ্ছে অথৈ পানিতে।"
  4. bp.add_stopword('সড়কের')
  5. print(bp.stop_word_remove(text))

output

  1. ‘কারণে’ বৃহস্পতিবার পুরো এলাকা ‘হাবুডুবু’ খাচ্ছে অথৈ পানিতে।

Dust Removal

Everything will remove from word with out bangla character

  1. from bn_nlp.preprocessing import ban_processing
  2. bp=ban_processing()
  3. text="সড়কের12A'--,.:Bকারণে"
  4. print(bp.dust_removal(text))

output

  1. সড়কেরকারণে

Word Normalize

similar vowel defines same character for better accuracy.

  1. from bn_nlp.preprocessing import ban_processing
  2. bp=ban_processing()
  3. text="অসহনীয় ভারী বর্ষণে"
  4. print(bp.word_normalize(text))

output

  1. অসহনিয় ভারি বর্ষণে

Bangla word to english equivalent word conversion

  1. from bn_nlp.preprocessing import ban_processing
  2. bp=ban_processing()
  3. text="রাজধানী"
  4. print(bp.bn2enCon(text))

output

  1. rajadhani

Bangla word Sort according to english alphabet

  1. from bn_nlp.preprocessing import ban_processing
  2. bp=ban_processing()
  3. vec=['১', 'ঘণ্টার', 'ভারী' ,'বর্ষণে', 'সোমবার', 'রাজধানীর', 'বিভিন্ন', 'এলাকায়', 'জলাবদ্ধতা', 'দেখা', 'দেয়']
  4. print(bp.bn_word_sort(vec))

output

  1. ['১', 'ভারী', 'বিভিন্ন', 'বর্ষণে', 'দেখা', 'দেয়', 'এলাকায়', 'ঘণ্টার', 'জলাবদ্ধতা', 'রাজধানীর', 'সোমবার']

Bangla word Sort according to bangla alphabet

  1. from bn_nlp.preprocessing import ban_processing
  2. bp=ban_processing()
  3. vec=['১', 'ঘণ্টার', 'ভারী' ,'বর্ষণে', 'সোমবার', 'রাজধানীর', 'বিভিন্ন', 'এলাকায়', 'জলাবদ্ধতা', 'দেখা', 'দেয়']
  4. print(bp.bn_word_sort_bn_sys(vec))

output

  1. ['এলাকায়', 'ঘণ্টার', 'জলাবদ্ধতা', 'দেখা', 'দেয়', 'বিভিন্ন', 'বর্ষণে', 'ভারী', 'রাজধানীর', 'সোমবার', '১']

Bangla Basic word tokenizer

  1. from bn_nlp.tokenizer import wordTokenizer
  2. wordtoken=wordTokenizer()
  3. text="১ ঘণ্টার ভারী বর্ষণে সোমবার রাজধানীর বিভিন্ন এলাকায় জলাবদ্ধতা দেখা দেয়"
  4. print(wordtoken.basic_tokenizer(text))

output

  1. ['১', 'ঘণ্টার', 'ভারী', 'বর্ষণে', 'সোমবার', 'রাজধানীর', 'বিভিন্ন', 'এলাকায়', 'জলাবদ্ধতা', 'দেখা', 'দেয়']

Bangla Normalize word tokenizer

  1. from bn_nlp.tokenizer import wordTokenizer
  2. wordtoken=wordTokenizer()
  3. text="১ ঘণ্টার ভারী বর্ষণে সোমবার রাজধানীর বিভিন্ন এলাকায় জলাবদ্ধতা দেখা দেয়"
  4. print(wordtoken.normalize_tokenizer(text))

output

  1. ['১', 'ঘণ্টার', 'ভারি', 'বর্ষণে', 'সোমবার', 'রাজধানির', 'বিভিন্ন', 'এলাকায়', 'জলাবদ্ধতা', 'দেখা', 'দেয়']

Bangla Basic Sentence tokenizer

  1. from bn_nlp.tokenizer import sentenceTokenizer
  2. senttoken=sentenceTokenizer()
  3. text="ভোগান্তিতে পড়েন নগরবাসী। ব্যাহত হয় যান চলাচল। গতকাল সকালবেলা ছিল অসহনীয় গরম।"
  4. print(senttoken.basic_tokenizer(text))

output

  1. ['ভোগান্তিতে পড়েন নগরবাসী', ' ব্যাহত হয় যান চলাচল', ' গতকাল সকালবেলা ছিল অসহনীয় গরম']

Bangla Normalize Sentence tokenizer

No Dust. No punctuation. Normalize words.

  1. from bn_nlp.tokenizer import sentenceTokenizer
  2. senttoken=sentenceTokenizer()
  3. text="ভোগান্তিতে পড়েন নগরবাসী। ব্যাহত হয় যান চলাচল। গতকাল সকালবেলা ছিল অসহনীয় গরম।"
  4. print(senttoken.basic_tokenizer(text))

output

  1. ['ভোগান্তিতে পড়েন নগরবাসি', 'ব্যাহত হয় যান চলাচল', 'গতকাল সকালবেলা ছিল অসহনিয় গরম']

Bangla Word Checker

Is this word exist in bangla dictionary?

  1. from bn_nlp.Stemmer import stemmerOP
  2. stemmer=stemmerOP()
  3. text="ভোগান্তিতে"
  4. print(stemmer.search(text))

output

  1. True

Bangla word Stemmer

finding root word.

  1. from bn_nlp.Stemmer import stemmerOP
  2. stemmer=stemmerOP()
  3. text="ভোগান্তিতে"
  4. print(stemmer.stem(text))
  5. text="ভোগান্তিতে পড়েন নগরবাসী"
  6. print(stemmer.stemSent(text))

output

  1. ভোগান্তি
  2. ভোগান্তি পড় নগরবাসি

Bangla word2vec embedding

pretrained word2vec embedding download link:

After downloading, paste this file in bn_nlp directory.

  1. from bn_nlp.word2vec_embedding import word2vec
  2. w2v=word2vec()
  3. text="বর্ষণে"
  4. print(w2v.closure_word(text,5))
  5. text2="বৃষ্টি"
  6. print(w2v.dist(text,text2))
  7. # you can get embedding vector by calling 'w2v.embedding_vec'

output

  1. ['বর্ষণে', 'বৃষ্টিপাতে', 'বৃষ্টিতে', 'কালবৈশাখী', 'জলোচ্ছ্বাসে']
  2. 26.64097023010254

Bangla sent2sent embedding/similiarty from word2vec

Less value closure similarity. Built from word2vec. you can make embedding vector from similarity.
I directly implement dist, cause we basically need distance.

  1. from bn_nlp.sent2sent_embedding import sent2sent
  2. s2s=sent2sent()
  3. text1="আমি ভাত খাই"
  4. text2="আমি পাস্তা খেতে চাই"
  5. print(s2s.dist(text1,text2))
  6. # 'sent2sent_dist' function takes vector and gives 2D array with every sent to other sent dist

output

  1. 37.503074645996094

Bangla Word Postag

  1. from bn_nlp.posTag import postag
  2. tagger=postag()
  3. text="সড়কের ‘কারণে’ বৃহস্পতিবার দেখা গেল পুরো এলাকা ‘হাবুডুবু’ খাচ্ছে অথৈ পানিতে।"
  4. print(tagger.tag(text))

Output

  1. [('সড়ক', 'noun'), ('কারণে', 'preposition'), ('বৃহস্পতিবার', 'noun'), ('দেখা', 'verb'), ('গেল', 'verb'), ('পুরো', 'verb'), ('এলাকা', 'noun'), ('হাবুডুবু', 'noun'), ('খাচ্ছে', 'verb'), ('অথৈ', 'adverb'), ('পানি', 'noun')]

Bangla Word NER

Good accuracy for single entity.

  1. from bn_nlp.NER import UncustomizeNER
  2. ner=UncustomizeNER()
  3. text="আর্জেন্টিনা দক্ষিণ আমেরিকার একটি রাষ্ট্র। বুয়েনোস আইরেস দেশটির বৃহত্তম শহর ও রাজধানী।"
  4. print(ner.NER(text))

output

  1. {'আর্জেন্টিনা': 'LOC', 'দক্ষিণ আমেরিকার': 'LOC', 'রাষ্ট্র': 'LOC', 'বুয়েনোস আইরেস': 'PER', 'দেশটির': 'LOC', 'বৃহত্তম শহর': 'LOC'}

Thank you

Let’s make better resources for Bangla