1バイト文字のみのtxtの大文字⇔小文字変換。スペース区切り(正規表現)で単語リストを作り、出現回数降順でカウントリストを作る
Pythonで自然言語処理を行うために文字列操作の練習を始めた者です。
txtやcsvをインポートして文字列操作(大文字⇔小文字、半角⇔全角、スペース区切り、カンマ区切り)して単語ごとの出現頻度を算出できるようになりたくて、jupyter-notebookにて課題に取り組んでおりますが、最初の課題で躓いてしまいました。
該当のソースコード
Python3
ソースコード
import re
f_test = open('hoge.txt','r') #txtをインポート。ちゃんとできたかprintで確認。
lines = f_test.readlines()
for line in lines:
print(line)
f_test.close()
with open('hoge.txt','r') as f: #全て小文字に変換。ちゃんとできたかprintで確認。
lines=f.read().lower()
print(lines)
def words_list(lines): #スペースで区切って単語リストを作る。printで確認できない。
return re.split(("[^a-z]+",lines)[:-1])
print(word_list)
def words_to_count(word_list): #辞書を作って単語をカウント。printで確認できない。
wdict={word:0 for word in set(word_list)}
for w in word_list:
wdict[w] += 1
return wdict
print(wdict)
def print_words(word_dict): #降順に並び替え。printで確認できない。
for word in sorted(word_dict,key=lambda x:(-word_dict[x],x)):
print(word,word_dict[word])
試したこと
txtのインポート、大文字を小文字に変換する、は正しくできたかどうかをprint()で確認できたのですが、その後の正規表現を用いてスペース区切りにて単語をリストに分割、で躓き、以後の単語ごとに出現回数をカウント、出現回収降順に並び替える、が上手くいかず、本やWebで調べたものの上手くいきませんでした。
補足情報(FW/ツールのバージョンなど)
jupyternotebookでコードが正しいか都度確認するようにしていますが、正規表現以降ではエラーも何もでないものの以後うまくいかない。