費揚 杜慶治



摘要:為了進行關鍵詞的文本查重和文本檢索,設計出基于matlab的文本處理系統。首先,研究文本處理系統的相關原理及技術;其次,設計系統的總體框架,細化功能;最后,采用matlab語言來設計系統,利用多個TXT文本構建語料數據庫,設計出基于matlab的文本處理系統應用程序。測試表明:該系統能有效地實現文本查重和文本檢索。
關鍵詞:MATLAB;文本處理;文本查重;文本檢索;TF-IDF
中圖分類號:TP319 文獻標識碼:A DOI:10.3969/j.issn.1003-6970.2017.08.044
本文著錄格式:費揚,杜慶治·基于madab的文本處理系統的設計與實現[幾軟件,2017,38(8):226-229
引言
隨著計算機及網絡技術的不斷發展,信息技術進入了高速發展時期,信息以電子文檔形式呈現在大眾面前越來越普遍,而電子文檔中文本文檔占據重要位置。要想實現在海量的文檔中如何快速有效地進行文本信息的查重與檢索,需設計出一個針對TXT文檔格式的多文檔的文本處理系統。信息檢索的核心技術是全文檢索技術,全文檢索是以各種計算機數據諸如文字、聲音、圖像等為處理對象,提供按照數據資料的內容而不是外在特征來實現的信息檢索手段。文本處理系統里的全文檢索是現代信息檢索技術的一個重要的分支,它極大地提高了從大量紛繁復雜的數據中查找特定信息的效率。文本處理系統能實現對指定目錄下的目錄或文件的遍歷
和檢索。完成多文檔文本處理系統的設計與開發,為用戶提供一個快捷、安全的信息檢索渠道。利用matlab設計系統操作簡單實用,比其他編程語言更加容易實現數據分析。
1 文本處理原理及相關技術
1.1 文本處理
文本處理系統主要包含文本查重和文本處理兩個部分。文本查重顧名思義就是查找關鍵詞在文本中的重復率。文本檢索(Text Retrieval)是信息檢索的一部分,是指根據文本內容,如關鍵字、語意等對文本集合進行檢索、分類、過濾等。當知道某個關鍵詞在文本中重復率較高時,可以從關鍵詞可以粗略的判斷出該文章的類型,對某關鍵詞進行文本檢索就可以知道關鍵詞在語料庫中所占權重,將包含關鍵字的文檔挑出來作為檢索結果呈現給用戶[34]。
1.2 TF-IDF
TF-IDF(term frequency-inverse document frequency)是一種用于信息檢索與數據挖掘的常用加權技術,是一種統計方法,用以評估一字詞對于一個文件集或一個語料庫中的其中一份文件的重要程度。字詞的重要性隨著它在文件中出現的次數成正比增加,但同時會隨著它在語料庫中出現的頻率成反比下降。
TF(Term Frequency,詞頻)是指某個關鍵詞在特定文件中出現的頻率。一般情況下,同一個關鍵詞在長文件里會比短文件的詞數要高,關鍵詞卻與文件大小無關,為了防止偏向長文件情況,需要對詞數進行處理,詞頻就是對詞數的歸一化,[6_7]計算公式如式(1)所示。
關鍵詞a在某特定文件中出現的次數 (n某特定文件里所有字詞的數目IDF(Inverse Document Frequency,逆向文件頻率)是一個詞語普遍重要性的度量,打個比方說,如果包含某關鍵詞的文檔很少,IDF很大,則說明該關鍵詞能很好地將該類文檔區分開來,具有很好的類別區分能力。某一特定詞語的IDF,可以由總文件數目除以包含該詞語之文件的數目,再將得到的商取對數得到。計算公式如式(2)所示。
包含關鍵詞a的文檔數
2 系統的設計和實現
2.1 系統總體功能設計
本系統主要是利用matlab語言來編程實現,最后生成EXE(executable program,EXEFile)可執行程序更加方便使用。開發系統時充分考慮到系統的開發背景和系統目標等信息,使系統設計的更加合理。本系統為了更好地對文本文檔進行關鍵詞的查重和權重檢索,將系統分為兩個部分:一個是文本查重,一個是文本檢索。系統的總體設計框圖如圖1所示。通過該應用程序能很好地實現信息檢索,操作簡單實用,而且可以在任意電腦運行。
2.2 系統詳細設計和實現
2.2.1 系統的主要功能
本系統主要包括兩個部分:一個是文本查重,一個是文本檢索。文本查重主要是用來統計關鍵詞在文章中出現的重復率,文本檢索主要是用來統計關鍵詞在語料庫中出現的情況及TF-IDF檢索情況。
2.2.2 系統模塊的設計
為了直觀的看到文本查重和文本檢索信息,將兩個模塊放在同一界面來進行設計,文本處理界面如圖2所示。在設計系統時,除了要完全實現該系統的功肯巨外,要考慮到用戶使用的便利性,將MATLAB程序輸出成EXE應用程序,同時將運行環境嵌套到里面。軟件的外觀框架結構的設計是基礎工作,組成模塊是各具應用服務功能和結構特點的,兼容性和合理性是設計模塊的基礎理論依據。
2.2.3 系統功能的實現
由系統的設計可以知道,系統主要功能模塊涉及兩個部分:文本查重及文本檢索。因各模塊設計不同,需要根據相應原理來實現其功能。
(1)文本查重模塊的實現文本查重首先需要讀取所需查重的文本,然后設定需要查重的關鍵詞,然后點擊相應的功能按鈕,進行文本關鍵詞信息的統計和查重。文本查重模塊利用靜態文本來顯示文字,這些文字主要用來提示使用者下面進行什么操作。利用可編輯文本、按鈕來實現統計和查重等操作。文本信息統計主要是獲取關鍵詞在文本中出現的次數和整個文章的文本數。查重就是把關鍵詞數與文章的文本總數相除。
文本查重模塊主要利用uigetfile函數讀取文本,其功能的代碼如下所示:
文本查重模塊主要利用strcmp函數來判斷是否找到關鍵詞,利用for循環來統計次數,實現統計功能的代碼如下所示。
文本查重模塊中重復率主要是計算關鍵詞在文檔出現的比率,其代碼如下所示:set(handles.edit5,String,count/N)
(2)文本檢索模塊的實現文本檢索主要采用的TF-IDF檢索方法進行關鍵詞權重檢索,文本檢索需要有相應的語料庫做檢索的依據,先統計語料庫信息,如語料庫文件夾名及文件夾里面的文檔數,然后讀取檢索文本文檔,輸入關鍵詞進行TF-IDF檢索。文本檢索模塊利用列表框、按鈕來實現數據的顯示和讀取,可編輯文本來顯示讀取數據的路徑和檢索內容,最后做TF-IDF檢索分析。
統計語料庫文檔數主要是利用dir和length函數來實現,代碼如下所示:
統計關鍵詞在語料庫中檢索信息,實i其功能主要是利用fopen和fscanf讀取文本,for循環來讀取全部文本。在讀取文本信息時,利用strcmp函數和for循環來統計關鍵詞在各個文本中次數,利用length函數統計各個文本總數。實現其功能的代碼如下:
文本處理系統文本檢索采用的是TF-IDF檢索,將上面公式(1-2)代碼化,TF實現和上面查重類似這里不做介紹,主要介紹IDF的實現,IDF的計算需要調用前面關鍵詞在語料庫各個文本中檢索信息,利用函數eq來判斷文本是否包含關鍵詞,沒有將其剔除,利用for循環來實現統計包含關鍵詞的文檔數,其功能實現代碼如下所示。
計算IDF,文檔頻率IDF=log(語料庫的文檔總數(包含該詞的文檔數+1))
2.3 數據庫設計
文本處理系統里除了需要一些用于文本查重和檢索的TXT文本外,還需要一個由多文本組成的語料庫,實際上就是一個由多文本組成的文本數據庫。語料庫是語料庫語言學研究的基礎資源,也是經驗主義語言研究方法的主要資源。應用于詞典編纂,語言教學,傳統語言研究,自然語言處理中基于統計或實例的研究等方面。為了便于MATLAB讀取語料庫,將語料庫里面的文檔按照1,2,3...來進行編號。MATLAB提供的系統函數fopen和fscanf函數可以讀取TXT文本,利用for循環就能將語料庫里全部文本讀取介紹了文本處理相關原理及技術,設計與實現了基于matlab的文本處理系統。經過電腦測試表明,功能模塊運行正常,基本滿足功能需求。該系統在文本處理研究領域具有重要價值,給研究者帶來巨大的方便,尤其是很容易幫研究者做TF-IDF檢索。