在前面我們討論的都是布林查詢,因此得出的結果要麼匹配,要麼不匹配,當匹配的結果很多時,就會發現我們需要對文件進行排序;
文件除了文字外還有元資料,比如建立時間、文件標題等,因此我們也可以對他進行限制;比如限制查詢文件結果必須是2023年發表的;
引數化索引(parametric index):某個字段取值存在一定限制,如取值範圍的限制,日期,則為引數化索引;
域索引:某個字段取值沒有任何限制,比如標題,可以是任意文字;
一篇文件有域f1,f2,f3,而每個域都有不同的權重;
每個域都有乙個權值w1,w2,w3;權值的確定是通過機器學習(訓練集)所得;
s(q,d)=w1*s(q,f1)+w2*s(q,f2)+w3*s(q,f3);
因此s(q,d)只是計算出一篇文件和查詢的域得分;
一般給定查詢,我們對於每個詞項迭代,分別計算他與每篇文件的得分;然後把查詢詞項在某篇文件的得分相加就得到查詢與文件的匹配情況;
詞項在文件中的權重就是詞項在文件中出現的次數;
詞袋模型(bag of word model):詞項在文件中的次序被忽略,只關心出現的次數;
相比布林檢索模型,有了很大的改進;
tf:乙個詞項在某一篇文件中出現的次數;
tf表示的是詞項的權重僅僅依靠出現次數而定,這樣會出現問題,比如the,在文件中出現次數很多,tf很高,但是這個詞一點也不重要;
為了方便,一般我們都把tf值存在倒排索引的posting中,而idf值存在dictionary中;
如果只依靠tf作為權值,則認為每個單詞在文件中的重要性是一樣的;
因此我們需要引入其他權重表示;
df:乙個詞項在多少個文件中出現過;
idf:df的倒數,當乙個詞項在越多的文件中出現過,idf值越低;
cf:乙個詞項在文件集中出現過幾次;
,n表示文件數目;
因此我們需要結合tf-idf進行權重計算;
每篇文件的得分是通過查詢的每個詞對於這篇文件的得分之和求得;
已知query,collections,需要在文件集中尋找與query相關的文件;
我們通過將query分割成一組詞,然後對於每個詞,在文件集中計算tf-idf值,最後把全部的tf-idf的值加起來即是針對一篇文件的得分;
主要思想:把文件看成是詞項的序列,即向量;
構成詞項-文件矩陣,裡面的每個值都是特定詞項對應特定文件的權重,表示詞項在文件中的重要性;
歐式歸一化:給定(n1,n2,n3,n4);對於這個向量進行歸一化,則為(n1/n,n2/n,n3/n,n4/n);其中n為歐幾里德長度;
0.將每篇文件構造成向量;
1.兩篇文件分別歸一化;
2.向量點積;
使用者可以通過這個方法查詢與某個網頁類似的網頁;
查詢為乙個向量,文件集組成了文件向量;
對於查詢向量來說,每個值表示詞項在查詢中的重要性(權重),可以通過tf或者df或者tf-idf作為權重;
比如:查詢的權重是tf-idf並歸一化;
而文件向量的權重是tf值並歸一化;
最後將兩個向量乘積就是(q,d)的得分;
上圖中,查詢向量通過計算權重得到(0,1.3,2.0,3.0);
注意:比如查詢向量為auto car,但是不一定會使得最後的查詢權重為(1,0,1,0
);因為如果不用tf,只使用df,
則查詢向量的權重為(2.3,1.3,2.0,3.0
);
第六章總結
6.1 使用滑鼠 6.1.1 滑鼠時間和滑鼠訊息 根據使用者操作滑鼠時滑鼠的位置,滑鼠訊息分為兩類 客戶區滑鼠訊息和非客戶區滑鼠訊息。1.客戶去滑鼠訊息 2.當滑鼠游標位於視窗的使用者區時,將生成客戶滑鼠訊息。滑鼠訊息和鍵盤訊息有所不同,windows 只將鍵盤有訊息傳送給具有輸入極點的視窗,但滑鼠...
第六章總結
為了解決連續計算的問題需求,而產生了迴圈控制結構。若重複次數已知,則為技術控制,若次數未知,結構為條件控制則為條件控制結構。迴圈結構分兩種結構,三種語句。一 當型迴圈,先判斷,再執行。while語句,滿足條件即執行迴圈。for語句。for語句為一種特殊的當型迴圈,也是最常用的迴圈結構。其結構為 初始...
第六章總結
一 迴圈控制結構 1 學過 for 迴圈 怎麼用 for 初始化表示式 迴圈控制表示式 增值表示式 初始化表示式 for 迴圈控制表示式 增值表示式 初始化表示式 for 迴圈控制表示式 感悟 for迴圈多用於計數控制的迴圈 如果知道迴圈次數,多用for迴圈 for語句中間的迴圈表示式,可以與迴圈變...