740 likes | 863 Views
AutoQuiz Transition Report. Ivan Chiou 2014/04/03. AutoQuiz Introduction. AutoQuiz is a personalized automatic quiz generation system that evaluates reading comprehension and assesses English proficiency of English learners. AutoQuiz web-site AutoQuiz toolbar:
E N D
AutoQuiz Transition Report Ivan Chiou 2014/04/03
AutoQuiz Introduction • AutoQuiz is a personalized automatic quiz generation system that evaluates reading comprehension and assesses English proficiency of English learners. • AutoQuiz web-site • AutoQuiz toolbar: • Client: Chrome/Firefox plug-ins • Server: toolbar service
Transition List • Hardware device • AutoQuiz、AutoQuiztoolbarweb-site • MySQL Database • ClientChrome/Firefox source code
Hardware device • Server: • 140.109.18.61 (autoquiz) the machine we current use, all source code and database are in here. • ID/PSW : Administrator/mcc@aip1614
Source code • Version control in Plash server. • http://plash2.iis.sinica.edu.tw/svn/autoquiz/ • autoquizToolbar_chrome • autoquizToolbar_firefox • Server(toolbar service) • Including Administrator Pages • Issue list(Redmine): • http://plash2.iis.sinica.edu.tw/redmine/projects/autoquiz
AutoQuizweb-site • AutoQuizweb-site • Location:140.109.18.61 • Folder Path:D:\wwwroot\autoquiz\ • URL :autoquiz.sinica.edu.tw • Type:static HTML web-site(.php)
AutoQuiztoolbar service • AutoQuiz toolbarservice • Location:140.109.18.61 • Folder Path:D:\wwwroot\autoquiz\toolbar\ • URL:autoquiz.sinica.edu.tw\toolbar\ • Type:php + smarty + mysql • Including Toolbar Admin • http://autoquiz.iis.sinica.edu.tw/toolbar/admin/ • ID/PSW : test/0000
AutoQuiztoolbarservice– page 1 session_start(); include("Class/SmartyConfig/SmartyMain.php"); require("./php/dbAccess.php"); $smarty = new SmartyTemplate(); $db = new dbAccess(); if(isset($_SESSION["autoquiz.user"]) && $_SESSION["autoquiz.user"] !=null) { $db->execute(); $smarty->assign(); } else { } $smarty->display("webMain.tpl");
AutoQuiztoolbarservice– page 2 $(document).ready(init);//jquery document ready function init() { if(/firefox/.test(navigator.userAgent.toLowerCase())) { if($("#loginInfo").html() == "-1") {//檢查登入狀態,由toolbar修改html } } else { } }
Toolbar web service • Location:140.109.18.61 • Folder path:D:\wwwroot\autoquiz\toolbar\ • URL:autoquiz.sinica.edu.tw\toolbar\ • Type:php + mysql • Interface:json
Toolbar web service • AutoquizToolbarLogin.php • 用途 : 接收toolbar傳送使用者帳號密碼檢查 • Input : $_POST[“myemail”] 帳號 , $_POST[“mypass”] 密碼 • Output : • 帳號密碼不正確 : “code:201” • 帳號密碼正確 : “code:100 \r\n userid:使用者ID” • Config.php • 用途 : toolbar初始化設定,toolbar每次開啟都會先連到此檔案下載設定 • Input : $_GET[“x”] 亂數x • Output : JSON物件,參考程式碼內容
Toolbar web service • getHistory.php • 用途 : 取得toolbar登入使用者歷史考試紀錄 • Input : $_GET[“userid”] 使用者ID • Output : history JSON物件,參考history資料表 • getQuestion.php • 用途 : 取得使用者目前瀏覽頁面的題目 • Input : $_POST[“URL”] 網址, $_POST[“textContent”] 網頁內容, • Output : • 資料錯誤 :0 • 超出出題範圍 :-1 • 正確取出題目 :JSON物件 ‘{“articleID”:資料庫文章ID,“questionArray”:題目陣列}'
Toolbar web service • handleFB.php • Usage :process Facebookdata • Input : • $_GET[“type”]: 資料處理類型,login, post, getFriends, tag • $_GET[“link”]:post到FB上的連結 • $_GET[“message”]:post到FB上的文字訊息 • $_POST[“fromToolbar”] : 從toolbar傳遞資料的tag,true, flase • $_POST[“articleNo”] : 文章的ID • $_POST[“userid”]: 使用者ID • $_POST[“logLink”]: 這在瀏覽的網址 • $_POST[“tags”]:FB朋友ID列表,用”逗號”分隔 • Output : JSON$message = array('state'=>"",'url'=>"",'message'=>"");
Toolbar web service • saveAnswer.php • Usage:record students answers • Input : • $_POST[“ansObj”] :JSON格式答案陣列 • $_POST[“studentID”]: 學生ID • Output : null • saveTime.php • Usage:record interval of using toolbar • Input : • $_POST[“userid”] : 使用者ID • $_POST[“url”]: 瀏覽的頁面URL • $_POST[“duration”]: 毫秒 • $_POST[“type”]: 紀錄類型, stay : 瀏覽時間, quiz : 考試時間 • Output : null
Data Structure Description • Autoquiztoolbar • Googlengram_indexed • CollocationExplorer
Data Structure - Autoquiztoolbar Article QuizLog studentID articleID Question AnswerLog articleID quizID questionID studentID Student
Data Structure - Autoquiztoolbar • Answerlog : 紀錄學生答案 • No: 流水號、主鍵 • quizID: 考試記錄編號 • questionID: 題號 • studentID: 學生編號 • Answer: 答案 • yes_no: 學生自憑此題有沒有問題 • Delete: 刪除預留
Data Structure - Autoquiztoolbar • Article:TED已出好題目的文章 • No: 流水號、主鍵 • url: 文章URL • Content: 逐字稿 • Date: 新增日期 • Enable: 是否允許出題 • Delete:刪除預留
Data Structure - Autoquiztoolbar • Ceec: 大考中心單字 • Id: 流水號 • Lemma: 字根 • Pos: 詞性 • Level:?
Data Structure - Autoquiztoolbar • Fbclicklog:FB post連結點擊紀錄 • No: 流水號、主鍵 • addTime: 點擊時間 • Type: 類型,tag or post • Userid : click user ID • Gid : FB Gid • url : click URL • delete: 刪除預留
Data Structure - Autoquiztoolbar • Fbpostlog : FB post 紀錄 • No: 流水號、主鍵 • addTime:post 時間 • Userid:post user ID • Gid : FB Gid • url : post URL • delete: 刪除預留
Data Structure - Autoquiztoolbar • Fbtaglog : FB tage friend紀錄 • No: 流水號、主鍵 • addTime:tag 時間 • Userid:post user ID • Tag : tag誰,fbid • Gid : FB Gid • url : post URL • delete: 刪除預留
Data Structure - Autoquiztoolbar • Message : 影片留言板 • No: 流水號、主鍵 • addTime: 新增時間 • Talk: 所屬影片 • Content: 內容 • Author: 作者 • Enable: 是否顯示在頁面上 • Delete: 刪除預留
Data Structure - Autoquiztoolbar • Posttestlog: 後測紀錄 • No: 流水號、主鍵 • Date: 考試時間 • Name: 學生姓名 • Account: 學生帳號 • q1~q10, q16~q45:q1~q10,Q16~q45答案 • Score: 分數 • delete: 刪除預留
Data Structure - Autoquiztoolbar • Prequestionlog: 前測紀錄 • No: 流水號、主鍵 • Date: 測驗時間 • Name: 學生姓名 • Account: 學生帳號 • q16~q45:q16~q45答案 • Score: 分數 • Delete: 刪除預留
Data Structure - Autoquiztoolbar • Question: 題目列表 • No: 流水號、主鍵 • Question: 題目文字 • Original_sentence: 文章原始句 • Simplize_sentence: 簡化後句子 • Answer: 標準答案 • articleID: 所屬文章ID • Score: 題目分數 • Delete: 刪除預留 • D1: 選項1 • D2: 選項2 • D3: 選項3
Data Structure - Autoquiztoolbar • Quizlog: 考試紀錄 • No: 流水號、主鍵 • studentID: 學生ID • articleID: 考試文章ID • Date: 考試時間 • Percent: 學生自評百分比 • Score: 分數 • Delete: 刪除預留
Data Structure - Autoquiztoolbar • Quiztime : 考試經過時間紀錄 • No: 流水號、主鍵 • addTime: 寫入時間 • userID: 學生ID • url: 考試網址連結 • Duration: 時間(毫秒) • Delete: 刪除預留
Data Structure - Autoquiztoolbar • Staytime: 網頁停留時間紀錄 • No: 流水號、主鍵 • addTime: 寫入時間 • userID: 學生ID • url: 停留網站URL • Duration: 停留時間(毫秒) • Delete: 刪除預留
Data Structure - Autoquiztoolbar • Stopwords: 過濾文字 • No: 流水號、主鍵 • Word: 文字
Data Structure - Autoquiztoolbar • Student: 學生帳號資料 • No: 流水號、主鍵 • Account: 帳號 • Password: 密碼 • Nickname: 學生暱稱 • Enable: 啟用帳號 • Delete: 刪除預留
Data Structure - Autoquiztoolbar • Talks:TED 所有影片列表 • No: 流水號、主鍵 • Id:TEDtalk ID • talkURL:TEDURL • Title: 影片標題 • Duration: 影片長度 • videoURL: 影片直接下載連結 • talkContent_JSON: 逐字稿原始格式 • talkContent: 逐字稿內容 • Length: 逐字稿長度 • Enable: 是否提供出題
Data Structure - Autoquiztoolbar • Wordlog: 學生不會的字 • No: 流水號、主鍵 • studentID: 學生ID • quizID: 考試ID • Question: 題目ID • Word: 單字 • Delete: 刪除預留
Data Structure - Googlengram_indexed • Google • No • N • Text • Freq • T1 • T2 • T3 • T4 • t5
Data Structure - collocationExplorer • C5_bigrams : 不同c5 tag collocation組合 • C51:lemma1 c5 tag • C52 : lemma2 c5 tag • Freq : 出現次數
Data Structure - collocationExplorer • Collocations:collocation list • Lemmapos_id1 : lemma1 pos組合id • Pos1 : lemma1 pos • Lemmapos_id2 : lemma2 pos組合id • Pos2 : lemma2 pos • Mi: mutual information • Mi2 : mutual information平方(lemma1 freq平方,lemma2 freq平方) • Mi3:mutual information 三次方 • Nmi: normalized mutual information(除wordnet synonym sets個數) • Nmi2:normalized mutual information平方 • Ex: 第一個example • Freq : 出現次數
Data Structure - collocationExplorer • Collocation_positions:collocation出現在corpus的位置 • Lemmapos_id1:lemma1 • Lemmapos_id2 : lemma2 • Positions_json : 位置json [[file_id,sent_id,location1,location2],….]
Data Structure - collocationExplorer • Marks : 非文字符號 • Mark_id: 流水號 • Mark: 符號 • Freq: 出現次數
Data Structure - collocationExplorer • Sents:BNC corpus所有文章句子 • FileName: 檔案名稱 • File_id: 檔案id • Sent_id : 句子id • Sent_json : 句子json [[位置,world],…….]
Data Structure - collocationExplorer • Terms : word資料 • Wordc5_id:word + c5 tag 流水編號 • Word:word • C5 : c5 tag • Word_id : word 流水編號 • Lemmapos_id:lemma + pos tag流水編號 • Lemma:lemma • Pos : 詞性 • Lemma_id:lemma流水編號 • Freq: 出現次數
Client端程式碼 - Firefoxaddon • 開發工具 :Mozilla firefoxaddon SDK + Mozilla build • https://addons.mozilla.org/zh-TW/developers/builder • 語言:javaScript+HTML • Library : SDK core library + JQuery 1.9
Client端程式碼 - Firefoxaddon系統架構 Button : main.js Panel : /data/login.html Background javascript : /data/js/pageCommunication.js
Clientsource code- Firefoxaddon main.js 定義sdk中會用到的library constpanels = require(“sdk/panel”); //panel元件(登入畫面) const data = require(“sdk/self”).data;//toolbar外部資料(圖片 jscss等) const tabs = require(“sdk/tabs”);//tab元件(控制網頁上的分頁) const windows = require(“sdk/windows”).browserWindows;// windows元件(控制整個browser) const toolbar = require(“toolbarbutton”); //tutton元件(第三方lib) conststoreCookie = require(“sdk/simple-storage”); //storage元件(資料儲存空間) constpageMod = require(“sdk/page-mod”);//pageMode元件(背景執行程式碼) const request = require(“sdk/request”);//外部request元件(與server溝通用)
main.js 定義額外寫的js物件 varhandleLogin = require(‘handleLogin’);//處理login帳號密碼判斷 varhandleQuestion = require(‘handleQuestion’);//取得和處理question varhandleFacebook = require(‘handleFacebook’); //處理facebook post tage varhandleSaveTime = require(‘handleSaveTime’); //處理儲存考試時間 停留時間
main.js 定義panel varsaveLoginPanel; varloginPanelObj = { width: 270, height: 230, contentURL: data.url(“html/Loginpanel.html”), //panel內容 contentScriptFile: [data.url(“js/jquery.js”),data.url(“js/Loinpanel.js”)],//panel帶入的js contentScriptWhen: “ready“ //網頁ready就執行js };
main.js 定義toolbar本身(第三方元件) varautoquizToolbar = { id : "autoquiz-bar" }; vartoolbarID = toolbar.createToolbar(autoquizToolbar);
main.js 定義按鈕和分隔線 varsaveAQButton; varsaveAQButtonSep; saveAQPanel = panels.Panel(AQPanelObj); varAQButtonObj = { id : “AQIconButton”,//按鈕ID label : “”,//按鈕文字 panel : saveAQPanel,//按鈕點選彈出來的panel image : data.url(“pic/aq.jpg”), //按鈕上的圖片 toolbarID : toolbarID//所屬toolbar };