Advertisement
mahmud11556

thesis output

Mar 9th, 2025
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 8.90 KB | None | 0 0
  1. import torch
  2. from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
  3.  
  4.  
  5. device = "cuda" if torch.cuda.is_available() else "CPU"
  6.  
  7.  
  8. model_name1 = "mhdank/t5-paraphrase_finetuned"
  9. model1 = AutoModelForSeq2SeqLM.from_pretrained(model_name1)
  10. tokenizer1 = AutoTokenizer.from_pretrained(model_name1)
  11.  
  12. def generate_paraphrase1(text, max_length=128, num_return_sequences=1, num_beams=5):
  13.     # Tokenize input
  14.     inputs = tokenizer1(text, return_tensors="pt", truncation=True, padding="max_length", max_length=max_length).to(device)
  15.  
  16.     # Generate paraphrase
  17.     outputs = model1.generate(
  18.         **inputs,
  19.         max_length=max_length,
  20.         num_return_sequences=num_return_sequences,
  21.         num_beams=num_beams
  22.     )
  23.  
  24.     # Decode and return results
  25.     paraphrased_texts = [tokenizer1.decode(output, skip_special_tokens=True) for output in outputs]
  26.     return paraphrased_texts
  27.  
  28.  
  29.  
  30.  
  31. english_to_bangla = {
  32.     'b': 'বি',
  33.     'c': 'সি',
  34.     'd': 'ডি',
  35.     'l': 'এল',
  36.     'm': 'এম',
  37.     'n': 'এন',
  38.     'p': 'পি',
  39.     'q': 'কিউ',
  40.     'x': 'এক্স',
  41.     'y': 'ওয়াই'
  42. }
  43.  
  44.  
  45.  
  46.  
  47. named_entities = [
  48.     "বিকাশ",  # Mobile Financial Service
  49.     "নগদ",   # Mobile Financial Service
  50.     "বিপিডিবি",  # Bangladesh Power Development Board
  51.     "ডেসকো",  # Dhaka Electric Supply Company
  52.     "পল্লী বিদ্যুৎ",  # Rural Electrification Board
  53.     "রবি",  # Telecom Operator
  54.     "গ্রামীণফোন",  # Telecom Operator
  55.     "সোনালী ব্যাংক",  # State-Owned Bank
  56.     "জনতা ব্যাংক",  # State-Owned Bank
  57.     "দারাজ"  # E-commerce Platform
  58. ]
  59.  
  60.  
  61.  
  62. # Sample sentences for testing
  63. sample_sentences = [
  64.     # ওয়াইআমার চলতি মাসের বিদ্যুৎ বিল কত?",
  65.     " বিকাশ দিয়ে বিদ্যুৎ বিল পরিশোধ করা যাবে কি?",
  66.      "নগদ এর মাধ্যমে বিদ্যুৎ বিল দিতে চাই ।",
  67.     # "ডেসকো বিল পেমেন্টের রশিদ কোথায় পাবো?",
  68.      "বিপিডিবি বিল জমা দিয়েছি, কিন্তু সংযোগ চালু হয়নি ।",
  69.     # "প্রিপেইড মিটার রিচার্জ করা যাবে কোন মাধ্যমে?",
  70.     # "আমার বিদ্যুৎ বিল পেমেন্টের ট্রানজেকশন নম্বর হারিয়ে গেছে, এখন কি করবো?",
  71.     # "পল্লী বিদ্যুৎ বিল অনলাইনে পরিশোধ করা যাবে কি?",
  72.     # "বিকাশে বিল জমা দেওয়ার পর কতক্ষণ সময় লাগে আপডেট হতে?",
  73.     # "পেয়নিয়ার এর মাধ্যমে বিল পরিশোধ করা যাবে কি?",
  74.     # "নতুন বিদ্যুৎ সংযোগের আবেদন করতে হলে কি করতে হবে?",
  75.     # "ডেসকো সংযোগের জন্য কি কি কাগজপত্র লাগবে?",
  76.     # "বিপিডিবি নতুন সংযোগের জন্য কত টাকা লাগে?",
  77.     # "পল্লী বিদ্যুৎ সংযোগের জন্য আবেদন কোথায় করবো?",
  78.     # "সংযোগের অগ্রগতি জানতে কাকে যোগাযোগ করবো?",
  79.     # "নতুন সংযোগ পেতে কতদিন সময় লাগে?",
  80.     # "সংযোগ বাতিল করতে হলে কি প্রক্রিয়া অনুসরণ করতে হবে?",
  81.     # "কমার্শিয়াল সংযোগের আবেদন করতে হলে কি আলাদা প্রক্রিয়া আছে?",
  82.     # "বিদ্যুৎ সংযোগের নামে ঠিকানা পরিবর্তন করা যাবে কি?",
  83.     # "মিটার রিডিং ভুল হলে কোথায় অভিযোগ করবো?",
  84.     # "আমার এলাকায় কখন বিদ্যুৎ আসবে?",
  85.     # "বিদ্যুৎ চলে গেছে, অভিযোগ কোথায় জানাবো?",
  86.     # "আজকের লোডশেডিং শিডিউল কোথায় পাবো?",
  87.     # "বিদ্যুৎ বিভ্রাটের কারণে ফ্রিজ নষ্ট হয়েছে, ক্ষতিপূরণের জন্য কোথায় অভিযোগ জানাবো?",
  88.     # "পল্লী বিদ্যুৎ এলাকায় লোডশেডিং কতক্ষণ থাকবে?",
  89.     # "ডেসকো বিদ্যুৎ বিভ্রাটের অভিযোগ কোথায় জানানো যায়?",
  90.     # "বিদ্যুৎ না থাকলে কোন নম্বরে কল করবো?",
  91.     # "লোডশেডিং প্রতিরোধে কি ব্যবস্থা নেয়া হচ্ছে?",
  92.     # "বিপিডিবি  এর জরুরি হটলাইন নম্বর কত?",
  93.     # "পল্লী বিদ্যুতে বিদ্যুৎ ফিরে আসতে কত সময় লাগে?",
  94.     # "ডেসকো এর বিরুদ্ধে অভিযোগ কিভাবে দায়ের করবো?",
  95.     # "বিল বেশি এসেছে, কোথায় জানাবো?",
  96.     # "পল্লী বিদ্যুৎ মিটারের বিল ভুল হলে কার সাথে যোগাযোগ করবো?",
  97.     # "বিদ্যুৎ লাইনের তার ছিঁড়ে গেছে, দ্রুত সমাধানের জন্য কোথায় কল করবো?"
  98. ]
  99.  
  100.  
  101.  
  102. # # Example sentences
  103. # sentences = [
  104. #     "বিকাশ দিয়ে নগদ বিদ্যুৎ বিল পরিশোধ করা যাবে কি?",
  105. #     "আমি ডেসকো, পল্লী বিদ্যুৎ, এবং বিপিডিবি এর মাধ্যমে বিদ্যুৎ সংযোগ নেবো, এবং বিল পরিশোধ করতে বিকাশ অথবা নগদ ব্যবহার করব।",
  106. #     # "নগদ এর মাধ্যমে বিদ্যুৎ বিল দিতে চাই ।",
  107. #     # "বিপিডিবি বিল জমা দিয়েছি, কিন্তু সংযোগ চালু হয়নি ।"
  108. # ]
  109.  
  110.  
  111.  
  112.  
  113. import re
  114.  
  115.  
  116. def replace_named_entities(sentence):
  117.     replacements = []
  118.     placeholder_map = {}  # To map each entity to its unique placeholder
  119.    
  120.     # Iterate through the named entities
  121.     for idx, entity in enumerate(named_entities):
  122.         if entity in sentence:
  123.             # Use a unique placeholder for each entity
  124.             placeholder = list(english_to_bangla.values())[idx % len(english_to_bangla)]
  125.             # Ensure that the entity is replaced with its corresponding placeholder
  126.             sentence = sentence.replace(entity, placeholder)
  127.             replacements.append(f"{placeholder} : {entity}")
  128.    
  129.     return sentence, replacements
  130.  
  131.  
  132. def restore_named_entities(paraphrases, replacements):
  133.     restored_paraphrases = []
  134.  
  135.     for para in paraphrases:
  136.         restored_para = para  # Start with the original paraphrase
  137.  
  138.         for replacement in replacements:
  139.             placeholder, original_entity = replacement.split(" : ")
  140.  
  141.             # Replace only standalone placeholders 'বি' and not attached to other words
  142.             # We use lookahead and lookbehind assertions to ensure the placeholder is surrounded by spaces or punctuation
  143.             restored_para = re.sub(rf'(?<!\w){re.escape(placeholder)}(?!\w)', original_entity, restored_para)
  144.  
  145.         restored_paraphrases.append(restored_para)
  146.  
  147.     return restored_paraphrases
  148.  
  149.  
  150.  
  151.  
  152.  
  153. # Processing each sentence
  154. for sentence in sample_sentences:
  155.     print("-" * 50)
  156.     print(f"🔹 Original: {sentence}")
  157.    
  158.     replaced_sentence, replacements = replace_named_entities(sentence)
  159.    
  160.     # print(f"🔹 Replaced Sentence: {replaced_sentence}")
  161.     # print(f"🔹 Replacements: {replacements}")
  162.    
  163.     paraphrases = generate_paraphrase1(replaced_sentence, num_return_sequences=3)
  164.  
  165.    
  166.     # Restoring original named entities in paraphrases
  167.     paraphrases = restore_named_entities(paraphrases, replacements)
  168.    
  169.     for i, para in enumerate(paraphrases, 1):
  170.         print(f"    ✅ Paraphrase {i}: {para}")
  171.  
  172.  
  173.  
  174.  
  175.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement