|
|
import streamlit as st |
|
|
import torch |
|
|
import time |
|
|
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM |
|
|
import os |
|
|
os.environ["HF_HOME"] = "/tmp/huggingface" |
|
|
|
|
|
|
|
|
st.set_page_config(page_title="Question Generation", layout="wide") |
|
|
|
|
|
st.title('Question Generation in Education :sunglasses:') |
|
|
st.markdown("<br>", unsafe_allow_html=True) |
|
|
|
|
|
subject = st.sidebar.selectbox( |
|
|
"Subjects", |
|
|
("Information Technology", "History", "Geography", "Biology", "Civic Education") |
|
|
) |
|
|
|
|
|
with st.sidebar: |
|
|
method = st.radio( |
|
|
"Choose Method", |
|
|
("Answer agnostic", "Answer aware") |
|
|
) |
|
|
|
|
|
example = st.selectbox( |
|
|
'Choose sample: ', |
|
|
('Example 1', 'Example 2', 'Example 3') |
|
|
) |
|
|
|
|
|
example_data = { |
|
|
"Information Technology": { |
|
|
"Example 1": {"context": "Loại bỏ sự lây nhiễm: Mỗi chương trình diệt virus có cách thức riêng để đối phó với các mối đe dọa hoặc virus được tìm thấy trên máy tính. Nó có thể cách ly các chương trình bị nhiễm trong trường hợp chúng không thực sự là virus, nhầm giúp máy tính hoạt động ổn định hơn. Thông thường, nó sẽ hỏi người dùng có muốn xóa các chương trình bị nhiễm hay không.", "answer": "Thông thường, nó sẽ hỏi người dùng có muốn xóa các chương trình bị nhiễm hay không."}, |
|
|
"Example 2": {"context": "Glow: hiệu ứng chữ phát sáng Bevel: hiệu ứng viền và bề mặt nổi 3D Rotation: hiệu ứng chữ 3D Transform: Tạo kiểu chữ uốn cong Chèn ký tự đặc biệt Chọn tab Insert nhóm Symbols chọn Symbol, chọn ký tự muốn chèn Nếu muốn chọn kiểu ký tự khác, chọn More Symbols…, xuất hiện hộp thoại, trong mục Font: chọn Symbol, Wingdings … Chọn ký tự cần chèn rồi nhấn nút Insert hoặc Nhấp đúp chuột vào ký tự cần chèn. Chèn đối tượng Shapes Chèn Shapes Chọn tab Insert nhóm Illustrations chọn biểu tượng (Shapes), sau đó chọn đối tượng cần chèn Kết quả đối tượng được chèn Thay đổi các định dạng Shapes Chọn đối tượng cần thay đổi, chọn tab Format (Drawing Tools) nhóm Shape Styles chọn biểu tượng mở rộng", "answer": "Hiệu ứng 'Glow' tạo hiệu ứng chữ phát sáng."}, |
|
|
"Example 3": {"context": "Một số phần mềm ứng dụng thông dụng :Một số phần mềm ứng dụng thông dụng hiện nay như: Phần mềm xử lý văn bản, bảng tính, hệ quản trị cơ sở dữ liệu, trình chiếu, thư điện tử, trình duyệt Web và một số phần mềm khác. Trong đó: Phần mềm xử lý văn bản: Là một loại phần mềm được thiết kế để soạn thảo các văn bản điện tử. Có rất nhiều chương trình soạn thảo văn bản khác nhau. Về các phần mềm thương mại, phổ biến nhất là Microsoft Office của Microsoft. Các chương trình soạn thảo văn bản thuộc loại phần mềm nguồn mở thường gặp bao gồm: Writer (trong bộ OpenOffice), KWord (trong môi trường KDE) và AbiWord (trong môi trường GNOME).Ngoài ra, còn có chương trình soạn thảo văn bản trực tuyến như Google Docs. Phần mềm bảng tính: Là một phần mềm ứng dụng dùng để tổ chức, phân tích và lưu trữ dữ liệu thông qua các bảng biểu. Bảng tính được phát triển như là mô phỏng bằng máy tính các bảng tính toán trên giấy. Phần mềm ứng dụng bảng tính phổ biến hiện nay là Microsoft Excel của Microsoft, một số phần mềm nguồn mở như LibreOffice Calc, OpenOffice Calc. Ngoài ra, một số bảng tính dựa trên nền Web như: Google Sheet, Microsoft Excel Online, EditGrid. Hệ quản trị cơ sở dữ liệu (Database Management System DBMS): Là phần mềm hay hệ thống được thiết kế để quản trị một cơ sở dữ liệu.", "answer": "Một số phần mềm bảng tính dựa trên nền Web bao gồm Google Sheet, Microsoft Excel Online, và EditGrid."}, |
|
|
}, |
|
|
"History": { |
|
|
"Example 1": {"context": "Hiệp định Pari năm 1973 về Việt Nam được kí kết, quân Mĩ buộc phải rút khỏi nước ta, làm thay đổi so sánh lực lượng ở miền Nam có lợi cho cách mạng. Miền Bắc trở lại hoà bình, tiến hành khắc phục hậu quả chiến tranh, khôi phục và phát triển kinh tế - xã hội, ra sức chi viện cho tiền tuyến miền Nam. Đến cuối tháng 6 - 1973, miền Bắc căn bản hoàn thành việc tháo gỡ thuỷ lôi, bom mìn do Mĩ thả trên biển, trên sông, bảo đảm đi lại bình thường. Sau hai năm (1973 - 1974), về cơ bản miền Bắc khôi phục xong các cơ sở kinh tế, các hệ thống thuỷ nông, mạng lưới giao thông, các công trình văn hoá, giáo dục, y tế. Kinh tế có bước phát triển. Đến cuối năm 1974, sản xuất công nghiệp, nông nghiệp trên một số mặt quan trọng đã đạt và vượt mức năm 1964 và năm 1971 - hai năm đạt mức cao nhất trong 20 năm xây dựng chủ nghĩa xã hội ở miền Bắc. Tổng sản phẩm xã hội năm 1973 cao hơn năm 1965, năm 1974 cao hơn năm 1973 là 12,4 %. Sản lượng lúa năm 1973 là 5 triệu tấn; đến năm 1974, mạc dù có những khó khăn do thiên tai, miền Bắc cũng đạt được 4,8 triệu tấn. Giá trị tổng sản lượng công nghiệp và thủ công nghiệp năm 1974 tăng 15 % so với năm 1973. Thực hiện nghĩa vụ hậu phương, trong hai năm 1973 - 1974, miền Bắc đưa vào các chiến trường miền Nam, Campuchia, Lào gần 20 vạn bộ đội, hàng vạn thanh niên xung phong, cán bộ chuyện môn, nhân viên kĩ thuật. Đột xuất trong 2 tháng đầu năm 1975, miền Bắc gấp rút đưa vào miền Nam 57 000 bộ đội (trong tổng số 108 000 bộ đội của kế hoạch động viên năm 1975). Về vật chất - kĩ thuật, miền Bắc đã có những nỗ lực phi thường, đáp ứng đầy đủ và kịp thời nhu cầu to lớn và cấp bách của cuộc tổng tiến công chiến lược ở miền Nam. Từ đầu mùa khô 1973 - 1974 đến đầu mùa khô 1974 - 1975, miền Bắc đưa vào chiến trường hơn 26 vạn tấn vũ khí, đạn dược, quân trang, quân dụng, xăng dầu, thuốc men, lương thục, thực phẩm (trong đó có 4,6 vạn tấn vũ khí đạn dược, 12,4 vạn tấn gạo, 3,2 vạn tấn xăng dầu). Chi viện cho miền Nam trong thời kì này, ngoài yêu cầu phục vụ nhiệm vụ chiến đấu tiến tới Tổng tiến công và nổi dậy Xuân 1975, còn phải phục vụ nhiệm vụ xây dụng vùng giải phóng (trên các mặt quốc phòng, kinh tế, giao thông vân tải, văn hoá, giáo dục, y tế) và chuẩn bị cho nhiệm vụ tiếp quản vùng giải phóng sau khi chiến tranh kết thúc.", "answer": "Mĩ"}, |
|
|
"Example 2": {"context": "Nhờ sự phát triển của nền kinh tế nông nghiệp, các cư dân phương Đông đã sớm bước vào xã hội có giai cấp và nhà nước ngay từ buổi đầu của thời đại đồ đồng. Từ thiên niên kỉ IV đến thiên niên kỉ 11 TCN, xã hội có giai cấp và nhà nước đều đã được hình thành ở lưu vực sông Nin, sông Ti-gơ-rơ và ơ-phơ-rát, sông An, sông Hằng và Hoàng Hà. Xã hội có giai cấp và nhà nước được hình thành từ liên minh bộ lạc, tức là nhiều bộ lạc có quan hệ quân thuộc với nhau, liên kết với nhau do nhu cầu trị thuỷ và xây dựng các công trình thuỷ lợi. Nhà nước được lập ra đề điều hành và quản lí xã hội. Cơ cấu bộ máy nhà nước đó mang tính chất của một nhà nước chuyên chế trung ương tập quyền. Đứng đầu nhà nước là vua. đề cai trị nông dân công xã và nô lệ, vua đã dựa vào quý tộc và tôn giáo, bắt mọi người phải phục từng. Vua tự coi mình là người đại diện của thần thánh ở dưới trần gian, người chủ tối cao của đất nước, tự quyết định mọi chính sách và công việc. Vua trở thành vua chuyên chế mà người Ai Cập gọi là Pharaôn (cái nhà lớn), người Lưỡng Hà gọi là Enxi (người đứng đầu), Trung Quốc gọi là Thiên tử (con Trời)...", "answer": "Nhà nước"}, |
|
|
"Example 3": {"context": "Từ cuối năm 1904, nhiều cuộc bãi công và biểu tình của quần chúng đã nổ ra với khẩu hiệu: 'Đả đảo chế độ chuyên chế!', 'Đả đảo chiến tranh!'. Các cuộc đấu tranh của quần chúng đã châm ngòi lửa cho cách mạng. Ngày 9-1-1905, 14 vạn công nhân Xanh Pê-téc-bua và gia đình tay không vũ khí, mang theo cờ và ảnh của Nga hoàng tiến đến Cung điện Mùa Đông để thỉnh cầu Nga hoàng cải thiện đời sống. Nhưng quân đội và cảnh sát đã xả súng vào đoàn biểu tình của quần chúng làm hàng nghìn người chết và bị thương. Đó là 'Ngày chủ nhật đẫm máu'. Lòng tin của nhân dân vào Nga hoàng bị tiêu tan. Công nhân thủ đô bắt đầu dựng chiến lũy, chuẩn bị chiến đấu. Khẩu hiệu 'Đả đảo chế độ chuyên chế!' được truyền đi khắp nơi, một làn sóng bãi công phản đối bùng lên trong cả nước. Chỉ trong tháng 1 - 1905, số người bãi công đã lên tới 44 vạn, nhiều hơn cả số người bãi công của 10 năm trước đó cộng lại.", "answer": "Đả đảo chế độ chuyên chế!"}, |
|
|
}, |
|
|
"Geography": { |
|
|
"Example 1": {"context": "Tuy không có các bãi cá lớn, nổi tiếng, nhưng các tỉnh bắc Trung Bộ đều có khả năng phát triển nghề cá biển. Nghệ An là tỉnh trọng điểm nghề cá của bắc Trung Bộ. Tuy nhiên, do phân lớn tàu thuyền có công suất nhỏ, đành bắt ven bờ là chính, nên ở nhiều nơi nguồn lợi thủy sản có nguy cơ suy giảm rõ rệt. Hiện nay, việc nuôi thủy sản nước lợ, nước mặn được phát triển khá mạnh, đã làm thay đổi khá rõ nét cơ cấu Kinh tế nông thôn ven biển.", "answer": "Nghệ An"}, |
|
|
"Example 2": {"context": "Địa hình: Xâm thực mạnh ở miền đồi núi. Trên các sườn dốc mất lớp phủ thực vật, bề mặt địa hình bị cắt xẻ, đất bị xói mòn, rửa trôi, nhiều nơi trơ sỏi đá. biểu hiện của địa hình xâm thực mạnh còn là những hiện tượng đất trượt, đá lở. ở vùng núi đá vôi hình thành địa hình cacxtơ với các hang động, suối cạn, thung khô. Các vùng thềm phù sa cổ bị chia cắt thành các đồi thấp xen thung lũng rộng. Bồi tụ nhanh ở đồng bằng hạ lưu sông. Hệ quả của quá trình xâm thực, bào mòn mạnh bề mặt địa hình ở miền đồi núi là sự bồi tụ mở mang nhanh chóng các đồng bằng hạ lưu sông. Rìa phía đông nam đồng bằng châu thổ Sông Hồng và phía tây nam đồng bằng châu thổ sông Cửu Long hàng năm lấn ra biển từ vài chục đến gần trăm mét. Có thể nói, quá trình xâm thực bồi tụ là quá trình chính trong sự hình thành và biến đổi địa hình Việt Nam hiện tại. Hãy nêu ảnh hưởng của địa hình xâm thực, bồi tụ mạnh đến việc sử dụng đất ở nước ta.", "answer": "Xâm thực mạnh"}, |
|
|
"Example 3": {"context": "Lớp vỏ địa lí (lớp vỏ cảnh quan) là lớp vỏ của Trái Đất, ờ đó các lớp vỏ bộ phận (khí quyển, thạch quyển, thuỷ quyển, thổ nhưỡng quyển và sinh quyển) xâm nhập và tác động lẫn nhau. Chiều dày của lớp vỏ địa lí khoảng 30 đến 35 km (tính từ giới hạn dưới của lớp ô dôn đến đáy vực thẳm đại dương; ở lục địa xuống hết lớp vỏ phong hoá).Những hiện tượng và quá trình tự nhiên xảy ra trong lớp vỏ địa lí đều do các quy luật tự nhiên chi phối, dưới đây là một số quy luật quan trọng nhất.", "answer": "30 đến 35 km"}, |
|
|
}, |
|
|
"Biology": { |
|
|
"Example 1": {"context": "Sự tăng số lượng cá thể vi sinh vật được xem là sự sinh sản, hình thức sinh sản của vi sinh vật nhân sơ và vi sinh vật nhân thực có những nét khác nhau. Vi khuẩn sinh sản chủ yếu bằng cách phân đôi. Khi hấp thụ và đồng hoá chất dinh dưỡng, tế bào vi khuẩn tăng kích thước do sinh khối tăng và dẫn đến sự phân chia, ở giai đoạn này màng sinh chất gấp nếp (gọi là mêzôxôm). Vòng ADN của vi khuẩn sẽ lấy các nếp gấp trên màng sinh chất làm điểm tựa đính vào để nhân đôi, đồng thời thành tế bào hình thành vách ngăn để tạo ra 2 tế bào vi khuẩn mới từ một tế bào.", "answer": "phân đôi"}, |
|
|
"Example 2": {"context": "Quang hợp quyết định khoảng 90 - 95% năng suất cây trồng, phần còn lại 5 - 10% là các chất dinh dưỡng khoáng. Một số khái niệm liên quan đến năng suất cây trồng: Năng suất sinh học là tổng lượng chất khô tích luỹ được mỗi ngày trên 1 ha gieo trồng trong suốt thời gian sinh trưởng. Năng suất kinh tế là một phần của năng suất sinh học được tích luỹ trong các cơ quan (hạt, củ, quả, lá...) chứa các sản phẩm có giá trị kinh tế đối với con người của từng loài cây. Ví dụ, ở các loài cây trồng họ Hòa thảo, phần vật chất khô của hạt trong tổng khối lượng khô của các cơ quan trên mặt đất vào thời điểm thu hoạch biến động trong giới hạn từ 25% (các giống ngô, lúa mì đen) đến 50% (cây lúa), ở cây họ Đậu: khoảng từ 30% (cây đậu tương) đến 60% (đậu cô ve). Bằng con đường chọn lọc về sự phân bố các chất đồng hoá vào hạt, người ta đã thành công trong việc nâng cao phần khối lượng của hạt trong tổng khối lượng của cây ngô từ 24% đến 47%, ở cây lúa từ 43% đến 57%.", "answer": "90 - 95%"}, |
|
|
"Example 3": {"context": "Hiện nay có 2 giả thuyết về địa điểm phát sinh loài người. Một giả thuyết mang tên “ra đi từ châu Phi” cho rằng loài người, H. sapiens, được hình thành từ loài H. erectus ở châu Phi, sau đó phát tán sang các châu lục khác. Một giả thuyết khác cho rằng loài H. erectus di cư từ châu Phi sang các châu lục khác, rồi từ nhiều nơi khác nhau, loài H. erectus tiến hoá thành H. sapiens. Đông Nam Á cũng được xem như là cái nôi phát sinh ra loài người. Năm 2004, các nhà khoa học đã phát hiện ra hoá thạch của loài người lùn nhỏ bé (H. floresiensis) tồn tại cách đây khoảng 18000 năm trên một hòn đảo của Inđônêxia. Loài người này chỉ cao khoảng 1m và được cho là đã phát sinh từ loài H. erectus. Hoá thạch cổ nhất của người H. sapiens được phát hiện ở châu Phi (năm 2003) khoảng 160000 năm về trước và ở ngoài châu Phi khoảng 50000 năm về trước. Các nghiên cứu về ADN ti thể và NST y của người cùng nhiều bằng chứng hoá thạch khác đã ủng hộ cho giả thuyết loài người hiện đại sinh ra ở châu Phi rồi phát tán sang các châu lục khác.", "answer": "18000 năm"}, |
|
|
}, |
|
|
"Civic Education": { |
|
|
"Example 1": {"context": "Khái niệm chất dùng để chỉ những thuộc tính cơ bản, vốn có của sự vật và hiện tượng, tiêu biểu cho sự vật và hiện tượng đó, phân biệt nó với các sự vật và hiện tượng khác. Ví dụ: Nguyên tố đồng có nguyên tử luợng là 63,54 đvC, nhiệt độ nóng chảy là 1083 độ c, nhiệt độ sôi là 2880 độ c v.v... Những thuộc tính (tính chất) này nói lên chất riêng của đồng, phân biệt nó với các kim loại khác. Cuộc Cách mạng tháng Tám 1945 ở nuớc ta, duới sự lãnh đạo của Đảng của giai cấp công nhân, một mặt, đánh đuổi bọn thục dân xâm luợc, giành lại quyền độc lộp cho dân tộc, mặt khác, đánh đổ sự thống trị của giai cấp phong kiến, giành quyền dân chủ cho nhân dân. Vì vậy, cuộc cách mạng ấy, về chất, là cuộc cách mạng dân tộc, dân chủ nhân dân, khác về chất so với nhũng cuộc cách mạng khác.", "answer": "Đảng của giai cấp công nhân"}, |
|
|
"Example 2": {"context": "Vận dụng quy luật giá trị Vê phía Nhà nước Nhà nước vận dụng quy luật giá trị vào việc đổi mới nền kinh tế nước ta thông qua xây dựng và phát triển mô hình kinh tế thị trường định hướng xã hội chủ nghĩa. Thưc hiện chế độ một giá, một thị trường thống nhất trong cả nước và mở cửa với thị trường nước ngoài. Ví dụ: Từ năm 1986 vê trước, nước ta thực thi mô hình kinh tế chỉ huy tập trung quan liêu bao cấp, nên nội dung và tác dộng của quy luật giá trị hầu như không dược Nhà nước vận dụng hoặc vận dụng không dóng. Nhưng từ năm 1986 dến nay, vận dụng quy luật giá trị thông qua đá mới nên kinh tế, nước ta chuyển sang xây dựng và phát triển mô hình kinh tế thị trường dịnh hướng xã hội chu nghĩa, nhờ dó dẩ dưa nước ta ra khỏi khung hoảng kinh tế xã hội và dã dạt những thành tựu dáng kể. Nhà nước thông qua việc ban hành và sử dụng pháp luật, các chính sách kinh tế, chính sách xã hội và bằng thưc lực kinh tế của mình, để điều tiết thị trường nhằm phát huy mặt tích cực và hạn chế sự phân hoá giàu nghèo và những tiêu cực xã hội khác, thúc đẩy phát triển sản xuất và lưu thông hàng hoá, ổn định và nâng cao đời sống nhân dân. Ví dụ: Nhà nước ban hành Luật Doanh nghiệp, Luật Dầu tư và thực hiện nhất quán, lâu dài chính sách kinh tế nhiêu thành phần, làm cho mọi thành phần kinh tế, mọi người dân dêu có quyên tự do kinh doanh, nhờ dó dã khai thác và phát huy mọi người lực của các thành phần kinh tế dẩu tư vào sản xuất kinh doanh, có tác dụng thóc dẩy tăng trương và phát triển kinh tế xã hội, làm cho mục tiêu dân giàu, nưốc mạnh, xã hội dân chu, cổng bằng, văn minh từng bước dược thực hiện ở nước ta.", "answer": "phát triển sản xuất và lưu thông hàng hoá, ổn định và nâng cao đời sống nhân dân"}, |
|
|
"Example 3": {"context": "Vận động là phương thức tồn tại của thế giới vật chất chúng ta biết rằng: Trái Đất chỉ tồn tại khi tự quay quanh trục của nó và quay xung quanh Mặt Trời. Sự sống chỉ tồn tại khi có trao đổi chất với môi trường bên ngoài. Bất kì sự vật, hiện tượng nào cũng luôn luôn vận động. Bằng vận động và thông qua vận động mà sự vật, hiện tượng tồn tại và thể hiện đặc tính của mình. Bởi vậy, vận động là thuộc tính vốn có, là phương thức tồn tại của các sự vật và hiện tượng.", "answer": "Bất kì sự vật, hiện tượng"}, |
|
|
}, |
|
|
} |
|
|
|
|
|
selected = example_data.get(subject, {}).get(example, {"context": "", "answer": ""}) |
|
|
|
|
|
context_text = st.text_area("Context", value=selected["context"], height=200) |
|
|
|
|
|
if method == "Answer aware": |
|
|
answer_text = st.text_area("Answer", value=selected["answer"], height=100) |
|
|
|
|
|
device = 'cuda' if torch.cuda.is_available() else 'cpu' |
|
|
def preprocess_function(examples, tokenizer): |
|
|
inputs = tokenizer( |
|
|
examples["input_seq"], |
|
|
max_length=1024, |
|
|
truncation=True, |
|
|
padding=True, |
|
|
return_tensors="pt" |
|
|
) |
|
|
return {key: tensor.to(device) for key, tensor in inputs.items()} |
|
|
|
|
|
def generate_q(context, answer): |
|
|
tokenizer = AutoTokenizer.from_pretrained('shnl/inst-qg-vinewsqa-vit5', cache_dir="/tmp/huggingface") |
|
|
model = AutoModelForSeq2SeqLM.from_pretrained('shnl/inst-qg-vinewsqa-vit5', cache_dir="/tmp/huggingface") |
|
|
instruction_qg = 'Hãy tạo ra câu hỏi từ nội dung của ngữ cảnh và câu trả lời dưới đây.', |
|
|
examples = {"input_seq": str("### Instruction: \n" |
|
|
f"{instruction_qg} \n\n" |
|
|
f"### Context: \n" |
|
|
f"{context}\n\n" |
|
|
f"### Answer: \n" |
|
|
f"{answer} \n\n" |
|
|
f"\n\n### Response: \n")} |
|
|
new_inputs = preprocess_function(examples, tokenizer) |
|
|
max_target_length = 256 |
|
|
model = model.to(device) |
|
|
with torch.no_grad(): |
|
|
new_outputs = model.generate( |
|
|
input_ids=new_inputs['input_ids'].to(device), |
|
|
max_length=max_target_length, |
|
|
attention_mask=new_inputs['attention_mask'].to(device), |
|
|
) |
|
|
with tokenizer.as_target_tokenizer(): |
|
|
output = [tokenizer.decode(out, clean_up_tokenization_spaces=True, skip_special_tokens=True) for out |
|
|
in new_outputs] |
|
|
return output |
|
|
|
|
|
if st.button("Generate"): |
|
|
progress_text = "Generating. Please wait..." |
|
|
my_bar = st.progress(0, text=progress_text) |
|
|
|
|
|
for percent_complete in range(30): |
|
|
time.sleep(0.01) |
|
|
my_bar.progress(percent_complete, text=progress_text) |
|
|
|
|
|
|
|
|
if method == "Answer agnostic": |
|
|
question = generate_q(context_text, "") |
|
|
else: |
|
|
question = generate_q(context_text, answer_text) |
|
|
|
|
|
for percent_complete in range(30, 100): |
|
|
time.sleep(0.005) |
|
|
my_bar.progress(percent_complete, text=progress_text) |
|
|
|
|
|
my_bar.empty() |
|
|
st.text_area('Question: ', question[0]) |