7 35 詞頻統計 (30 分)

2021-09-02 20:08:51 字數 2186 閱讀 5874

請編寫程式,對一段英文文字,統計其中所有不同單詞的個數,以及詞頻最大的前10%的單詞。

所謂「單詞」,是指由不超過80個單詞字元組成的連續字串,但長度超過15的單詞將只擷取保留前15個單詞字元。而合法的「單詞字元」為大小寫字母、數字和下劃線,其它字元均認為是單詞分隔符。

輸入格式:

輸入給出一段非空文字,最後以符號#結尾。輸入保證存在至少10個不同的單詞。

輸出格式:

在第一行中輸出文字中所有不同單詞的個數。注意「單詞」不區分英文大小寫,例如「pat」和「pat」被認為是同乙個單詞。

隨後按照詞頻遞減的順序,按照詞頻:單詞的格式輸出詞頻最大的前10%的單詞。若有並列,則按遞增字典序輸出。

輸入樣例:

this is a test.

the word 「this」 is the word with the highest frequency.

longlonglonglongword should be cut off, so is considered as the same

as longlonglonglonee. but this_8 is different than this, and this,

and this…# this line should be ignored.

輸出樣例:(注意:雖然單詞the也出現了4次,但因為我們只要輸出前10%(即23個單詞中的前2個)單詞,而按照字母序,the排第3位,所以不輸出。)

235:this

4:is

使用make_pair():

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

mapint> mp;

vectorint>

> v;

bool

cmp(pairint> a,pairint> b)

intmain()

else}}

mapint>

::iterator it;

for(it=mp.

begin()

;it!=mp.

end(

);it++

)sort

(v.begin()

,v.end()

,cmp)

cout

size()

/10;for

(int i=

0;i)return0;

}

使用結構體:

#include

#include

#include

#include

#include

#include

using

namespace std;

struct nodep;

mapint> mp;

mapint>

::iterator it;

vector v;

bool

cmp(node a,node b)

intmain()

else

if(c==

'#')

break;}

}for

(it=mp.

begin()

;it!=mp.

end();

++it)

sort

(v.begin()

,v.end()

,cmp)

; cout

size()

/10;for

(int i=

0;i)return0;

}

7 35 詞頻統計 (30 分)

7 35 詞頻統計 30 分 請編寫程式,對一段英文文字,統計其中所有不同單詞的個數,以及詞頻最大的前10 的單詞。所謂 單詞 是指由不超過80個單詞字元組成的連續字串,但長度超過15的單詞將只擷取保留前15個單詞字元。而合法的 單詞字元 為大小寫字母 數字和下劃線,其它字元均認為是單詞分隔符。輸入...

7 1 詞頻統計 30 分

請編寫程式,對一段英文文字,統計其中所有不同單詞的個數,以及詞頻最大的前10 的單詞。所謂 單詞 是指由不超過80個單詞字元組成的連續字串,但長度超過15的單詞將只擷取保留前15個單詞字元。而合法的 單詞字元 為大小寫字母 數字和下劃線,其它字元均認為是單詞分隔符。輸入給出一段非空文字,最後以符號 ...

習題5 13 詞頻統計 30分

請編寫程式,對一段英文文字,統計其中所有不同單詞的個數,以及詞頻最大的前10 的單詞。所謂 單詞 是指由不超過80個單詞字元組成的連續字串,但長度超過15的單詞將只擷取保留前15個單詞字元。而合法的 單詞字元 為大小寫字母 數字和下劃線,其它字元均認為是單詞分隔符。輸入給出一段非空文字,最後以符號 ...