Generative AI is like a creative machine, using data to dream up new things! It can write poems, paint pictures, even compose music. Imagine: feeding it words and getting a story back, or showing it a sketch and having it design a building! It's still young, but its potential is mind-blowing.
Import necessary libraries.
To generate the summary for the Urdu language, I have trained an LLM model. Here are the steps you can follow to train your own Generative AI model for summarization.
Install required packages.
pip install transformers[torch] datasets==2.14.5 evaluate rouge_score --quiet
from datasets import load_dataset
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer, GenerationConfig, TrainingArguments, Trainer
import torch
import time
import evaluate
import pandas as pd
import numpy as np
Load Dataset
huggingface_dataset_name = "mirfan899/usummary"
dataset = load_dataset(huggingface_dataset_name)
Load pretrained LLM model
model_name='bigscience/mt0-small'
original_model = AutoModelForSeq2SeqLM.from_pretrained(model_name, torch_dtype=torch.bfloat16)
tokenizer = AutoTokenizer.from_pretrained(model_name)
Test zero shot inference on LLM
dialogue = "سرکاری عمارتوں پر قبضے کا واقعہ اس وقت پیش آیا ہے جب ایک روز قبل ہی روس کی حمایت کرنے والوں اور یوکرین کے نئے رہنما کے حمایتوں کے درمیان تصادم ہوا حکام کے مطابق کرائمیا کے دارالحکومت سمفروپول میں مسلح افراد نے سرکاری عمارتوں پر قبضہ کر کے روسی جھنڈا لہرا دیا ہے۔ مقامی حکومت کا کہنا ہے کہ وہ مسلح افراد کے ساتھ مذاکرات کر رہی ہے۔ سرکاری عمارتوں پر قبضے کا واقعہ اس وقت پیش آیا ہے جب ایک روز قبل ہی روس کی حمایت کرنے والوں اور یوکرین کے نئے رہنما کے حمایتوں کے درمیان تصادم ہوا۔ خیال رہے کہ یوکرین میں روسی زبان بولنے والے متعدد افراد نے یانوکووچ کی برطرفی اور ملک میں یورپ کی جانب جھکاؤ رکھنے والی انتظامیہ لانے کی مخالفت کی تھی۔ دوسری جانب روس بھی یوکرین میں ہونے والی تبدیلیوں کی وجہ سے ناراض ہے، تاہم وزیرِ خارجہ سرگے لاوروف کا کہنا ہے کہ ان کا ملک یوکرین کے معاملات میں مداخلت نہیں کرے گا۔ سرگے لاوروف نے منگل کو ماسکو میں میڈیا سے بات کرتے ہوئے کہا دوسرے ممالک یوکرین کی صورتِ حال سے فائدہ اٹھانے کی کوشش نہ کریں تاہم ان کا یہ بھی کہنا تھا کہ روس یوکرین میں عدم مداخلت کی پالیسی پر کاربند رہے گا۔ یوکرین میں کئی ماہ تک جاری رہنے والے عوامی احتجاج کے بعد سنیچر کو پارلیمان کے اراکین نے صدر یانوکووچ کے مواخذے کے لیے ووٹ ڈالا تھا۔ یوکرین میں حکومت مخالف مظاہرے گذشتہ سال نومبر میں اس وقت شروع ہوئے تھے جب صدر یانوکووچ نے یورپی یونین کے ساتھ ایک تجارتی معاہدے کو مسترد کرتے ہوئے روس کے ساتھ تجارتی معاہدے کو ترجیح دی تھی۔ ان پرتشدد مظاہروں کے نتیجے میں درجنوں افراد ہلاک ہو گئے تھے۔"
summary = "یوکرین کے حکام کا کہنا ہے کہ روسی اکثریت والے کرائمیا میں مسلح افراد نے سرکاری عمارتوں پر قبضہ کر لیا ہے جس کے بعد سکیورٹی فورسز کو الرٹ کر دیا گیا ہے۔"
prompt = f"""
Summarize the following news article:
{dialogue}
Summary:
"""
inputs = tokenizer(prompt, return_tensors='pt')
output = tokenizer.decode(
original_model.generate(
inputs["input_ids"],
max_new_tokens=200,
)[0],
skip_special_tokens=True
)
dash_line = '-'.join('' for x in range(100))
print(dash_line)
print(f'INPUT PROMPT:\n{prompt}')
print(dash_line)
print(f'BASELINE HUMAN SUMMARY:\n{summary}\n')
print(dash_line)
print(f'MODEL GENERATION - ZERO SHOT:\n{output}')
Here is output
--------------------------------------------------------------------------------------------------- INPUT PROMPT: Summarize the following news article: سرکاری عمارتوں پر قبضے کا واقعہ اس وقت پیش آیا ہے جب ایک روز قبل ہی روس کی حمایت کرنے والوں اور یوکرین کے نئے رہنما کے حمایتوں کے درمیان تصادم ہوا حکام کے مطابق کرائمیا کے دارالحکومت سمفروپول میں مسلح افراد نے سرکاری عمارتوں پر قبضہ کر کے روسی جھنڈا لہرا دیا ہے۔ مقامی حکومت کا کہنا ہے کہ وہ مسلح افراد کے ساتھ مذاکرات کر رہی ہے۔ سرکاری عمارتوں پر قبضے کا واقعہ اس وقت پیش آیا ہے جب ایک روز قبل ہی روس کی حمایت کرنے والوں اور یوکرین کے نئے رہنما کے حمایتوں کے درمیان تصادم ہوا۔ خیال رہے کہ یوکرین میں روسی زبان بولنے والے متعدد افراد نے یانوکووچ کی برطرفی اور ملک میں یورپ کی جانب جھکاؤ رکھنے والی انتظامیہ لانے کی مخالفت کی تھی۔ دوسری جانب روس بھی یوکرین میں ہونے والی تبدیلیوں کی وجہ سے ناراض ہے، تاہم وزیرِ خارجہ سرگے لاوروف کا کہنا ہے کہ ان کا ملک یوکرین کے معاملات میں مداخلت نہیں کرے گا۔ سرگے لاوروف نے منگل کو ماسکو میں میڈیا سے بات کرتے ہوئے کہا دوسرے ممالک یوکرین کی صورتِ حال سے فائدہ اٹھانے کی کوشش نہ کریں تاہم ان کا یہ بھی کہنا تھا کہ روس یوکرین میں عدم مداخلت کی پالیسی پر کاربند رہے گا۔ یوکرین میں کئی ماہ تک جاری رہنے والے عوامی احتجاج کے بعد سنیچر کو پارلیمان کے اراکین نے صدر یانوکووچ کے مواخذے کے لیے ووٹ ڈالا تھا۔ یوکرین میں حکومت مخالف مظاہرے گذشتہ سال نومبر میں اس وقت شروع ہوئے تھے جب صدر یانوکووچ نے یورپی یونین کے ساتھ ایک تجارتی معاہدے کو مسترد کرتے ہوئے روس کے ساتھ تجارتی معاہدے کو ترجیح دی تھی۔ ان پرتشدد مظاہروں کے نتیجے میں درجنوں افراد ہلاک ہو گئے تھے۔ Summary: --------------------------------------------------------------------------------------------------- BASELINE HUMAN SUMMARY: یوکرین کے حکام کا کہنا ہے کہ روسی اکثریت والے کرائمیا میں مسلح افراد نے سرکاری عمارتوں پر قبضہ کر لیا ہے جس کے بعد سکیورٹی فورسز کو الرٹ کر دیا گیا ہے۔ --------------------------------------------------------------------------------------------------- MODEL GENERATION - ZERO SHOT: روسی حکومت نے روسی زبان بولنے والے متعدد افراد کو روسی جھنڈا لہرا دیا ہے۔
Train the model
max_length = 512
def tokenize_function(example):
start_prompt = "Summarize the following news article.\n\n"
end_prompt = "\n\nSummary: "
prompt = [start_prompt + dialogue + end_prompt for dialogue in example["summary"]]
example['input_ids'] = tokenizer(prompt, padding='max_length', truncation=True, max_length=max_length, return_tensors="pt").input_ids
example['labels'] = tokenizer(example["summary"], padding='max_length', truncation=True, max_length=max_length, return_tensors="pt").input_ids
return example
tokenized_datasets = dataset.map(tokenize_function, batched=True)
tokenized_datasets = tokenized_datasets.remove_columns(['id', 'url', "title", 'text', 'summary'])
training_args = TrainingArguments(
"umts",
evaluation_strategy="epoch",
save_strategy="epoch",
learning_rate=1e-5,
num_train_epochs=4,
weight_decay=0.01,
push_to_hub=False,
save_total_limit=1,
per_device_train_batch_size=4,
per_device_eval_batch_size=4
)
trainer = Trainer(
model=original_model,
args=training_args,
train_dataset=tokenized_datasets['train'],
eval_dataset=tokenized_datasets['validation']
)
trainer.train()
It will take a few hours to train the model. After training, you can use your model for testing.
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer, GenerationConfig, TrainingArguments, Trainer
model_name='mirfan899/umts'
original_model = AutoModelForSeq2SeqLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
dialogue = "سرکاری عمارتوں پر قبضے کا واقعہ اس وقت پیش آیا ہے جب ایک روز قبل ہی روس کی حمایت کرنے والوں اور یوکرین کے نئے رہنما کے حمایتوں کے درمیان تصادم ہوا حکام کے مطابق کرائمیا کے دارالحکومت سمفروپول میں مسلح افراد نے سرکاری عمارتوں پر قبضہ کر کے روسی جھنڈا لہرا دیا ہے۔ مقامی حکومت کا کہنا ہے کہ وہ مسلح افراد کے ساتھ مذاکرات کر رہی ہے۔ سرکاری عمارتوں پر قبضے کا واقعہ اس وقت پیش آیا ہے جب ایک روز قبل ہی روس کی حمایت کرنے والوں اور یوکرین کے نئے رہنما کے حمایتوں کے درمیان تصادم ہوا۔ خیال رہے کہ یوکرین میں روسی زبان بولنے والے متعدد افراد نے یانوکووچ کی برطرفی اور ملک میں یورپ کی جانب جھکاؤ رکھنے والی انتظامیہ لانے کی مخالفت کی تھی۔ دوسری جانب روس بھی یوکرین میں ہونے والی تبدیلیوں کی وجہ سے ناراض ہے، تاہم وزیرِ خارجہ سرگے لاوروف کا کہنا ہے کہ ان کا ملک یوکرین کے معاملات میں مداخلت نہیں کرے گا۔ سرگے لاوروف نے منگل کو ماسکو میں میڈیا سے بات کرتے ہوئے کہا دوسرے ممالک یوکرین کی صورتِ حال سے فائدہ اٹھانے کی کوشش نہ کریں تاہم ان کا یہ بھی کہنا تھا کہ روس یوکرین میں عدم مداخلت کی پالیسی پر کاربند رہے گا۔ یوکرین میں کئی ماہ تک جاری رہنے والے عوامی احتجاج کے بعد سنیچر کو پارلیمان کے اراکین نے صدر یانوکووچ کے مواخذے کے لیے ووٹ ڈالا تھا۔ یوکرین میں حکومت مخالف مظاہرے گذشتہ سال نومبر میں اس وقت شروع ہوئے تھے جب صدر یانوکووچ نے یورپی یونین کے ساتھ ایک تجارتی معاہدے کو مسترد کرتے ہوئے روس کے ساتھ تجارتی معاہدے کو ترجیح دی تھی۔ ان پرتشدد مظاہروں کے نتیجے میں درجنوں افراد ہلاک ہو گئے تھے۔"
summary = "یوکرین کے حکام کا کہنا ہے کہ روسی اکثریت والے کرائمیا میں مسلح افراد نے سرکاری عمارتوں پر قبضہ کر لیا ہے جس کے بعد سکیورٹی فورسز کو الرٹ کر دیا گیا ہے۔"
prompt = f"""
مندرجہ ذیل متن کا خلاصہ کریں۔
{dialogue}
خلاصہ:
"""
inputs = tokenizer(prompt, return_tensors='pt')
output = tokenizer.decode(
original_model.generate(
inputs["input_ids"],
max_new_tokens=200,
)[0],
skip_special_tokens=True
)
dash_line = '-'.join('' for x in range(100))
print(dash_line)
print(f'INPUT PROMPT:\n{prompt}')
print(dash_line)
print(f'BASELINE HUMAN SUMMARY:\n{summary}\n')
print(dash_line)
print(f'MODEL GENERATION - ZERO SHOT:\n{output}')
Here is output---------------------------------------------------------------------------------------------------
INPUT PROMPT:
مندرجہ ذیل متن کا خلاصہ کریں۔
سرکاری عمارتوں پر قبضے کا واقعہ اس وقت پیش آیا ہے جب ایک روز قبل ہی روس کی حمایت کرنے والوں اور یوکرین کے نئے رہنما کے حمایتوں کے درمیان تصادم ہوا حکام کے مطابق کرائمیا کے دارالحکومت سمفروپول میں مسلح افراد نے سرکاری عمارتوں پر قبضہ کر کے روسی جھنڈا لہرا دیا ہے۔ مقامی حکومت کا کہنا ہے کہ وہ مسلح افراد کے ساتھ مذاکرات کر رہی ہے۔ سرکاری عمارتوں پر قبضے کا واقعہ اس وقت پیش آیا ہے جب ایک روز قبل ہی روس کی حمایت کرنے والوں اور یوکرین کے نئے رہنما کے حمایتوں کے درمیان تصادم ہوا۔ خیال رہے کہ یوکرین میں روسی زبان بولنے والے متعدد افراد نے یانوکووچ کی برطرفی اور ملک میں یورپ کی جانب جھکاؤ رکھنے والی انتظامیہ لانے کی مخالفت کی تھی۔ دوسری جانب روس بھی یوکرین میں ہونے والی تبدیلیوں کی وجہ سے ناراض ہے، تاہم وزیرِ خارجہ سرگے لاوروف کا کہنا ہے کہ ان کا ملک یوکرین کے معاملات میں مداخلت نہیں کرے گا۔ سرگے لاوروف نے منگل کو ماسکو میں میڈیا سے بات کرتے ہوئے کہا دوسرے ممالک یوکرین کی صورتِ حال سے فائدہ اٹھانے کی کوشش نہ کریں تاہم ان کا یہ بھی کہنا تھا کہ روس یوکرین میں عدم مداخلت کی پالیسی پر کاربند رہے گا۔ یوکرین میں کئی ماہ تک جاری رہنے والے عوامی احتجاج کے بعد سنیچر کو پارلیمان کے اراکین نے صدر یانوکووچ کے مواخذے کے لیے ووٹ ڈالا تھا۔ یوکرین میں حکومت مخالف مظاہرے گذشتہ سال نومبر میں اس وقت شروع ہوئے تھے جب صدر یانوکووچ نے یورپی یونین کے ساتھ ایک تجارتی معاہدے کو مسترد کرتے ہوئے روس کے ساتھ تجارتی معاہدے کو ترجیح دی تھی۔ ان پرتشدد مظاہروں کے نتیجے میں درجنوں افراد ہلاک ہو گئے تھے۔
خلاصہ:
---------------------------------------------------------------------------------------------------
BASELINE HUMAN SUMMARY:
یوکرین کے حکام کا کہنا ہے کہ روسی اکثریت والے کرائمیا میں مسلح افراد نے سرکاری عمارتوں پر قبضہ کر لیا ہے جس کے بعد سکیورٹی فورسز کو الرٹ کر دیا گیا ہے۔
---------------------------------------------------------------------------------------------------
MODEL GENERATION - ZERO SHOT:
روسی زبان بولنے والے افراد نے سرکاری عمارتوں پر قبضہ کر روسی جھنڈا لہرا دیا ہے۔
Comments
Post a Comment