楊 珺
(上海電力學院計算機與信息工程學院,上海 200090)
隨著互聯網絡技術的發展,人們需要在繁多的網上資源中獲得想要的信息[1],現在很多人都在使用像Google這樣的搜索引擎,以及Altavista,CNN,Babelfish,FreeTranslation等完成對信息的獲取.在線翻譯的優點很明顯,它并不需要客戶端,直接在網頁上使用就可以了,但隨著打開網頁所需要的瀏覽器功能的逐漸增多,耗費在打開網頁上的時間對用戶來說常常是不能忍受的,用戶每次使用在線翻譯都需要尋找翻譯網站,浪費了用戶的時間和費用.
因此,如何在提供網上在線翻譯服務的基礎上進行數據的二次利用,是值得研究的問題.本文通過建立一種在線翻譯服務的集成框架,實現多種在線翻譯程序的集成使用,提高了用戶使用此類服務的可操作性和實用性.
當前,網上數據的提供方式大都使用Web頁面形式進行用戶操作,當用戶為了得到相關信息時,其操作步驟為:打開網頁,在網頁中輸入具體內容,提交,最后得到結果[2].例如,Google 的翻譯頁面如圖1所示.
這是一種典型的網上用戶信息獲取方法,但這種方法對于訪問頻度較高的用戶而言,顯得不是很方便.如果能夠向用戶提供一種不需要通過瀏覽器瀏覽網頁獲取信息,而是通過簡潔的客戶端方式并具有一定的數據挖掘分析能力的使用方式獲取信息的話,則將大大方便用戶使用.兩種使用模式的基本流程對比如圖2所示.

圖1 Google網上翻譯屏幕

圖2 兩種不同的處理模式對比
圖2 b通過前端的用戶信息處理,對網上Web數據提供的信息在內部進行二次數據的加工處理.在此模式下,客戶端實施數據統計、挖掘等處理方法,并對已有數據引擎的提供者進行數據的二次處理.但對利用他人提供的信息進行信息處理時必須考慮合法性,以及道德等相關問題.基于第3方信息提供的網絡信息數據的挖掘,網絡通訊可以采用定量(不返回所有搜索信息)、定期(有限時間周期)等方法來緩解Web數據信息提供服務器運行時的壓力.
信息的傳遞通過網頁數據的形式進行.網頁處理的兩大部分包括:網頁數據內容獲取;數據內容解析.網頁數據內容獲取主要完成具體網頁內容的下載和內部網頁內容的下載;數據內容解析,主要用于解析網頁中感興趣的內容[3-5].
具體的解析過程如圖3所示.其數據解析大致框架流程包括以下幾個方面:

圖3 框架流程
(1)初始化 包括一些特定數據信息服務的連接信息、本地功能性連接的初始過程;
(2)判斷是否繼續連接Web數據服務 對于向特定的Web數據提供服務,有必要判斷是否為可使用數據源信息;
(3)繼續解析要連接的提供信息服務的網絡地址 考慮到地址樹的各個數據源不同,對提供的不同信息、不同地址實施具體的數據解析工作;
(4)數據獲取的post方法 對于不同的數據信息,不采用http的get方法實施數據的獲取,而是使用post向數據源請求數據,并在此過程中解析網絡數據源反饋的數據;
(5)繼續獲取下一個數據網絡URL地址 一個網頁中的信息可能通過URL標記到其他數據源的URL中,因此有必要通過當前的URL網頁內容來獲得此類完整的數據源URL樹.
(6)繼續下一個操作 通過迭代方法獲取下一個數據源URL的數據內容.
模型的具體實現采用VC編碼實現,表1描述了對于一網頁內容所采用的一些關鍵解析方法.

