前提・実現したいこと
フォルダー内に保存されたレビューのcsvファイルを読み込み
英単語数をカウントする。
その単語とカウント数をcsvファイルとして抽出
発生している問題・エラーメッセージ
Traceback (most recent call last): File "C:\Users\nadatsemi\Desktop\tripadvisor\encount.py", line 24, in nltk_for_Frequency word = nltk.word_tokenize(texts) #分かち書きしたワード AttributeError: module 'nltk' has no attribute 'word_tokenize' 神戸市立須磨海浜水族園.csv open_file = 神戸市立須磨海浜水族園.csvlines = 1 Traceback (most recent call last): File "C:\Users\nadatsemi\Desktop\tripadvisor\encount.py", line 68, in <module> get_data = nltk_for_Frequency(spotname) File "C:\Users\nadatsemi\Desktop\tripadvisor\encount.py", line 35, in nltk_for_Frequency return counter UnboundLocalError: local variable 'counter' referenced before assignment
該当のソースコード
python3.
1 -*- coding: utf-8 -*- 2# 単語の出現頻度をExcelに 3 4import openpyxl 5import os 6import nltk 7import numpy 8import codecs 9import glob 10from collections import Counter 11 12def nltk_for_Frequency(spotname): 13 try: 14 word = [] # 単語 15 try: 16 fr = codecs.open(spotname, "rb", "sjis", "ignore") #読み込み 17 texts = fr.read().split("\n") #ファイルを1行ずつリストとしてtextに 18 fr.close() 19 texts = list(filter(lambda a: a != "", texts)) #空リスト削除 20 debug = 0 21 for text in texts: 22 debug +=1 23 print("open_file = " + spotname + "lines = " + str(debug)) 24 word = nltk.word_tokenize(texts) #分かち書きしたワード 25 counter = Counter(word) #同じ文字列をカウントしてcounterに 26 27 except Exception: 28 import traceback 29 traceback.print_exc() 30 31 except Exception: 32 import traceback 33 traceback.print_exc() 34 35 return counter 36 37 38def Save_File(data, save_directory, save_filename): 39 #ファイルに書き込み 40 wb = openpyxl.Workbook() 41 ws = wb.active 42 43 num = 1 44 for k,v in sorted(data.items(),key=lambda x:x[1],reverse=True): 45 key = [] 46 key = k.split(",") 47 ws.cell(column=1, row=num).value=key[0] # 単語 48 ws.cell(column=2, row=num).value=key[1] # 品詞 49 ws.cell(column=3, row=num).value=v # 出現回数 50 num += 1 51 52 wb.save(save_directory + save_filename) 53 print("Save_Complete!") 54 55 56if __name__ == '__main__': 57 path = os.getcwd() # このプログラムの場所 58 textrank_dir = "\text-en\" # "textrank"を保存するディレクトリ 59 review_dir = "\review\" # "review"ディレクトリ 60 if os.path.isdir(path + textrank_dir) == False: # "textrank"というフォルダが無ければ作成 61 os.mkdir(path + textrank_dir) 62 os.chdir("review/") 63 64 csv_files = glob.glob("*.csv") 65 save_directory = path + textrank_dir 66 for spotname in csv_files: 67 print(spotname) 68 get_data = nltk_for_Frequency(spotname) 69 Save_File(get_data, save_directory, spotname)
あなたの回答
tips
プレビュー