Wordleという英単語当てのAI用に5,6,7,8文字の長さの英単語集が必要だったので作ってみた話
単語集のあるサイトから単語集をダウンロード
そのデータをまとめて開いて長さ別と全部を取得するプログラムを書いてみたものがこちら
簡単な説明
getn関数 ファイル名と全部取得するかを渡す、
プログラムと同じフォルダにあるファイル名のファイルにたいして行う
全部取得しない場合は、あらかじめglobal変数で与えられたnの長さの文字列を返す(nは17行目で設定しています)
4行でファイルを開き 5行目で各行ごとに分割
6行目で各行についている改行コードを取る
7行目文字のない行をとばす
8,9行目で単語ごとに抽出できるように行を整える(ここはファイルの内容によっては個別に修正必要)
10行目で分割する
11,12行目文字列の長さを全部にした時、ここで活用しているデータでは数字だけの行なども入ってしまうため
それを取り除く
12,14行目では同じ単語が複数回現れないように集合型にして返す
実行結果
コピペできるソースリストはこちら
def getn(filename,all=False):
words=[]
with open("./"+filename) as f:
for line in f:
line=line.rstrip("\n")
if len(line)==0:continue
line=line.replace("."," ").replace(","," ").replace("-"," ").\
replace(" "," ").strip().upper()
words+=line.split(" ")
if all:
return set([w for w in words if len(set(list("0123456789"))&set(list(w)))==0])
else:
return set([w for w in words if len(w)==n])
for n in [5,6,7,8]:
word=getn("TSL_1.1_alphabetized_description.txt") |\
getn("TSL_1.1_lemmatized_for_research.csv") |\
getn("TSL_1.1_lemmatized_for_teaching.txt") |\
getn("TSL_1.1_stats.csv") |\
getn("charGPT.txt")
print(word)
word=getn("TSL_1.1_alphabetized_description.txt",True) |\
getn("TSL_1.1_lemmatized_for_research.csv",True) |\
getn("TSL_1.1_lemmatized_for_teaching.txt",True) |\
getn("TSL_1.1_stats.csv",True) |\
getn("charGPT.txt",True)
print(word)