中國(guó)傳媒大學(xué)南廣學(xué)院 宋燕燕 周曉梅 周 靈
面向教學(xué)的多媒體文件識(shí)別系統(tǒng)研究與應(yīng)用
中國(guó)傳媒大學(xué)南廣學(xué)院宋燕燕周曉梅周靈
計(jì)算機(jī)與網(wǎng)絡(luò)信息技術(shù)的快速發(fā)展,促使當(dāng)今社會(huì)進(jìn)入了網(wǎng)絡(luò)信息時(shí)代,各個(gè)領(lǐng)域的數(shù)據(jù)和信息急劇增多。在分析云存儲(chǔ)等關(guān)鍵技術(shù)基礎(chǔ)上,對(duì)面向教學(xué)的多媒體文件識(shí)別系統(tǒng)進(jìn)行實(shí)例研究。實(shí)驗(yàn)表明,該系統(tǒng)能滿足校多用戶需求,實(shí)現(xiàn)多媒體文件上傳、下載、識(shí)別、詞頻統(tǒng)計(jì)等各個(gè)功能。
云存儲(chǔ);文件識(shí)別;詞頻統(tǒng)計(jì)
隨著MOOC(大規(guī)模開放網(wǎng)絡(luò)課程)熱潮的逐漸興起,各大高校、中小學(xué)在不久的將來(lái)勢(shì)必面臨著海量多媒體資源高效存儲(chǔ)和分析的問題,教學(xué)課件、學(xué)生作品、教學(xué)視頻等各種資源的數(shù)量快速發(fā)展,云存儲(chǔ)技術(shù)的應(yīng)用為解決資源存儲(chǔ)提供了可能,與傳統(tǒng)存儲(chǔ)方式相比,避免了存儲(chǔ)平臺(tái)的重復(fù)建設(shè),如何更有效的對(duì)海量多媒體資源進(jìn)行識(shí)別檢索成為一個(gè)新的課題。[1]
本文是在我們前期搭建的公有云存儲(chǔ)為核心架構(gòu)的新型校園云媒體資產(chǎn)系統(tǒng)平臺(tái)上,基于云存儲(chǔ)研究各類多媒體文件的內(nèi)容識(shí)別技術(shù),探索如何在各類多媒體資源快速膨脹的趨勢(shì)下,較快較準(zhǔn)確地定位搜索需要的素材,構(gòu)建一個(gè)面向教學(xué)的多媒體文件識(shí)別系統(tǒng)。解決校園網(wǎng)面臨的資源共享、系統(tǒng)優(yōu)化、安全管理等問題,為進(jìn)一步構(gòu)建智慧校園奠定基礎(chǔ)。
本系統(tǒng)主要涉及到的技術(shù)如下。
2.1云存儲(chǔ)技術(shù)
云存儲(chǔ)是云計(jì)算的存儲(chǔ)部分,即虛擬化的、易于擴(kuò)展的存儲(chǔ)資源池。存儲(chǔ)在云端的數(shù)據(jù)可以隨時(shí)隨地訪問讀取,節(jié)省本地存儲(chǔ)的硬件成本。云存儲(chǔ)不僅提供了文件訪問接口,還支持?jǐn)?shù)據(jù)管理,提供公共服務(wù)支撐功能。云存儲(chǔ)已經(jīng)成為存儲(chǔ)發(fā)展的一種趨勢(shì)。[2-3]
2.2Spring MVC
MVC作為WEB項(xiàng)目開發(fā)的核心環(huán)節(jié),正如三個(gè)單詞的分解那樣,C(控制器)將V(視圖、用戶客戶端)與M(模塊,業(yè)務(wù))分開構(gòu)成了MVC 。Spring MVC屬于SpringFrameWork的后續(xù)產(chǎn)品,已經(jīng)融合在Spring Web Flow里面。Spring 框架提供了構(gòu)建Web 應(yīng)用程序的全功能MVC 模塊。使用Spring 可插入的MVC架構(gòu),從而在使用Spring進(jìn)行WEB開發(fā)時(shí),可以選擇使用Spring的SpringMVC框架或集成其他MVC開發(fā)框架,如Struts1,Struts2等。[4]
2.3I/O流技術(shù)
在 I/O 流里,輸入輸出分為 4 步:格式化/解析,緩沖,編碼轉(zhuǎn)換和傳遞。 格式化/解析是指在內(nèi)部數(shù)據(jù)表示(以字節(jié)為單位)與外部數(shù)據(jù)表示(以字符為單位)之間進(jìn)行雙向轉(zhuǎn)換。緩沖是指用于在格式/解析與傳遞只加緩存字符序列。對(duì)于輸出較短的字符序列格式化之后并不馬上輸出,而是保存在緩沖區(qū)里,待累積到一定規(guī)模之后再傳遞到外部設(shè)備。編碼轉(zhuǎn)換是將一種字符表達(dá)式轉(zhuǎn)換成另一種字符表達(dá)式。多數(shù)情況下并不需要進(jìn)行編碼轉(zhuǎn)換。傳遞主要是與外部設(shè)備進(jìn)行通信。
多媒體文件識(shí)別系統(tǒng)的功能需求有以下幾個(gè)方面:
(1)該系統(tǒng)要可以對(duì)文件進(jìn)行上傳、下載、識(shí)別、詞頻查找等具體操作,以滿足教師、學(xué)生等多用戶的需求。
(2)該系統(tǒng)要給用戶提供可視化的操作界面,要有整框架展示功能,以便用戶快速的找到上傳和下載相關(guān)文檔并提取其內(nèi)容。
(3)該系統(tǒng)要盡可能多的以直觀的方式來(lái)展示文件系統(tǒng)的識(shí)別、上傳下載、詞頻的查找等。
(4)系統(tǒng)要顯示出上傳文件的名稱、上傳人、上傳時(shí)間和上傳路徑等信息。
(5)該系統(tǒng)要提供文件識(shí)別的查詢功能,并支持模糊查詢。輸入某個(gè)文件名稱,或者文件標(biāo)簽,點(diǎn)擊查詢結(jié)果,系統(tǒng)就會(huì)自動(dòng)進(jìn)行模糊查詢,將目標(biāo)文件或目標(biāo)文件標(biāo)簽在系統(tǒng)中展示出來(lái)。
根據(jù)功能需求對(duì)系統(tǒng)進(jìn)行設(shè)計(jì),主要模塊結(jié)構(gòu)如圖1所示,主要包括了文件上傳、下載、查詢、內(nèi)容提取、內(nèi)容轉(zhuǎn)換、詞頻統(tǒng)計(jì)等模塊。
圖1 系統(tǒng)模塊結(jié)構(gòu)圖
多媒體識(shí)別系統(tǒng)采用SQL Server 、Spring MVC、I/O流技術(shù)以及Commons File Upload 等相關(guān)開發(fā)技術(shù),在Eclipse 里采用Spring MVC框架來(lái)實(shí)現(xiàn)本系統(tǒng)的功能。
4.1文件上傳與下載
在Web應(yīng)用系統(tǒng)開發(fā)中,文件上傳和下載功能是非常常用的功能。瀏覽器在上傳的過程中是將文件以流的形式提交到服務(wù)器端的。系統(tǒng)采用Commons File Upload開源工具實(shí)現(xiàn)文件上傳功能。
FileUpload組件將頁(yè)面提交的所有元素(普通form表單域,如text和文件域file)都看作一樣的FileItem,這樣上傳頁(yè)面提交的request請(qǐng)求也就是一個(gè)FileItem的有序組合,F(xiàn)ileUpload組件可以解析該request,并返回一個(gè)一個(gè)的FileItem。而對(duì)每一個(gè)FileItem,F(xiàn)ileUpload組件可以判斷出它是普通form表單域還是文件file域,從而根據(jù)不同的類型,采取不同的操作--如果是表單域,就讀出其值,如果是文件域,就保存文件到服務(wù)器硬盤上或內(nèi)存中。部分代碼如下:
Public class UploadHandleServlet extendsHttpServlet {
Public void doGet(HttpServletRequest request,HttpServletResponse response)
Throws ServletException, IOException {
//得到上傳文件的保存目錄,將上傳的文件存放于WEB-INF目錄下,不允許外界直接訪問,保證上傳文件的安全
String savePath = this.getServletContext().getRealPath("/WEBINF/upload");
File file = newFile(savePath);
//判斷上傳文件的保存目錄是否存在if(!file.exists() && !file.isDirectory()) {
System.out.println(savePath+"目錄不存在,需要?jiǎng)?chuàng)建");//創(chuàng)建目錄file.mkdir();}
//消息提示
String message = "";
圖2 識(shí)別提取圖
圖3 詞頻統(tǒng)計(jì)效果
4.2文件內(nèi)容識(shí)別提取
文件內(nèi)容識(shí)別提取主要包含了幾個(gè)步驟:讀取指定文本文件對(duì)象;利用過濾器可以把所需信息讀取出來(lái);把讀出來(lái)的信息輸出。部分代碼如下:
public static void getList(File dir, ArrayList<File> list) {
list.add(dir);
File[] files = dir.listFiles();
for(File file : files){
if(file.isDirectory()){getList(file, list);}
elselist.add(file);}}
private static void writer2destFile(File destFile, ArrayList<File>list)throws IOException {
BufferedWriter bufw = new BufferedWriter(new FileWriter(destFile));
for(File file : list){
bufw.write(file.getAbsolutePath());
bufw.newLine();
bufw.flush();}
bufw.close();}
對(duì)文件內(nèi)容進(jìn)行識(shí)別提取后就要將其展現(xiàn)出來(lái),在展現(xiàn)過程中需要用到I/O流,用Java 中的I/O流寫入文件可以避免覆蓋原來(lái)的內(nèi)容,用這個(gè)方法 public FileOutputStream(String name,boolean append)throws FileNotFoundException, 將邏輯值 append 設(shè)為 false 時(shí),寫入的字節(jié)數(shù)據(jù)覆蓋文本原來(lái)的內(nèi)容,為true時(shí)即追加到原來(lái)文本的末尾。如圖2所示。
4.3詞頻統(tǒng)計(jì)
在一份給定的文件里,詞頻通常指的是某個(gè)特定詞語(yǔ)在該文件中出現(xiàn)的次數(shù)。根據(jù)文章生成單詞樹,使用深度優(yōu)先搜索遍歷單詞樹并將對(duì)應(yīng)單詞放入結(jié)果集中,得到詞頻表的主算法,供外部調(diào)用。本系統(tǒng)實(shí)現(xiàn)的詞頻統(tǒng)計(jì)效果如圖3所示。
本文通過分析相關(guān)技術(shù),實(shí)現(xiàn)面向教學(xué)的多媒體文件識(shí)別系統(tǒng),解決了如何從不斷產(chǎn)生的海量教學(xué)文件中識(shí)別和提取內(nèi)容,進(jìn)行詞頻統(tǒng)計(jì),方便多用戶對(duì)各類文件添加標(biāo)簽和關(guān)鍵詞,具有一定的技術(shù)前景和應(yīng)用價(jià)值。
[1]張莉.垂直搜索引擎中分詞和排序技術(shù)的研究與應(yīng)用[D].西南交通大學(xué).2014.
[2]周曉梅,宋燕燕.基于云存儲(chǔ)的校園文件管理系統(tǒng)研究與應(yīng)用[J].電子世界,2016(1):37-41.
[3]趙鐵柱,袁華強(qiáng).高性能的云存儲(chǔ)安全網(wǎng)關(guān)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2014,31(11):135-138.
[4] 舒禮蓮.基于Spring MVC的Web應(yīng)用開發(fā)[J].計(jì)算機(jī)與現(xiàn)代化,2013(11):167-168.
宋燕燕(1978-),女,浙江上虞人,碩士,講師,主要研究方向:多媒體技術(shù)、虛擬現(xiàn)實(shí)。
周曉梅(1980-),女,碩士,講師,主要研究方向:云存儲(chǔ)、信息管理。
周靈(1984-),女,在讀博士,講師,主要研究方向:教育技術(shù)。
江蘇省高校自然科學(xué)研究面上項(xiàng)目(15KJD520007);江蘇省高校自然科學(xué)研究面上項(xiàng)目(14KJD520011);江蘇省高校哲學(xué)社會(huì)科學(xué)研究項(xiàng)目(2015SJD324)。