第7章 1 詞頻統計 30分

2021-10-02 07:09:59 字數 2054 閱讀 9188

請編寫程式,對一段英文文字,統計其中所有不同單詞的個數,以及詞頻最大的前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.

23

5:this4:

is

1.輸入:

由於輸入有多行,為方便處理,直接用系統標準輸入模組,sys.stdin將所有文字一次讀入。find()函式找到「#"所在下標並切片。

2:處理:

遍歷字串,將所有非法字元(非數字、字母、下劃線)記錄到乙個集合中。隨後將字串中所有這些非法字元用replace替換空格,作為分隔符。

由於不區分大小寫,因此字串先轉為小寫,用split以空格作為分割建立乙個單詞列表(注意,因為存在多個連續空格,所以會有空串""存在)

建立字典,將所有單詞(前15個切片)和其詞頻存放到字典中,最後需要del刪除空串項。之後用sorted,以詞頻為主要關鍵字,單詞字典序為次要關鍵字,將字典中的每一項排序。

import sys

s=sys.stdin.read(

)s=s[

:s.find(

"#")

]#構建乙個字串中所有非數字、字母、下劃線的字元的集合

t=set

([i if i.isalnum()==

false

and i!=

'_'else

" "for i in s ]

)for i in t:

#將字串中所有非法字元替換為空格

s=s.replace(i,

" ")

#所有字元轉小寫,並將字串以空格為分割建立乙個列表,每一項為乙個小寫單詞

word=s.lower(

).split(

" ")

dic=

for i in word:

#取長度為15的單詞

i=i[:15

] dic[i]

=dic.get(i,0)

+1#由於初始字串中有多個連續空格,因此split()時會有空字串存在,需要刪除

del dic[""]

#排序,以詞頻為主要關鍵字,字典序為次要關鍵序,'-'表示降序

result=

sorted

(dic.items(

),key=

lambda x:

(-x[1]

,x[0])

)print

(len

(result)

)all

=int

(0.1

*len

(result)

)for i in

range(0

,all):

print

(str

(result[i][1

])+":"

+result[i][0

])

7 35 詞頻統計 (30 分)

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

7 35 詞頻統計 (30 分)

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

7 1 詞頻統計 30 分

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