袁志
摘 要:研究一種在線題庫錄入問題的便捷方法,讓教師通過復制粘貼加上簡單編輯即可完成各類試題錄入,同時又能滿足答題習慣。關鍵途徑包括三個部分:一是利用正則表達式,根據(jù)文本內容自動判別題型;二是根據(jù)題型對原始數(shù)據(jù)進行轉換,生成包含表單的HTML段,為學生提供答題操作的接口;三是遠程圖片的服務器端自動存儲。用ASP.NET進行了編程實現(xiàn),驗證了可行性。
關鍵詞:在線題庫;正則表達式;圖片本地化;ASP.NET
中圖分類號:TP3 文獻標識碼:A
1 引言(Instruction)
Web題庫對教學的支撐作用是明顯的,對于在線題庫建設的技術討論,集中在數(shù)據(jù)庫設計與自動組卷技術[1],試題錄入方法的討論沒有得到應重視。然而題庫建設工作量很大,除了技術開發(fā)之外,試題錄入也是繁重的工作。
題庫的主體用戶分為兩種角色:教師和學生。從學生的角度,有一些答題操作已經(jīng)形成習慣,比如:單選題使用單選按鈕,多選題使用復選按鈕,填空題在下劃線上方填寫字符,簡答題在空白處填寫大段文本。為了滿足這些習慣,現(xiàn)有的做法是讓教師在錄入試題時,對每一種題型進行不同的錄入操作,比如為選擇題分若干步添加若干不同的選項,為填空題插入表單控件等等,這些方法雖然從技術上是可行的,但教師的工作過程繁瑣,直接影響到了題庫建設的效率。
本文研究題庫的便捷錄入方法,使教師可以通過復制粘貼加簡單的文本編輯即可完成題庫錄入,所有的題型錄入方法是一致的,不需要考慮題型之間的差異。為此要解決三個問題關鍵問題:
問題一:題型的自動判別問題。對于一段文本,要從其內容自動判別其題型。
問題二:答題樣式的自動生成問題。根據(jù)題型對文本進行轉換,使之呈現(xiàn)為不同的答題操作視圖。
問題三:圖片的服務器端自動存儲問題。復制粘貼的內容可能包括遠程圖片鏈接,鏈接的數(shù)據(jù)源要自動存放到題庫服務器,使題庫系統(tǒng)離開遠程資源也可獨立運行。
2 自動判別題型(Automatic identification topic of
question)
正則表達式可用來處理有規(guī)律可循的字符串,在文獻元數(shù)據(jù)提取[2]、Web信息提取[3]等方面得到廣泛應用,本文用正則表達式來進行題型自動識別。
本文只討論單選題和單項填空題,其余題型完全可以在此基礎上擴展。不妨約定,在教師錄入試題時,單選題必然存在A、B、C、D等四個選項,填空題的待填部分用任意長度的下劃線作為占位符。試題存放在數(shù)據(jù)庫中,為了避開不同DBMS的技術細節(jié)差異,采用XML文件描述存儲格式:
<?xml version="1.0" encoding="gb2312"?>
計算機網(wǎng)絡的OSI參考模型中,負責端到端的數(shù)據(jù)傳輸控制的功能位于( )。
A.物理層 B.數(shù)據(jù)鏈路層 C.網(wǎng)絡層 D.傳輸層
在計算機網(wǎng)絡的OSI參考模型中,負責端到端的數(shù)據(jù)傳輸控制的功能位于_______層。
以上XML文件中,Lesson元素對應課程,Category元素對應知識點,Problem元素對應試題,Question元素對應試題中的問題,依次呈包含關系。Problem元素中除了Question元素之外,還可以包括難度系數(shù)、參考答案和問題解析等等,本文只關注Question元素??梢钥吹?,題型是問題文本隱式包含的,可以通過文本的規(guī)則來自動判斷題型。
簡單起見,可以將上述兩種題型的正則表達式描述如下,這兩個表達式當然可以寫的更為精確。
單選題的正則式:(.*)(A.*)(B.*)(C.*)(D.*)
填空題的正則式:(.*)(_{3,})(.*)
3 自動生成答題界面(Automatic generation the UI
for answering)
根據(jù)自動判斷所得的題型,在答題界面對Question部分生成HTML片段,其中包含的HTML表單控件用于提供答題操作接口。具體地說:單選題生成單選按鈕組,供學生選擇;填空題生成輸入框,供學生填寫答案。每個表單控件用ProblemID來標記,使得提交答案與題號建立聯(lián)系,為后續(xù)技術處理提供方便。
兩種轉換分別由下面的兩個函數(shù)來實現(xiàn)。
//選擇題文本轉換
string transfer2SelectionHtml(int problemID)
{
string question = ""; //取出question……略
string pattern = @"(.*)(A.*)(B.*)(C.*)(D.*)"; //正則表達式模式
//文本替換模式,生成一段問題和一個單選按鈕組,其Name屬性等于ProblemID
//$1,$2,$3,$4,$5分別表示匹配的組
string replacement = string.Format(@"
$1
$2
$3endprint
$4
$5", problemID);
Regex regex = new Regex(pattern); //生成正則表達式
Match match= regex.Matches(question); //匹配
String result = match.Result(replacement); //轉換
return result;
}
//填空題文本轉換
string transfer2BlankHtml(int problemID)
{
string question = "";
string result = "";
string pattern = @"(.*)(_{3,})(.*)";
string replacement1 = string.Format(@"$1$3",probelmID);
Regex regex = new Regex(pattern);
MatchCollection matches = regex.Matches(question);
foreach (Match match in matches)
{
result = match.Result(replacement1);
}
return result;
}
4 遠程圖片的自動本地化(Automatic locationize
remote images)
在錄入試題時,用戶經(jīng)常從其他網(wǎng)站中復制一段內容粘貼,從HTML的角度來講,復制的內容包括純文本和圖片鏈接地址。純文本保存到題庫服務器是沒有問題的,而圖片鏈接地址保存到題庫服務器可能造成問題,這是因為鏈接源可能會消失。因此,遠程圖片應該保存到題庫服務器。
人工操作方法是先將遠程圖片下載到用戶主機,然后再上傳到服務器,然后利用在線編輯工具編輯試題,在試題中加入服務器端的圖片鏈接,這種方法頗為費時費力。這里討論的是自動存儲技術。
當試題中包含了遠程網(wǎng)站上的一個圖片鏈接時,其Question元素必然包含類似以下的HTML段落,可以用正則表達式來捕獲。
我們所需要做的工作是:錄入的數(shù)據(jù)提交時,由服務器端程序向鏈接源發(fā)送請求,將獲取的圖片數(shù)據(jù)保存到服務器的文件系統(tǒng)中,并對應修改鏈接地址。核心函數(shù)如下:
void saveImage(string uri)
{
int index = uri.LastIndexOf("/");
string filename = Server.MapPath("/Files/") + uri.Substring(index + 1);
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(uri);
req.Method = "GET";
using (WebResponse res = req.GetResponse())
{
byte[] buff = new byte[1024];
Stream r = res.GetResponseStream();
FileStream w = new FileStream(filename, FileMode.Create);
int byteCount = 0;
while ((byteCount = r.Read(buff, 0, buff.Length)) > 0)
{
w.Write(buff, 0, byteCount);
}
r.Close();
w.Close();
}
}
5 示例(Example)
我們開發(fā)了一個“計算機軟件水平(資格)考試在線練習網(wǎng)站”,該網(wǎng)站的主要功能是題庫維護和在線練習,在該網(wǎng)站中采用本文所述的方法,大大減小了題庫錄入的工作量。舉一個選擇題為例,從某網(wǎng)站復制2013年的網(wǎng)絡工程師考試的一道選擇題,錄入操作界面和答題界面如圖1和圖2。
圖1 試題錄入界面
Fig.1 The test question input interface
由圖1可以看出,對于一道單選題,在錄入的時候直接復制粘貼即可完成錄入操作,不必分項填寫待選項。
圖2 單選題的答題界面
Fig.2 The answer interface
由圖2可以看出,該選擇題的問題文本自動轉換為用戶的習慣答題方式,用單選按鈕來答題,其中的圖片源地址指向題庫服務器上圖片文件,不會因為原始網(wǎng)站的變化而丟失。
6 結論(Conclusion)
本文敘述的題庫快捷錄入方法,使教師可以采用一致性的方法完成大多數(shù)類型的試題錄入,教師的操作只有復制粘貼加上簡單的文本編輯,省去復雜的操作流程,大大提高了試題錄入效率。該方法所依賴的技術,一是利用正則表達式對試題進行匹配和轉換,將其轉換為HTML片段輸出到頁面,二是采用后臺自動運行的持久化技術實現(xiàn)圖片的服務器端存儲。
下一步要做的工作:試題錄入時常常有重復錄入的可能性,依靠人工檢索是比較困難的,計劃采用以編輯距離為度量的試題相似度檢查機制,進一步提高題庫錄入的便利度。
參考文獻(References)
[1] 董園.在線考試系統(tǒng)中的題庫建設相關技術的研究[J].電子世
界,2013,17:112-115.
[2] 曹俊,萬曉云,廖順保.基于正則表達式批量提取CNKI文獻元
數(shù)據(jù)技術探究[J].圖書情報工作,2010,10(19):111-114.
[3] 胡軍偉,秦奕青,張偉.正則表達式在Web信息抽取中的應用
[J].北京信息科技大學學報,2011,12(6):86-89.
作者簡介:
袁 志(1971-),男,碩士,副教授.研究領域:網(wǎng)絡與信息
系統(tǒng).endprint
摘 要:研究一種在線題庫錄入問題的便捷方法,讓教師通過復制粘貼加上簡單編輯即可完成各類試題錄入,同時又能滿足答題習慣。關鍵途徑包括三個部分:一是利用正則表達式,根據(jù)文本內容自動判別題型;二是根據(jù)題型對原始數(shù)據(jù)進行轉換,生成包含表單的HTML段,為學生提供答題操作的接口;三是遠程圖片的服務器端自動存儲。用ASP.NET進行了編程實現(xiàn),驗證了可行性。
關鍵詞:在線題庫;正則表達式;圖片本地化;ASP.NET
中圖分類號:TP3 文獻標識碼:A
1 引言(Instruction)
Web題庫對教學的支撐作用是明顯的,對于在線題庫建設的技術討論,集中在數(shù)據(jù)庫設計與自動組卷技術[1],試題錄入方法的討論沒有得到應重視。然而題庫建設工作量很大,除了技術開發(fā)之外,試題錄入也是繁重的工作。
題庫的主體用戶分為兩種角色:教師和學生。從學生的角度,有一些答題操作已經(jīng)形成習慣,比如:單選題使用單選按鈕,多選題使用復選按鈕,填空題在下劃線上方填寫字符,簡答題在空白處填寫大段文本。為了滿足這些習慣,現(xiàn)有的做法是讓教師在錄入試題時,對每一種題型進行不同的錄入操作,比如為選擇題分若干步添加若干不同的選項,為填空題插入表單控件等等,這些方法雖然從技術上是可行的,但教師的工作過程繁瑣,直接影響到了題庫建設的效率。
本文研究題庫的便捷錄入方法,使教師可以通過復制粘貼加簡單的文本編輯即可完成題庫錄入,所有的題型錄入方法是一致的,不需要考慮題型之間的差異。為此要解決三個問題關鍵問題:
問題一:題型的自動判別問題。對于一段文本,要從其內容自動判別其題型。
問題二:答題樣式的自動生成問題。根據(jù)題型對文本進行轉換,使之呈現(xiàn)為不同的答題操作視圖。
問題三:圖片的服務器端自動存儲問題。復制粘貼的內容可能包括遠程圖片鏈接,鏈接的數(shù)據(jù)源要自動存放到題庫服務器,使題庫系統(tǒng)離開遠程資源也可獨立運行。
2 自動判別題型(Automatic identification topic of
question)
正則表達式可用來處理有規(guī)律可循的字符串,在文獻元數(shù)據(jù)提取[2]、Web信息提取[3]等方面得到廣泛應用,本文用正則表達式來進行題型自動識別。
本文只討論單選題和單項填空題,其余題型完全可以在此基礎上擴展。不妨約定,在教師錄入試題時,單選題必然存在A、B、C、D等四個選項,填空題的待填部分用任意長度的下劃線作為占位符。試題存放在數(shù)據(jù)庫中,為了避開不同DBMS的技術細節(jié)差異,采用XML文件描述存儲格式:
<?xml version="1.0" encoding="gb2312"?>
計算機網(wǎng)絡的OSI參考模型中,負責端到端的數(shù)據(jù)傳輸控制的功能位于( )。
A.物理層 B.數(shù)據(jù)鏈路層 C.網(wǎng)絡層 D.傳輸層
在計算機網(wǎng)絡的OSI參考模型中,負責端到端的數(shù)據(jù)傳輸控制的功能位于_______層。
以上XML文件中,Lesson元素對應課程,Category元素對應知識點,Problem元素對應試題,Question元素對應試題中的問題,依次呈包含關系。Problem元素中除了Question元素之外,還可以包括難度系數(shù)、參考答案和問題解析等等,本文只關注Question元素??梢钥吹剑}型是問題文本隱式包含的,可以通過文本的規(guī)則來自動判斷題型。
簡單起見,可以將上述兩種題型的正則表達式描述如下,這兩個表達式當然可以寫的更為精確。
單選題的正則式:(.*)(A.*)(B.*)(C.*)(D.*)
填空題的正則式:(.*)(_{3,})(.*)
3 自動生成答題界面(Automatic generation the UI
for answering)
根據(jù)自動判斷所得的題型,在答題界面對Question部分生成HTML片段,其中包含的HTML表單控件用于提供答題操作接口。具體地說:單選題生成單選按鈕組,供學生選擇;填空題生成輸入框,供學生填寫答案。每個表單控件用ProblemID來標記,使得提交答案與題號建立聯(lián)系,為后續(xù)技術處理提供方便。
兩種轉換分別由下面的兩個函數(shù)來實現(xiàn)。
//選擇題文本轉換
string transfer2SelectionHtml(int problemID)
{
string question = ""; //取出question……略
string pattern = @"(.*)(A.*)(B.*)(C.*)(D.*)"; //正則表達式模式
//文本替換模式,生成一段問題和一個單選按鈕組,其Name屬性等于ProblemID
//$1,$2,$3,$4,$5分別表示匹配的組
string replacement = string.Format(@"
$1
$2
$3endprint
摘 要:研究一種在線題庫錄入問題的便捷方法,讓教師通過復制粘貼加上簡單編輯即可完成各類試題錄入,同時又能滿足答題習慣。關鍵途徑包括三個部分:一是利用正則表達式,根據(jù)文本內容自動判別題型;二是根據(jù)題型對原始數(shù)據(jù)進行轉換,生成包含表單的HTML段,為學生提供答題操作的接口;三是遠程圖片的服務器端自動存儲。用ASP.NET進行了編程實現(xiàn),驗證了可行性。
關鍵詞:在線題庫;正則表達式;圖片本地化;ASP.NET
中圖分類號:TP3 文獻標識碼:A
1 引言(Instruction)
Web題庫對教學的支撐作用是明顯的,對于在線題庫建設的技術討論,集中在數(shù)據(jù)庫設計與自動組卷技術[1],試題錄入方法的討論沒有得到應重視。然而題庫建設工作量很大,除了技術開發(fā)之外,試題錄入也是繁重的工作。
題庫的主體用戶分為兩種角色:教師和學生。從學生的角度,有一些答題操作已經(jīng)形成習慣,比如:單選題使用單選按鈕,多選題使用復選按鈕,填空題在下劃線上方填寫字符,簡答題在空白處填寫大段文本。為了滿足這些習慣,現(xiàn)有的做法是讓教師在錄入試題時,對每一種題型進行不同的錄入操作,比如為選擇題分若干步添加若干不同的選項,為填空題插入表單控件等等,這些方法雖然從技術上是可行的,但教師的工作過程繁瑣,直接影響到了題庫建設的效率。
本文研究題庫的便捷錄入方法,使教師可以通過復制粘貼加簡單的文本編輯即可完成題庫錄入,所有的題型錄入方法是一致的,不需要考慮題型之間的差異。為此要解決三個問題關鍵問題:
問題一:題型的自動判別問題。對于一段文本,要從其內容自動判別其題型。
問題二:答題樣式的自動生成問題。根據(jù)題型對文本進行轉換,使之呈現(xiàn)為不同的答題操作視圖。
問題三:圖片的服務器端自動存儲問題。復制粘貼的內容可能包括遠程圖片鏈接,鏈接的數(shù)據(jù)源要自動存放到題庫服務器,使題庫系統(tǒng)離開遠程資源也可獨立運行。
2 自動判別題型(Automatic identification topic of
question)
正則表達式可用來處理有規(guī)律可循的字符串,在文獻元數(shù)據(jù)提取[2]、Web信息提取[3]等方面得到廣泛應用,本文用正則表達式來進行題型自動識別。
本文只討論單選題和單項填空題,其余題型完全可以在此基礎上擴展。不妨約定,在教師錄入試題時,單選題必然存在A、B、C、D等四個選項,填空題的待填部分用任意長度的下劃線作為占位符。試題存放在數(shù)據(jù)庫中,為了避開不同DBMS的技術細節(jié)差異,采用XML文件描述存儲格式:
<?xml version="1.0" encoding="gb2312"?>
計算機網(wǎng)絡的OSI參考模型中,負責端到端的數(shù)據(jù)傳輸控制的功能位于( )。
A.物理層 B.數(shù)據(jù)鏈路層 C.網(wǎng)絡層 D.傳輸層
在計算機網(wǎng)絡的OSI參考模型中,負責端到端的數(shù)據(jù)傳輸控制的功能位于_______層。
以上XML文件中,Lesson元素對應課程,Category元素對應知識點,Problem元素對應試題,Question元素對應試題中的問題,依次呈包含關系。Problem元素中除了Question元素之外,還可以包括難度系數(shù)、參考答案和問題解析等等,本文只關注Question元素??梢钥吹剑}型是問題文本隱式包含的,可以通過文本的規(guī)則來自動判斷題型。
簡單起見,可以將上述兩種題型的正則表達式描述如下,這兩個表達式當然可以寫的更為精確。
單選題的正則式:(.*)(A.*)(B.*)(C.*)(D.*)
填空題的正則式:(.*)(_{3,})(.*)
3 自動生成答題界面(Automatic generation the UI
for answering)
根據(jù)自動判斷所得的題型,在答題界面對Question部分生成HTML片段,其中包含的HTML表單控件用于提供答題操作接口。具體地說:單選題生成單選按鈕組,供學生選擇;填空題生成輸入框,供學生填寫答案。每個表單控件用ProblemID來標記,使得提交答案與題號建立聯(lián)系,為后續(xù)技術處理提供方便。
兩種轉換分別由下面的兩個函數(shù)來實現(xiàn)。
//選擇題文本轉換
string transfer2SelectionHtml(int problemID)
{
string question = ""; //取出question……略
string pattern = @"(.*)(A.*)(B.*)(C.*)(D.*)"; //正則表達式模式
//文本替換模式,生成一段問題和一個單選按鈕組,其Name屬性等于ProblemID
//$1,$2,$3,$4,$5分別表示匹配的組
string replacement = string.Format(@"
$1
$2
$3endprint