請編寫程式,對一段英文文字,統計其中所有不同單詞的個數,以及詞頻最大的前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
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:
i=i[:15
] dic[i]
=dic.get(i,0)
+1del 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 1 詞頻統計 30 分
請編寫程式,對一段英文文字,統計其中所有不同單詞的個數,以及詞頻最大的前10 的單詞。所謂 單詞 是指由不超過80個單詞字元組成的連續字串,但長度超過15的單詞將只擷取保留前15個單詞字元。而合法的 單詞字元 為大小寫字母 數字和下劃線,其它字元均認為是單詞分隔符。輸入給出一段非空文字,最後以符號 ...
7 35 詞頻統計 (30 分)
7 35 詞頻統計 30 分 請編寫程式,對一段英文文字,統計其中所有不同單詞的個數,以及詞頻最大的前10 的單詞。所謂 單詞 是指由不超過80個單詞字元組成的連續字串,但長度超過15的單詞將只擷取保留前15個單詞字元。而合法的 單詞字元 為大小寫字母 數字和下劃線,其它字元均認為是單詞分隔符。輸入...
7 35 詞頻統計 (30 分)
請編寫程式,對一段英文文字,統計其中所有不同單詞的個數,以及詞頻最大的前10 的單詞。所謂 單詞 是指由不超過80個單詞字元組成的連續字串,但長度超過15的單詞將只擷取保留前15個單詞字元。而合法的 單詞字元 為大小寫字母 數字和下劃線,其它字元均認為是單詞分隔符。輸入格式 輸入給出一段非空文字,最...