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

2021-10-10 00:12:24 字數 1649 閱讀 4876

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

輸入格式:

輸入首先給出正整數n(≤100),為檔案總數。隨後按以下格式給出每個檔案的內容:首先給出檔案正文,最後在一行中只給出乙個字元#,表示檔案結束。在n個檔案內容結束之後,給出查詢總數m(≤10^​4​​ ),隨後m行,每行給出一對檔案編號,其間以空格分隔。這裡假設檔案按給出的順序從1到n編號。

輸出格式:

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

輸入樣例:

3

aaa bbb ccc

#bbb ccc ddd

#aaa2 ccc eee

is at ddd@fff#2

1213

輸出樣例:

50.0

%33.3

%

#include

#include

#include

using

namespace std;

int n, m, same[

101]

[101

], cnt[

101]

, a, b;

mapbool

> mp[

101]

;int

main()

else

for(

auto

& it : mp[i]

)for

(int j =

1; j <= i; j++)if

(mp[j]

.find

(it.first)

!= mp[j]

.end()

) same[i]

[j]= same[j]

[i]+

= mp[j]

[it.first];}

cin >> m;

for(

int i =

0; i < m; i++

)return0;

}

改進前:【超時】

#include

#include

#include

using

namespace std;

intmain()

}if(s.size()

>2)

} v[i]

= st;

} cin >> m;

for(

int i =

0; i < m;

++i)

return0;

}

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

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

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

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

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

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