ssctopper/generators/gk_generator.py

355 lines
25 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
"""
General Awareness Question Generator for SSC CGL.
Generates ~20,000+ questions from curated fact banks covering History, Geography,
Polity, Economics, Science, and Static GK.
"""
import random
import sys
import os
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
from generators.base import make_question, get_qtid, get_db, insert_questions_batch
SUBJECT = "General Awareness"
# ============ FACT BANKS ============
ANCIENT_INDIA = [
("The Indus Valley Civilization was discovered in", "1921", ["1911", "1931", "1901"]),
("Harappa was discovered by", "Daya Ram Sahni", ["R.D. Banerji", "John Marshall", "Mortimer Wheeler"]),
("Mohenjo-daro was discovered by", "R.D. Banerji", ["Daya Ram Sahni", "John Marshall", "Alexander Cunningham"]),
("The Great Bath was found at", "Mohenjo-daro", ["Harappa", "Lothal", "Kalibangan"]),
("The founder of the Maurya dynasty was", "Chandragupta Maurya", ["Ashoka", "Bindusara", "Bimbisara"]),
("Ashoka embraced Buddhism after the battle of", "Kalinga", ["Hydaspes", "Plassey", "Panipat"]),
("The author of Arthashastra was", "Kautilya", ["Kalidasa", "Banabhatta", "Vishakhadatta"]),
("Who was the court poet of Chandragupta Vikramaditya?", "Kalidasa", ["Banabhatta", "Harisena", "Amarsimha"]),
("The capital of the Chola dynasty was", "Thanjavur", ["Madurai", "Kanchipuram", "Hampi"]),
("The Iron Pillar at Delhi was erected by", "Chandragupta II", ["Ashoka", "Kanishka", "Samudragupta"]),
("Nalanda University was founded by", "Kumaragupta I", ["Ashoka", "Harsha", "Chandragupta II"]),
("The Gupta period is known as the", "Golden Age of India", ["Silver Age", "Bronze Age", "Iron Age"]),
("Sangam literature belongs to", "Tamil Nadu", ["Kerala", "Karnataka", "Andhra Pradesh"]),
("The first Jain council was held at", "Pataliputra", ["Vaishali", "Rajgir", "Vallabhi"]),
("Gautama Buddha attained enlightenment at", "Bodh Gaya", ["Sarnath", "Kushinagar", "Lumbini"]),
("The Ajanta caves are famous for", "Paintings", ["Sculptures", "Architecture", "Inscriptions"]),
("Who built the Sanchi Stupa?", "Ashoka", ["Kanishka", "Harsha", "Chandragupta"]),
("The Vedic period is divided into how many parts?", "Two (Early and Later)", ["Three", "Four", "Five"]),
("The oldest Veda is", "Rigveda", ["Samaveda", "Yajurveda", "Atharvaveda"]),
("Alexander invaded India in", "326 BC", ["321 BC", "331 BC", "316 BC"]),
]
MEDIEVAL_INDIA = [
("The Delhi Sultanate was established in", "1206", ["1192", "1210", "1290"]),
("Who founded the Mughal Empire in India?", "Babur", ["Akbar", "Humayun", "Shah Jahan"]),
("The Battle of Panipat (1526) was fought between", "Babur and Ibrahim Lodi", ["Akbar and Hemu", "Babur and Rana Sanga", "Humayun and Sher Shah"]),
("Taj Mahal was built by", "Shah Jahan", ["Akbar", "Jahangir", "Aurangzeb"]),
("Akbar founded the religion", "Din-i-Ilahi", ["Islam", "Sikhism", "Jainism"]),
("The court language of the Mughals was", "Persian", ["Urdu", "Arabic", "Hindi"]),
("Who built the Red Fort in Delhi?", "Shah Jahan", ["Akbar", "Aurangzeb", "Babur"]),
("The last Mughal emperor was", "Bahadur Shah Zafar", ["Aurangzeb", "Shah Alam II", "Muhammad Shah"]),
("Sher Shah Suri introduced", "Rupee coin", ["Gold coin", "Copper coin", "Silver coin"]),
("Who built Qutub Minar?", "Qutb-ud-din Aibak", ["Iltutmish", "Alauddin Khilji", "Muhammad Tughlaq"]),
("The Bhakti movement was started by", "Ramanuja", ["Kabir", "Nanak", "Tulsidas"]),
("Vijayanagara Empire was founded by", "Harihara and Bukka", ["Krishna Deva Raya", "Rama Raya", "Sangama"]),
("The capital of Vijayanagara was", "Hampi", ["Thanjavur", "Madurai", "Warangal"]),
("Who introduced the Mansabdari system?", "Akbar", ["Babur", "Shah Jahan", "Aurangzeb"]),
("The famous poet Amir Khusrau was associated with", "Alauddin Khilji", ["Akbar", "Babur", "Iltutmish"]),
]
MODERN_INDIA = [
("Who is known as the Father of the Nation?", "Mahatma Gandhi", ["Jawaharlal Nehru", "Subhas Chandra Bose", "B.R. Ambedkar"]),
("The first war of Indian Independence was in", "1857", ["1847", "1867", "1877"]),
("Who gave the slogan 'Do or Die'?", "Mahatma Gandhi", ["Subhas Chandra Bose", "Bal Gangadhar Tilak", "Bhagat Singh"]),
("The Indian National Congress was founded in", "1885", ["1875", "1895", "1905"]),
("Who founded the Indian National Congress?", "A.O. Hume", ["Dadabhai Naoroji", "Surendranath Banerjee", "W.C. Bonnerjee"]),
("The Jallianwala Bagh massacre occurred in", "1919", ["1920", "1918", "1921"]),
("The Salt March took place in", "1930", ["1929", "1931", "1932"]),
("India gained independence on", "15 August 1947", ["26 January 1947", "15 August 1946", "26 January 1950"]),
("Who was the first President of India?", "Dr. Rajendra Prasad", ["Dr. S. Radhakrishnan", "Jawaharlal Nehru", "B.R. Ambedkar"]),
("Who was the first Prime Minister of India?", "Jawaharlal Nehru", ["Sardar Patel", "Dr. Rajendra Prasad", "Mahatma Gandhi"]),
("The Quit India Movement was launched in", "1942", ["1940", "1943", "1945"]),
("Who gave the slogan 'Jai Hind'?", "Subhas Chandra Bose", ["Mahatma Gandhi", "Jawaharlal Nehru", "Bhagat Singh"]),
("The Rowlatt Act was passed in", "1919", ["1918", "1920", "1921"]),
("The Non-Cooperation Movement was launched in", "1920", ["1919", "1921", "1922"]),
("Who was known as the Iron Man of India?", "Sardar Vallabhbhai Patel", ["Subhas Chandra Bose", "Bhagat Singh", "Lal Bahadur Shastri"]),
("The Partition of Bengal took place in", "1905", ["1903", "1907", "1909"]),
("Who founded the Arya Samaj?", "Swami Dayanand Saraswati", ["Swami Vivekananda", "Raja Ram Mohan Roy", "Ramakrishna"]),
("The Lucknow Pact was signed in", "1916", ["1915", "1917", "1918"]),
("Who wrote 'Vande Mataram'?", "Bankim Chandra Chattopadhyay", ["Rabindranath Tagore", "Kazi Nazrul Islam", "Sarojini Naidu"]),
("Who composed the National Anthem of India?", "Rabindranath Tagore", ["Bankim Chandra", "Sarojini Naidu", "Muhammad Iqbal"]),
]
GEOGRAPHY_FACTS = [
("The largest continent by area is", "Asia", ["Africa", "North America", "Europe"]),
("The longest river in the world is", "Nile", ["Amazon", "Yangtze", "Mississippi"]),
("The highest peak in the world is", "Mount Everest", ["K2", "Kangchenjunga", "Lhotse"]),
("The largest ocean is", "Pacific Ocean", ["Atlantic Ocean", "Indian Ocean", "Arctic Ocean"]),
("The largest desert in the world is", "Sahara", ["Arabian", "Gobi", "Kalahari"]),
("The longest river in India is", "Ganga", ["Godavari", "Krishna", "Brahmaputra"]),
("The highest peak in India is", "Kangchenjunga", ["Nanda Devi", "K2", "Annapurna"]),
("Which state in India has the longest coastline?", "Gujarat", ["Maharashtra", "Tamil Nadu", "Andhra Pradesh"]),
("The Tropic of Cancer passes through how many Indian states?", "8", ["6", "7", "9"]),
("The largest freshwater lake in India is", "Wular Lake", ["Dal Lake", "Chilika Lake", "Loktak Lake"]),
("Which Indian state is known as the 'Spice Garden of India'?", "Kerala", ["Karnataka", "Tamil Nadu", "Goa"]),
("The Western Ghats are also known as", "Sahyadri", ["Vindhya", "Aravalli", "Nilgiri"]),
("The northernmost point of India is", "Indira Col", ["Kanyakumari", "Rann of Kutch", "Indira Point"]),
("Which river is known as the 'Sorrow of Bengal'?", "Damodar", ["Hooghly", "Teesta", "Mahanadi"]),
("The largest state in India by area is", "Rajasthan", ["Madhya Pradesh", "Maharashtra", "Uttar Pradesh"]),
("The Thar Desert is located in", "Rajasthan", ["Gujarat", "Haryana", "Punjab"]),
("The capital of Arunachal Pradesh is", "Itanagar", ["Shillong", "Imphal", "Kohima"]),
("Chilika Lake is located in", "Odisha", ["Andhra Pradesh", "Tamil Nadu", "Kerala"]),
("The Deccan Plateau lies in", "Southern India", ["Northern India", "Eastern India", "Western India"]),
("The soil best suited for cotton cultivation is", "Black soil", ["Red soil", "Alluvial soil", "Laterite soil"]),
]
POLITY_FACTS = [
("The Constitution of India came into effect on", "26 January 1950", ["15 August 1947", "26 November 1949", "15 August 1950"]),
("How many Fundamental Rights are there?", "6", ["5", "7", "8"]),
("Right to Education was added by which amendment?", "86th Amendment", ["42nd Amendment", "44th Amendment", "91st Amendment"]),
("The Preamble declares India as a", "Sovereign Socialist Secular Democratic Republic", ["Federal Republic", "Parliamentary Republic", "Constitutional Monarchy"]),
("Who is known as the Father of Indian Constitution?", "Dr. B.R. Ambedkar", ["Jawaharlal Nehru", "Mahatma Gandhi", "Rajendra Prasad"]),
("The total number of members in Lok Sabha is", "545", ["250", "500", "552"]),
("Rajya Sabha members are elected for", "6 years", ["5 years", "4 years", "3 years"]),
("The minimum age to become President of India is", "35 years", ["25 years", "30 years", "40 years"]),
("The Chief Justice of India is appointed by", "The President", ["The Prime Minister", "The Parliament", "The Law Minister"]),
("Which Article deals with the Right to Equality?", "Article 14", ["Article 19", "Article 21", "Article 32"]),
("Article 21 deals with", "Right to Life and Personal Liberty", ["Right to Freedom", "Right to Equality", "Right against Exploitation"]),
("The Directive Principles are in which Part of the Constitution?", "Part IV", ["Part III", "Part V", "Part VI"]),
("How many schedules are there in the Indian Constitution?", "12", ["8", "10", "14"]),
("The Vice President is the ex-officio Chairman of", "Rajya Sabha", ["Lok Sabha", "Parliament", "NITI Aayog"]),
("Emergency provisions are in which Article?", "Article 352", ["Article 356", "Article 360", "Article 370"]),
("The 73rd Amendment is related to", "Panchayati Raj", ["Municipal Corporation", "Fundamental Rights", "DPSP"]),
("Who appoints the Governor of a state?", "The President", ["The Prime Minister", "The Chief Minister", "The Parliament"]),
("The Finance Commission is appointed every", "5 years", ["3 years", "4 years", "6 years"]),
("Judicial review is the power of", "Supreme Court", ["Parliament", "President", "Prime Minister"]),
("The CAG is appointed by", "The President", ["The Prime Minister", "The Parliament", "The Finance Minister"]),
]
ECONOMICS_FACTS = [
("The Reserve Bank of India was established in", "1935", ["1947", "1950", "1921"]),
("The current GST council is chaired by", "Union Finance Minister", ["Prime Minister", "RBI Governor", "Revenue Secretary"]),
("Which Five Year Plan focused on rapid industrialization?", "Second Five Year Plan", ["First Plan", "Third Plan", "Fourth Plan"]),
("NITI Aayog was established in", "2015", ["2014", "2016", "2017"]),
("NITI Aayog replaced", "Planning Commission", ["Finance Commission", "UGC", "UPSC"]),
("GDP stands for", "Gross Domestic Product", ["Grand Domestic Product", "General Domestic Product", "Gross Development Product"]),
("The fiscal year in India starts from", "April 1", ["January 1", "March 1", "July 1"]),
("WTO was established in", "1995", ["1947", "1991", "2000"]),
("IMF headquarters is in", "Washington D.C.", ["New York", "Geneva", "London"]),
("World Bank headquarters is in", "Washington D.C.", ["New York", "Geneva", "Paris"]),
("BRICS includes India, Brazil, Russia, China and", "South Africa", ["Sri Lanka", "Singapore", "Saudi Arabia"]),
("National income is calculated by", "Central Statistics Office", ["RBI", "NITI Aayog", "Finance Ministry"]),
("The first bank in India was", "Bank of Hindustan", ["State Bank of India", "Bank of Bombay", "RBI"]),
("SBI was formed from", "Imperial Bank of India", ["Bank of Bengal", "Bank of Bombay", "Bank of Madras"]),
("Repo rate is the rate at which", "RBI lends to commercial banks", ["Banks lend to public", "Government borrows", "FDI flows"]),
("CRR stands for", "Cash Reserve Ratio", ["Central Reserve Ratio", "Cash Recovery Rate", "Credit Reserve Ratio"]),
("The currency of Japan is", "Yen", ["Yuan", "Won", "Baht"]),
("Which organization gives the 'Ease of Doing Business' ranking?", "World Bank", ["IMF", "WTO", "UN"]),
("Make in India was launched in", "2014", ["2015", "2016", "2013"]),
("Digital India was launched in", "2015", ["2014", "2016", "2017"]),
]
SCIENCE_FACTS = [
("The SI unit of force is", "Newton", ["Joule", "Watt", "Pascal"]),
("The speed of light is approximately", "3 × 10⁸ m/s", ["3 × 10⁶ m/s", "3 × 10¹⁰ m/s", "3 × 10⁵ m/s"]),
("The chemical formula of water is", "H₂O", ["H₂O₂", "HO₂", "H₃O"]),
("Photosynthesis occurs in", "Chloroplast", ["Mitochondria", "Ribosome", "Nucleus"]),
("The powerhouse of the cell is", "Mitochondria", ["Nucleus", "Ribosome", "Chloroplast"]),
("The hardest natural substance is", "Diamond", ["Quartz", "Topaz", "Ruby"]),
("The chemical symbol for gold is", "Au", ["Ag", "Fe", "Go"]),
("Blood is purified in", "Kidneys", ["Liver", "Heart", "Lungs"]),
("The largest organ of the human body is", "Skin", ["Liver", "Brain", "Heart"]),
("The total number of bones in an adult human body is", "206", ["208", "204", "210"]),
("Vitamin C deficiency causes", "Scurvy", ["Rickets", "Beriberi", "Night blindness"]),
("Vitamin D deficiency causes", "Rickets", ["Scurvy", "Beriberi", "Pellagra"]),
("The gas responsible for global warming is", "Carbon dioxide", ["Oxygen", "Nitrogen", "Hydrogen"]),
("Sound travels fastest in", "Solids", ["Liquids", "Gases", "Vacuum"]),
("The pH of pure water is", "7", ["5", "8", "6"]),
("Newton's first law is also known as", "Law of Inertia", ["Law of Acceleration", "Law of Action-Reaction", "Law of Gravity"]),
("The center of an atom is called", "Nucleus", ["Electron", "Proton", "Neutron"]),
("Insulin is produced by", "Pancreas", ["Liver", "Kidney", "Thyroid"]),
("The boiling point of water is", "100°C", ["90°C", "110°C", "120°C"]),
("The chemical formula of common salt is", "NaCl", ["KCl", "NaOH", "HCl"]),
("The study of fungi is called", "Mycology", ["Zoology", "Botany", "Virology"]),
("The gas used in fire extinguishers is", "CO₂", ["O₂", "N₂", "H₂"]),
("The lightest gas is", "Hydrogen", ["Helium", "Oxygen", "Nitrogen"]),
("The element with atomic number 1 is", "Hydrogen", ["Helium", "Lithium", "Carbon"]),
("Malaria is caused by", "Plasmodium", ["Bacteria", "Virus", "Fungus"]),
("The human heart has how many chambers?", "4", ["2", "3", "5"]),
("The instrument used to measure atmospheric pressure is", "Barometer", ["Thermometer", "Hygrometer", "Anemometer"]),
("Who discovered Penicillin?", "Alexander Fleming", ["Louis Pasteur", "Edward Jenner", "Robert Koch"]),
("The study of earthquake is called", "Seismology", ["Geology", "Volcanology", "Meteorology"]),
("DNA stands for", "Deoxyribonucleic Acid", ["Deoxyribose Nucleic Acid", "Dinucleic Acid", "Deoxyribo Amino Acid"]),
]
COMPUTER_FACTS = [
("The full form of CPU is", "Central Processing Unit", ["Central Program Unit", "Computer Processing Unit", "Central Process Utility"]),
("RAM stands for", "Random Access Memory", ["Read Access Memory", "Random Alloc Memory", "Read All Memory"]),
("The father of computers is", "Charles Babbage", ["Alan Turing", "John von Neumann", "Tim Berners-Lee"]),
("HTML stands for", "HyperText Markup Language", ["HyperText Machine Language", "High Text Markup Language", "Hyper Transfer Markup Language"]),
("Which shortcut key is used to copy?", "Ctrl + C", ["Ctrl + V", "Ctrl + X", "Ctrl + Z"]),
("Which shortcut key is used to undo?", "Ctrl + Z", ["Ctrl + Y", "Ctrl + X", "Ctrl + C"]),
("The brain of the computer is", "CPU", ["RAM", "Hard Disk", "Monitor"]),
("1 KB equals", "1024 bytes", ["1000 bytes", "512 bytes", "2048 bytes"]),
("An IP address is used to", "Identify a device on a network", ["Store data", "Display web pages", "Send emails"]),
("HTTP stands for", "HyperText Transfer Protocol", ["High Text Transfer Protocol", "Hyper Transfer Text Protocol", "HyperText Transport Protocol"]),
("The extension of a Word document is", ".docx", [".xlsx", ".pptx", ".pdf"]),
("Which software is used for spreadsheets?", "MS Excel", ["MS Word", "MS PowerPoint", "MS Access"]),
("A computer virus is a", "Malicious software program", ["Hardware defect", "Network issue", "Browser plugin"]),
("Wi-Fi stands for", "Wireless Fidelity", ["Wireless Finder", "Wide Fidelity", "Wired Fidelity"]),
("The first search engine on the internet was", "Archie", ["Google", "Yahoo", "Bing"]),
("URL stands for", "Uniform Resource Locator", ["Universal Resource Link", "Uniform Retrieval Locator", "Universal Resource Locator"]),
("LAN stands for", "Local Area Network", ["Large Area Network", "Long Access Network", "Local Access Network"]),
("Which key is used to refresh a web page?", "F5", ["F1", "F2", "F12"]),
("The default file extension for Excel is", ".xlsx", [".docx", ".pptx", ".csv"]),
("Phishing is a type of", "Cyber fraud", ["Computer virus", "Software update", "Network protocol"]),
]
STATIC_GK = [
("The national bird of India is", "Peacock", ["Sparrow", "Parrot", "Eagle"]),
("The national animal of India is", "Tiger", ["Lion", "Elephant", "Leopard"]),
("The national flower of India is", "Lotus", ["Rose", "Jasmine", "Sunflower"]),
("The national game of India is", "Hockey", ["Cricket", "Football", "Badminton"]),
("The national fruit of India is", "Mango", ["Apple", "Banana", "Guava"]),
("The national river of India is", "Ganga", ["Yamuna", "Godavari", "Brahmaputra"]),
("India's national currency is", "Indian Rupee", ["Dollar", "Pound", "Euro"]),
("World Environment Day is celebrated on", "June 5", ["March 22", "April 22", "October 16"]),
("International Women's Day is observed on", "March 8", ["February 14", "May 1", "June 21"]),
("World Health Day is celebrated on", "April 7", ["March 7", "May 7", "June 7"]),
("Teachers' Day in India is celebrated on", "September 5", ["November 14", "October 2", "January 26"]),
("Children's Day in India is celebrated on", "November 14", ["September 5", "October 2", "January 26"]),
("Republic Day is celebrated on", "January 26", ["August 15", "October 2", "November 14"]),
("Who wrote the book 'Wings of Fire'?", "A.P.J. Abdul Kalam", ["Jawaharlal Nehru", "Mahatma Gandhi", "R.K. Narayan"]),
("Who wrote 'Discovery of India'?", "Jawaharlal Nehru", ["Mahatma Gandhi", "Rabindranath Tagore", "S. Radhakrishnan"]),
("The Nobel Prize for Literature was won by Rabindranath Tagore in", "1913", ["1910", "1920", "1930"]),
("The Olympic Games are held every", "4 years", ["2 years", "3 years", "5 years"]),
("The headquarters of UN is in", "New York", ["Geneva", "London", "Washington D.C."]),
("Who was the first Indian woman to win an Olympic medal?", "Karnam Malleswari", ["P.T. Usha", "Saina Nehwal", "Mary Kom"]),
("The Booker Prize is associated with", "Literature", ["Science", "Peace", "Economics"]),
("The Grammy Award is associated with", "Music", ["Films", "Literature", "Sports"]),
("The first Indian satellite was", "Aryabhata", ["Bhaskara", "INSAT-1A", "Rohini"]),
("ISRO headquarters is in", "Bengaluru", ["Chennai", "Hyderabad", "New Delhi"]),
("Who was the first Indian in space?", "Rakesh Sharma", ["Kalpana Chawla", "Sunita Williams", "Ravish Malhotra"]),
("The Bharat Ratna is the highest", "Civilian award", ["Military award", "Sports award", "Literary award"]),
]
GOVT_SCHEMES = [
("Swachh Bharat Mission was launched in", "2014", ["2015", "2016", "2013"]),
("Pradhan Mantri Jan Dhan Yojana provides", "Bank accounts for all", ["Free healthcare", "Education scholarship", "Housing"]),
("Ayushman Bharat scheme provides", "Health insurance coverage", ["Bank accounts", "Education", "Housing"]),
("PM Kisan scheme provides", "₹6000 per year to farmers", ["Free seeds", "Loan waiver", "Insurance"]),
("Beti Bachao Beti Padhao focuses on", "Girl child welfare and education", ["Boy child education", "Senior citizens", "Farmers"]),
("Start-up India was launched in", "2016", ["2015", "2017", "2014"]),
("Skill India Mission aims at", "Training youth in skills", ["Providing jobs", "Building schools", "Health camps"]),
("MUDRA scheme provides", "Loans for small businesses", ["Education loans", "Home loans", "Car loans"]),
("Ujjwala Yojana provides", "Free LPG connections", ["Free electricity", "Free water", "Free internet"]),
("Atal Pension Yojana is for", "Retirement pension for unorganized sector", ["Health insurance", "Education", "Housing"]),
]
SPORTS_FACTS = [
("The Cricket World Cup 2023 was held in", "India", ["England", "Australia", "South Africa"]),
("The FIFA World Cup 2022 was held in", "Qatar", ["Russia", "Brazil", "Japan"]),
("The Ranji Trophy is associated with", "Cricket", ["Football", "Hockey", "Tennis"]),
("The Davis Cup is associated with", "Tennis", ["Cricket", "Football", "Badminton"]),
("The Thomas Cup is associated with", "Badminton", ["Tennis", "Table Tennis", "Cricket"]),
("The Durand Cup is the oldest football tournament in", "Asia", ["Europe", "Africa", "South America"]),
("Wimbledon is played on", "Grass court", ["Clay court", "Hard court", "Carpet court"]),
("A marathon race covers a distance of", "42.195 km", ["40 km", "45 km", "50 km"]),
("The term 'Grand Slam' is used in", "Tennis", ["Cricket", "Football", "Hockey"]),
("How many players are there in a cricket team?", "11", ["9", "13", "15"]),
("How many players are there in a football team?", "11", ["9", "13", "15"]),
("The term 'Checkmate' is used in", "Chess", ["Cricket", "Football", "Hockey"]),
("The Summer Olympics 2024 was held in", "Paris", ["Tokyo", "Los Angeles", "London"]),
("Who holds the record for most centuries in international cricket?", "Sachin Tendulkar", ["Virat Kohli", "Ricky Ponting", "Kumar Sangakkara"]),
("The Dronacharya Award is given to", "Sports coaches", ["Players", "Scientists", "Teachers"]),
]
def _generate_from_facts(conn, facts, subtopic, topic, qtype_name, multiplier=3):
"""Generate questions from a fact bank with variations."""
questions = []
qtid = get_qtid(conn, SUBJECT, subtopic, topic, qtype_name)
if not qtid:
return questions
for _ in range(len(facts) * multiplier):
q_text, correct, wrongs = random.choice(facts)
difficulty = random.choice([1, 1, 2])
questions.append(make_question(qtid, q_text, correct, wrongs, f"Answer: {correct}", difficulty))
return questions
def gen_history(conn, count_per=600):
q = []
q.extend(_generate_from_facts(conn, ANCIENT_INDIA, "History", "Ancient India", "Who/What/When", 50))
q.extend(_generate_from_facts(conn, MEDIEVAL_INDIA, "History", "Medieval India", "Who/What/When", 50))
q.extend(_generate_from_facts(conn, MODERN_INDIA, "History", "Modern India", "Freedom fighter identification", 50))
return q
def gen_geography(conn, count=2000):
return _generate_from_facts(conn, GEOGRAPHY_FACTS, "Geography", "Indian Geography", "River system", 130)
def gen_polity(conn, count=2000):
return _generate_from_facts(conn, POLITY_FACTS, "Indian Polity", "Indian Constitution", "Article identification", 130)
def gen_economics(conn, count=2000):
return _generate_from_facts(conn, ECONOMICS_FACTS, "Economics", "Indian Economy Basics", "Economic indicator", 130)
def gen_science(conn, count=3000):
return _generate_from_facts(conn, SCIENCE_FACTS, "Science", "Physics", "Law/principle identification", 135)
def gen_computer(conn, count=2000):
return _generate_from_facts(conn, COMPUTER_FACTS, "Science", "Computer Awareness", "Term definition", 100)
def gen_static_gk(conn, count=2000):
return _generate_from_facts(conn, STATIC_GK, "Static GK", "National Symbols and Firsts", "Identify symbol", 80)
def gen_schemes(conn, count=1000):
return _generate_from_facts(conn, GOVT_SCHEMES, "Economics", "Government Schemes", "Scheme objective", 100)
def gen_sports(conn, count=1000):
return _generate_from_facts(conn, SPORTS_FACTS, "Static GK", "Sports", "Trophy-sport", 70)
def generate_all(conn):
"""Generate all General Awareness questions."""
generators = [
("History", gen_history),
("Geography", gen_geography),
("Polity", gen_polity),
("Economics", gen_economics),
("Science", gen_science),
("Computer Awareness", gen_computer),
("Static GK", gen_static_gk),
("Govt Schemes", gen_schemes),
("Sports", gen_sports),
]
total = 0
all_questions = []
for name, gen_func in generators:
questions = gen_func(conn)
all_questions.extend(questions)
print(f" {name}: {len(questions)} questions")
total += len(questions)
batch_size = 5000
for i in range(0, len(all_questions), batch_size):
insert_questions_batch(conn, all_questions[i:i+batch_size])
print(f" TOTAL General Awareness: {total}")
return total
if __name__ == '__main__':
conn = get_db()
print("Generating General Awareness questions...")
generate_all(conn)
conn.close()