表1 客戶端連接時的一些典型方法
采用以上框架模型的設計方法可以實現網上在線翻譯的集成應用.
基本處理步驟如下:通過HTTP數據交互方法將客戶端信息發送到服務器端,Google翻譯時發送和接受具體標簽,然后對返回數據進行數據內容解析,取得要獲得的具體內容.Google翻譯時發送和接受的具體標簽內容描述如下.
<select name=langpair>:選擇性標簽.用以標記相互翻譯的轉換語言對,例如英文到中文的翻譯,其值為en|zh,英文對法文則是en|fr等.
<text area name=text rows=5 cols=45 wrap=PHYSICAL>文本框內容,具體標記的是要被翻譯的內容.
<input type=hidden name=hl value="zh-CN">隱藏域內容,用以標記具體瀏覽器字符,顯示屬性.
<input type=hidden name=ie value="UTF8">隱藏域內容,用以標記具體發送的字符編碼.
通過以上數據包發送到數據信息提供服務器,會返回相關的狀態和數據信息,要想獲取相應的數據就必須解析返回的數據內容.需要解析的標簽如下:
<textarea name=q rows=5 cols=45 wrap=PHYSICAL>文本框內容,為服務器返回時的具體被翻譯的內容.
(1)取用戶端數據 用戶界面輸入;
(2)構造要發送的網絡地址 如對應Google翻譯服務的發送地址 http://translate.google.com/translate_t;
(3)構造客戶端要發送的內容 取客戶輸入時的相應數據,構造對應的發送參數,如langpair=en|zh&hl=en&ie=UTF8&text=I am graduate student;
(4)發送數據 通過地址和地址參數發送到具體的服務器;
(5)接收返回的數據 通過解析接收到的文本內容(解析標簽<textarea name=q rows=5 cols=45 wrap=PHYSICAL>),獲得相應的翻譯后內容;
(6)解析返回數據的內容 顯示具體的翻譯內容.
多個網絡翻譯服務的客戶端界面如圖4所示.主要包括了一組兩個大的文本框:一個用于讓用戶輸入原文;一個用于顯示翻譯結果.兩個文本框都支持多行文本的輸入.
下面有3個按鈕:一個是“雅虎翻譯”的按鈕,點擊此按鈕可通過雅虎在線翻譯處理數據;一個是“金山翻譯”的按鈕,點擊此按鈕,數據則通過金山翻譯的網站來處理數據;一個是“退出”按鈕,以方便用戶退出.此外,還有3個網站超鏈接.這3個網站都是在線翻譯網站,以便用戶在得不到想要結果的時候直接登錄網站進行查詢.下面以金山翻譯為例說明在線翻譯服務的客戶端工作原理.

圖4 多個在線翻譯服務的客戶端集成
金山翻譯主要是通過金山詞霸的在線翻譯網站來處理用戶想要翻譯的數據,其功能主要分成兩個部分:一是數據請求部分,先由程序發送請求并傳遞參數,然后再接收返回的數據流;二是數據截取部分,根據數據流內的特定標記來截取需要的數據.
數據請求部分的代碼:


該部分程序首先確定了一個url就是http://www.iciba.com/而 其 中 的 參 數 為 texts,用Webrequest類向服務端發送請求,服務端在接收請求之后便會響應客戶的請求,服務端返回響應的數據流,然后對接收到的數據流進行處理,通過wireshark工具進行分析,得知服務端返回的數據流都是文本數據,因此使用streamreader類來處理文本文件,并對接收到的數據流進行編碼.此時,就處理好了接收到的數據,但所得到的數據中絕大部分是不需要的,因此需要對這些數據進行篩選.

使用這段代碼的主要目的是進行數據篩選,主要的工作過程如下:首先是準備工作,可以通過查看網頁的源文件以及wireshark抓包工具來分析服務器響應所返回的數據,通過多次實驗可以發現,需要的數據均存在于字符串<ul class="tab_c_ul font_black marginleft10 margintop10 font14"> <li>"和字符串" </span> <divclass="show_exp"style="color:#888888">"之間,再截取這兩個字符串作為標記來定位光標,可以得到結果前面的光標位置begin,以及結果的長度j-begin,最后通過substring函數截取結果.
本文建立了一種基于框架的在線翻譯服務客戶端應用集成,實現了多種在線翻譯程序的集成使用,提高了用戶使用此類服務的可操作性和實用性.如何使用已有數據信息提供引擎提供的數據,來實現具體的數據應用,以及如何利用框架進行數據的處理加工是一個很有研究價值的課題.
[1]CHANG Wei-lun,YUAN Soe-tsyr.A synthesized learning approach for Web-based CRM[J/OL].[2001-12-12].http://robotics.stanford.edu/users/ronnyk/WEBKDD2000/.
[2]譚瓊,李曉黎,史忠植.一種實現搜索引擎個性化服務的方法[J].計算機科學,2002,29(1):232-235.
[3]李昌清,李艷霞.基于動態異構的Web信息集成網頁分析方法[J].計算機應用研究,2007,24(12):204-206.
[4]LAENDER AH F,R1BElRO-Neto B A.A brief survey of web data extraction tools[J].SIG2MOD,Record,2002,31(2):84-93.
[5]李寶利,陳玉忠.信息抽取研究綜述[J].計算機工程與應用,2003,39(10):1-5.