From 748d3eaa96305c8aded8631352fcd3274a9e3dd2 Mon Sep 17 00:00:00 2001 From: daxcay Date: Sun, 16 Jun 2024 01:05:56 +0530 Subject: [PATCH] Update DATASET_CaptionVisualizer.py Unicode bug fixed @snek helped testing --- classes/DATASET_CaptionVisualizer.py | 40 +++++++++++++++------------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/classes/DATASET_CaptionVisualizer.py b/classes/DATASET_CaptionVisualizer.py index de2c3b6..a2967aa 100644 --- a/classes/DATASET_CaptionVisualizer.py +++ b/classes/DATASET_CaptionVisualizer.py @@ -17,18 +17,20 @@ def generate_wordcloud_and_network_graph(file_paths, output_dir, top_n_wordcloud tag_cooccurrences = Counter() for file_path in file_paths: - with open(file_path, 'r') as f: - tags = f.read().strip().split(',') - word_counter.update(tags) - for tag1 in tags: - for tag2 in tags: - if tag1 != tag2: - tag_cooccurrences[(tag1, tag2)] += 1 + try: + with open(file_path, 'r', encoding='utf-8') as file: + tags = file.read().strip().split(',') + word_counter.update(tags) + for tag1 in tags: + for tag2 in tags: + if tag1 != tag2: + tag_cooccurrences[(tag1, tag2)] += 1 + except Exception as e: + print(f"Error reading file {file_path}: {e}") # Word cloud generation top_wordcloud_tags = dict(word_counter.most_common(top_n_wordcloud)) - wordcloud = WordCloud(width=1920, height=1080, - background_color='white').generate_from_frequencies(top_wordcloud_tags) + wordcloud = WordCloud(width=1920, height=1080, background_color='white').generate_from_frequencies(top_wordcloud_tags) plt.figure(figsize=(16, 9)) plt.imshow(wordcloud, interpolation='bilinear') @@ -45,13 +47,16 @@ def generate_wordcloud_and_network_graph(file_paths, output_dir, top_n_wordcloud G = nx.Graph() tags_cooccurrence = defaultdict(int) - for file in file_paths: - with open(file, 'r', encoding='utf-8') as f: - content = f.read() - tags = list(set(content.split(','))) - for tag_pair in combinations(tags, 2): - if tag_pair[0].strip() and tag_pair[1].strip(): - tags_cooccurrence[tag_pair] += 1 + for file_path in file_paths: + try: + with open(file_path, 'r', encoding='utf-8') as file: + content = file.read() + tags = list(set(content.split(','))) + for tag_pair in combinations(tags, 2): + if tag_pair[0].strip() and tag_pair[1].strip(): + tags_cooccurrence[tag_pair] += 1 + except Exception as e: + print(f"Error reading file {file_path}: {e}") top_cooccurrences = sorted(tags_cooccurrence.items( ), key=lambda x: x[1], reverse=True)[:top_n_network] @@ -183,8 +188,7 @@ class DATASET_CaptionVisualizer: directory_path = os.path.dirname(Captions[0]) visualize_path = os.path.join(directory_path, "visualize") os.makedirs(visualize_path, exist_ok=True) - wc, ng, fg = generate_wordcloud_and_network_graph( - Captions, visualize_path, WordCloudTop[0], NetworkGraphTop[0], FrequencyGraphTop[0]) + wc, ng, fg = generate_wordcloud_and_network_graph(Captions, visualize_path, WordCloudTop[0], NetworkGraphTop[0], FrequencyGraphTop[0]) images = [] if os.path.exists(wc):