大学入試共通テストの英単語出現回数を調べるで使用した単語の出現回数を調べるコードを紹介します. data_folders(フォルダ)の中にdata_folder(フォルダ)を作り,data_text.txtを配置するようにして使用しました. 具体的にはCenterTestEnglish/2010/2010_4.txt なら2010年の大問4という感じです. 著作権の都合上,使用したテキストファイルを掲載することができませんが,東進の 大学入試問題 過去問データベース から過去問を無料でダウンロードすることができます.
# 記号を取り除き小文字に直す関数
def replace_all(s):
s = s.replace("\n"," ") # 改行を無くす
s = s.replace("."," ") # ピリオドを無くす
s = s.replace(","," ") # カンマを無くす
s = s.replace('"'," ") # 引用符を無くす
s = s.replace("”"," ") # 全角引用符を無くす
s = s.replace("("," ")
s = s.replace(")"," ")
s = s.replace(":"," ")
s = s.replace(";"," ")
s = s.replace("!"," ") # ビックリを無くす
s = s.replace("?"," ") # ? を無くす
s = s.lower() # 小文字に直す
return s
# 出現した単語のリストを作る関数
def make_list(s):
s = replace_all(s)
words_list = s.split(" ")
words_list = [x for x in words_list if x != ""]
return words_list
# 出現した単語のカウントをdictに追加する関数
def add_dict(s, words_dict):
words_list = make_list(s)
for word in words_list:
if word not in words_dict.keys():
words_dict[word] = 1
else:
words_dict[word] += 1
return words_dict
import os
# data_folders/data_folder1/text_data1.txt などとした場合
path = "ここでテキストファイルのパスを指定します(例ならdata_folders)" # パスの指定に関しては適宜弄ってください
folders = os.listdir(path) # data_folders内のフォルダ名のリストを作ります
words_dict = {}
for folder in folders:
files = os.listdir(path + "\\" + folder) # data_folders/data_folder 内のテキストファイルのリストを作ります
# すべてのファイルに対して処理を行います
for file in files:
with open(path + "\\" + folder + "\\" + file, encoding='utf-8') as f:
s = f.read()
words_dict = add_dict(s, words_dict)
ranking = sorted(words_dict.items(), key=lambda x:x[1], reverse=True)
# 出現頻度が高い順に100位まで表示
for i in range(min(len(ranking),100)):
print(f"{i+1:>3}位| {ranking[i][0]:<8}| {ranking[i][1]:>4}回")
print("----------------------------")