[コンパイルの原則] Pythonは英語のテキストの単語頻度統計を実装します

Pythonを使用して、英語のテキストの単語頻度統計を実現します。テキストリンク:https//www.philippinetimes.com/news/257886068/australia-blocks-chinese-firms-huawei-zte-from-5g-network 

1.タプルの作成

tup1 =( 'Google'、 'atguigu'、1997、2000);
tup2 =(
1、2、3、4、5 ); tup3 = "a"、 "b"、 "c"、 "d";#いいえブラケットが必要です

2.辞書の作成

dict = {'Alice': '2341'、 'Beth': '9102'、 'C​​ecil': '3258'}
dict = {x:x + 1 for x in range(10)}

3.コレクションの作成を設定します

s = {'name'、 'aa'、 'bb'}
s = set(sequence)#dictシーケンス、値追加キー
s = {x for x in range(10)if x not in range(5,10)}

図4.2に示すフローチャートに従って、ドキュメントの単語頻度統計が実行され、特定のコードが付録に詳しく説明されています。

図4.2単語頻度統計のフローチャート

3ワードの頻度統計結果

(1)特定の単語頻度統計については、付録ex1_word頻度統計results.xlsxおよびex1_word頻度統計results.txtを参照してください。最初のファイルは自分で書いたコードで、結果を保存するときにデータが処理されます。内部のデータはより標準化されています。2番目のファイルは教師の説明を参照し、ファイルを保存するときにリスト形式を使用してファイルを保存します。 。
           

図4.3単語頻度統計の概略図

上記のドキュメントから、上位5つの単語の頻度は、、 to、およびhuaweiであり、そのほとんどが指示代名詞または接続詞であることがわかります。

(2)図4.4に示すように、単語の頻度に基づいて単語の雲の画像を生成します。

図4.4ワードクラウド図

参照

  1. Anacondaのインストールと使用法のチュートリアル:https://zhuanlan.zhihu.com/p/32805175
  2. Pythonの基本入門-概要と環境構成:https://www.jianshu.com/p/8e56607b0abc
import re
file=open('ex1_news.txt',encoding='ansi')
lowerText=file.read().lower()
file.close()
arr=re.split('[ ,.+"\n]',lowerText)
voc={};
for each in arr:
    if each not in voc:
        voc[each]=1;
    else:
        voc[each]+=1;
voc.pop('');
vocSorted=sorted(voc.items(),key=lambda x:x[1],reverse=True)# 按照键值进行排序
newFile=open('ex1_词频统计结果.txt','w')
newFile.write(str(vocSorted))
newFile.close()

#根据词频生成云图
from wordcloud import WordCloud, ImageColorGenerator
from PIL import Image
import numpy as np
image=Image.open('china_map.jpg');
graph = np.array(image)
# 参数分别是指定字体、背景颜色、最大的词的大小、使用给定图作为背景形状
wc = WordCloud(font_path="C:/Windows/Fonts/simfang.ttf", background_color='white', max_words=100, mask=graph)
wc.generate_from_frequencies(voc)#根据给定词频生成词云
image_color = ImageColorGenerator(graph)
#生成图片
image=wc.to_image()
#显示图片
image.show()
#存储图片
image.save('云图1.jpg')

 

おすすめ

転載: blog.csdn.net/weixin_43442778/article/details/114970932