智慧型資訊處理系統核心實現
程 軍1 智慧型資訊處理現狀簡介
目前網上推出的各種新型服務模式,如智慧型agent,智慧型檢索,資訊挖掘,資訊推送,資訊導航,知識發現等功能,其核心問題之一是如何解決資訊的自動分類。
關於資訊的自動分類技術,主要有兩種方法:一種是以美國salton教授提出的向量空間模型(vector space mode, 簡稱v**)理論為基礎;一種是基於agent的超文字分類方法,其基礎為自適應反饋理論(adaptive resonance theory, 簡稱art)。
目前網上的分類系統,大部分是採用v**方法。利用詞表作為向量空間中的變數,由於中文詞表非常巨大,一般有幾十萬詞,因此此方法的主要問題之一是速度慢。
本文所介紹的核心也是採用v**方法,但由於利用了漢字的特點,只用檔案中的漢字作為向量空間中的變數;另外採用兩級索引,分別是檔案索引和字索引,所期望達到的目標主要是在保障查全率和查準率的基礎上,達到較快的檢索速度。測試以"中美百萬冊書專案"數位化加工的圖書網頁為基礎,選擇了其中220本書中頁面內容較多的檔案,並涵蓋了《中圖法》的22個大類,共24518個檔案,每個檔案平均大小為3k,總共75m 資料的條件下,建立索引大約需要2分16秒,查詢時間都在亞秒級;另一特點是索引檔案小,一般僅是原檔案的1/6左右。測試環境為:pentium 1.6g pc機,執行速度主要與cpu計算速度相關。
此核心主要包括兩部分:一部分是建立索引,指對原始檔案建立索引檔案,以用於檢索;另一部分是匹配檢索,利用建立好的索引檔案,和使用者選擇的新檔案進行匹配,找到原始檔案中與之相似的檔案。
2 建立索引
字的出現頻率與計算檔案相關度有很大關係,因此首先要找到那些在各種檔案中出現頻率都很高的字,將其排除;然後根據檢索需要,對選擇的所有原始檔案,按順序建立三個索引:檔案編號索引、檔案索引和字索引。
2.1 統計字頻表
通過對人民**電子版83 456 990個文字進行統計,我們發現除了"的"字等虛字外,其它字的出現頻率是有一定規律的(見下表)。高頻字中有許多都是虛字,在所有種類的文字中出現的頻率都非常高,對於文字的分類和檢索意義不大,所以在對文字進行預處理時將其去掉。低頻詞在絕大多數檔案中都沒有出現,為了提高檢索速度,將其去掉,其中有2600多字的出現頻率在0.0001%以下,將這些字也去掉。
2.2 建立檔案編號索引
此索引非常簡單,主要就是記錄下資料庫中包含的所有檔案路徑。通過選擇目錄,進行遍歷,將其中的所有網頁檔案路徑儲存下來。結構為:
檔案路徑: a b c ……
檔案編號: 1 2 3 ……
通過檔案編號可以快速地查詢到此編號的檔案路徑,以便訪問此檔案,這個索引檔案在建立索引和檢索時都要用到。
2.3 建立檔案索引
對於每乙個網頁檔案,對其各個字的出現次數進行統計,找出出現頻率最高的前20個字,將字以及其出現次數、次數的平方和記錄下來,組成檔案索引。這些字組成了檔案的向量空間,在後面進行相關性排序中與新檔案的空間向量進行計算,獲得其向量夾角的cos值,以便確定相關性。
檔案索引 檔案1 字a1 出現次數,字a2 出現次數,……,字a20 出現次數 次數的平方和
檔案2 字b1 出現次數,字b2 出現次數,……,字b20 出現次數 次數的平方和
檔案3 字c1 出現次數,字c2 出現次數,……,字c20 出現次數 次數的平方和
……建立索引時,最花費cpu時間的是建立檔案索引,因為要讀入每個字,計算出現次數,還要排序,找出前20個。筆者利用漢字編碼的連續性(連續兩個字元的第乙個字元 ascii 碼大於 175 且第二個字元ascii碼大於 160),將漢字進行雜湊,這樣只需定義乙個陣列: int count[72][95]; 既可容納下標準漢字字符集gb2312的所有漢字的出現次數。對於每個漢字,只需要計算兩次減法,一次累加,即可完成計數(count[0x**-0xb0][0x**-0xa1]++;)。排序則利用氣泡排序法,雖然在排序演算法中它是最臭名昭著的演算法,但在這裡由於我們只需要找到出現頻率最高的20個字,它反而成了效率最高的演算法,無論多大的檔案,只需要查詢20趟,就可以完成排序。
2.4 生成字索引
對檔案索引所紀錄的資料進行統計,其目的是找出每個字都出現在哪個檔案裡。按下面的順序記錄下來,就組成字索引。此檔案用於在下面的粗篩選中,找到與新檔案在用字上類似的原檔案。
字索引 字1 檔案a1,檔案a2,…… //表示字1在檔案a1、a2等出現過
字2 檔案b1,檔案b2,……
字3 檔案c1,檔案c2,……
……3 檢索
檢索分為兩步:一是粗篩選;二是相關性排序。粗篩選主要是找到與新檔案可能類似的檔案,而相關性排序再計算兩者的向量空間夾角,定量地給出兩者的相關度。通過採用兩級檢索,極大的減少了檢索時的計算量。因為計算向量時所用的乘法和除法計算速度較慢,如果再計算100萬個檔案的相關性,根本無法保證檢索的秒級響應。粗篩選將候選檔案減少到原檔案數量的1/1000,這樣如果原檔案有100萬個,經過粗篩選後將只剩下1000個左右,再對這些檔案進行向量空間的計算,就完全可以保證檢索的秒級響應了。下面對其進行詳細說明:
3.1 粗篩選
由於計算向量空間需要較大的計算量,因此先對可能相似的檔案進行粗篩選,能夠大大減少計算量,提高程式匹配速度。具體步驟如下:
① 首先使用者選擇一篇新文獻,然後要求系統找出庫中相似的檔案。
② 統計新文獻中所有字的出現頻率,找出前20個出現最多的字。
字1 出現次數,字2 出現次數,……,字20 出現次數
③ 從字索引中找出這20個字,對後面所跟的檔案代號進行查詢,然後再對每乙個檔案統計出相同的字數,得到如下結果:
檔案1 相同的字數
檔案2 相同的字數
檔案3 相同的字數
……④ 如果此檔案中出現n個以上相同的字,則作為候選物件。在我上面所說的樣本空間中,經過測試,向量空間維數為20時,大約在n=8時,能夠將候選物件限制在原檔案的1/1000左右。按照此原則,如果庫中有100萬個檔案,經過粗篩選後大約剩下1000個檔案。再對這1000個檔案進行相關性排序,就可以保證檢索響應在秒級以內了。
3.2 相關性排序
利用檔案索引計算新文獻的向量xm與原檔案向量xn (n=1,2,3┈)的相關性,計算余弦
為兩檔案所對應向量空間的積
為新檔案的向量長度
為原檔案的向量長度
根據計算所得的余弦值,我們可以用來判斷新檔案與原檔案資訊的相關性,cos值越大的檔案,兩檔案之間的夾角越小,也就與新檔案越相關。對排序後的結果給使用者返回前100個檔案,一般就能夠滿足使用者的需求了。 (責任編輯 皮介鄭)
學生資訊處理程式
實現乙個學生資訊處理程式,計算乙個學生的四年平均成績。要求實現乙個代表學生的類,並且類中所有成員變數都是 私有的 補充下列程式中的 student 類以實現上述功能。include include include include include include using namespace std...
合作資訊處理模型
合作資訊處理模型 介紹 b業務經理的到來a公司洽談合作,a公司老闆接待 會晤,經 握手完畢 老闆會做下乙個和後續的管理c。允許c直接地a進入談判,然後,c找了幾個技術人員 c1 c2 c3 b多帶幾個業務人員 b1 b2 b3,模組 然後c與b協定手下的搭配。然後手下都認識一下,留下 接下來的各個模...
計算機資訊處理
文字格式的資訊常用編碼的方法來表示,文字中每乙個不同的符號被指定為乙個唯一的位模式。這樣,文字就被表示成乙個長的位串,其中相應的位模式代表了原文中相應的符號。數值的表示 當記錄資訊是純數值時,採用二進位制計數法來表示。音訊的表示 音訊表示聲音或者 音訊一般用一種模擬的連續波形表示,即聲波。要在計算機...