7 44 基於詞頻的檔案相似度 (30 分

2021-09-29 11:29:52 字數 1295 閱讀 3985

實現一種簡單原始的檔案相似度計算,即以兩檔案的公共詞彙佔總詞彙的比例來定義相似度。為簡化問題,這裡不考慮中文(因為分詞太難了),只考慮長度不小於3、且不超過10的英文單詞,長度超過10的只考慮前10個字母。

輸入格式:

輸入首先給出正整數n(≤100),為檔案總數。隨後按以下格式給出每個檔案的內容:首先給出檔案正文,最後在一行中只給出乙個字元#,表示檔案結束。在n個檔案內容結束之後,給出查詢總數m(≤10

​4​​ ),隨後m行,每行給出一對檔案編號,其間以空格分隔。這裡假設檔案按給出的順序從1到n編號。

輸出格式:

針對每一條查詢,在一行中輸出兩檔案的相似度,即兩檔案的公共詞彙量佔兩檔案總詞彙量的百分比,精確到小數點後1位。注意這裡的乙個「單詞」只包括僅由英文本母組成的、長度不小於3、且不超過10的英文單詞,長度超過10的只考慮前10個字母。單詞間以任何非英文本母隔開。另外,大小寫不同的同一單詞被認為是相同的單詞,例如「you」和「you」是同乙個單詞。

輸入樣例:

3aaa bbb ccc

bbb ccc ddd

aaa2 ccc eee

is at ddd@fff

21 2

1 3輸出樣例:

50.0%

33.3%

根據要求處理詞語:單詞長度在[3,10],超過10的部分只取10,非英文本母都視作分隔符;

處理詞語的時候用乙個set的陣列來存放每個檔案的詞語;

輸入了要對比的檔案編號之後,將兩個檔案編號對應的詞彙進行對比,記錄重複的詞彙數;

結果就是 ans = 重複的詞彙數 / (兩個檔案詞彙數之和-重複的詞彙數)

#include

#include

#include

#include

using

namespace std;

unordered_set file_word[

110]

;int n,k;

void

deal

(string s,

int file_no)

else}}

intmain()

while

(s!=

"#");}

cin >> k;

for(

int i=

0;iprintf

("%.1lf%%\n"

,total==0?

0:common_cnt*

100.0

/total);}

return0;

}

7 44 基於詞頻的檔案相似度(30 分)

本題目要求實現乙個簡化的熱門話題推薦功能,從大量英文 因為中文分詞處理比較麻煩 微博中解析出話題,找出被最多條微博提到的話題。輸入格式 輸入說明 輸入首先給出乙個正整數n 105 隨後n行,每行給出一條英文微博,其長度不超過140個字元。任何包含在一對最近的 中的內容均被認為是乙個話題,輸入保證 成...

7 44 基於詞頻的檔案相似度 30 分

先檢查輸入的單詞是否分割正確,再進行統計。注意點 單詞大小寫不敏感 單詞長度大於2且小於等於10,以非字母分割。兩個檔案的單詞總量如果有相同的單詞,只統計一次。include include include include include include using namespace std co...

7 44 基於詞頻的檔案相似度 30分

實現一種簡單原始的檔案相似度計算,即以兩檔案的公共詞彙佔總詞彙的比例來定義相似度。為簡化問題,這裡不考慮中文 因為分詞太難了 只考慮長度不小於3 且不超過10的英文單詞,長度超過10的只考慮前10個字母。輸入格式 輸入首先給出正整數n 100 為檔案總數。隨後按以下格式給出每個檔案的內容 首先給出檔...