⒊ 模塊的具體實現
在對關鍵詞模式的轉換中,我們立足于對現有的關鍵詞進行合理的擴展,即對體現關系的關鍵詞進行合理的近義或者同義擴展,并對疑問詞的位置進行適當的調換,力爭全方位、多角度、合理化的轉換問題模式。轉換的關鍵是用網絡中使用頻率較高的詞語代替句子中原有的關系詞。例:CBA包括多少支球隊?初步劃分為:CBA+包括+球隊。“包括”一詞在網絡中出現的頻率遠遠低于“有”,所以,在問題模式轉換過程中,將“包括”替換為“有”,提交給網絡的模式即為:CBA+有+球隊。
該模塊的代碼如下:
輸入 string;
Sqlstr=”select mainkey from biao1
Where mainkey-type=
(select mainkey-type
From biao2
Where enlarge-text=’$string’ )”
String=sqlstr
輸出 string
上述代碼的作用是:依次將問題理解模塊傳來的關鍵詞,依次與關鍵詞轉換表中的詞相匹配,有則返回主關鍵詞,和問題理解模塊分析出的實體詞一起提交給網絡,進行下一步的操作。
這其中涉及到對關鍵詞的擴展表的查詢,借用了SQL server中查詢語句“select”,通過獲取問題分析傳來的關鍵詞,對照擴展表,進行查詢、轉換。
其表結構如表3.3、表3.4所示:
表3.3 關鍵詞表
字段名 數據類型
Mainkey 文本
Mainkey-type 數字
表3.4 關鍵詞轉換表
字段名 數據類型
Enlarge-text 文本
Mainkey-type 數字
當然,此種轉換方式存在一定的局限性. 例如:含有“球隊+參加+比賽”,既可以問參加比賽的球隊數量,也可以用來問具體的哪些球隊。為了解決這一局限性,我們提出了常見問題知識庫的建立。
3.2.3 常見問題知識庫的建立
常見問題知識庫的建立是為了這樣的一個目的:直接給用戶一個簡介的答案。由于網絡信息的繁雜,及該系統的局限性等原因,對部分問題無法給出具體答案。我們覺得有必要建立這樣一個庫,一個立足于網絡的常見問題知識庫。即將用戶常見的、關心的問題,整理后存放入庫中。用戶點擊相關問題時,即可進入庫中,查看其答案。部分問題的答案因其篇幅等原因,暫時給出相關網站,用戶點擊問題后,在顯示相關網站的同時,觸發網絡連接,給用戶具體的網頁截取圖。
在此庫中,我們將問題分為以下幾種類型:球員、球隊、比賽、其它。
其表結構如表3.5所示:
表3.5 常見問題庫表
字段名 數據類型
question text
answer text
type text
此模塊運行界面如圖3.3所示:
圖3.3 常見問題庫
該模塊的建立代碼如下:
Dim myconn As New ADODB.Connection
Dim rs As New ADODB.Recordset
strconn = "provider=microsoft.jet.oledb.3.51; data source=D:\wenjian\db5.mdb"
Myconn.Open strconn
sqlstr = "select * from question where type like'球員'"
rs.Open sqlstr, myconn
List1.Clear
If Not rs.EOF Then
While Not rs.EOF
List1.AddItem "" & rs.Fields (1) & ""
rs.MoveNext
Wend
End If
根據上述代碼,可以將一些常見的問題依次分類的加入到庫中,用戶查看時可以根據自己的問題進行相關查詢。必要的時候,可以對該庫進行相應的修改。
上述模塊及關系的劃分,在具體的實現過程中可能有些變動,各種實體之間存在的關系可能也不止一種,體現關系的關鍵詞也會與現實存在差異。我們做這個系統的,一是為了檢驗我們前面所提出的“基于知識庫的問答系統”是否合理,是否可以順利實現,另一方面也希望對研究問答系統的其它模型有稍許幫助。系統中存在的種種問題及不足,我們力求最小化;模塊的劃分及選擇,我們力求大眾化;答案的模式取舍,我們力求簡單化。
實驗結果和分析
實驗平臺要求
Visual basic 6.0能夠運行的條件:Windows95、Windows NT或者更高的版本;Microsoft Windows95支持的cd-rom. Microsoft Windows95支持的VGA或分辨率更高的監視器; Windows 95/98下要求的24MB內存, Windows nt下要求32MB以上的內存[11] 。
具體實驗
實驗一:CBA有多少球隊?程序運行的界面如圖4.1所示: