«Раскройте возможности ChatGPT: создавайте потрясающие облака слов с помощью всего нескольких строк кода — не пропустите тренд года в области визуализации данных!»
Эй, коллеги-разработчики! Готовы ли вы создать модное облако свежих слов с помощью Python? Давайте начнем!
Мы начнем с расшифровки аудиофайла и его обработки с использованием OpenAI API и библиотеки Pandas. Первая строка кода открывает аудиофайл MP3 в двоичном режиме и создает файловый объект. Вторая строка транскрибирует аудиофайл с помощью OpenAI API, а третья строка выводит транскрипцию на консоль.
# Required Libs from PIL import ImageDraw, ImageFont from collections import Counter import numpy as np import matplotlib.pyplot as plt import random import re import openai import sys import os import pandas as pd audio_file = open("SUPERARE - Funky Fresh.mp3", "rb") trancript = openai.Audio.transcribe("whisper-1", audio_file) trancript_str = str(trancript)
Теперь мы сохраним расшифрованный аудиофайл как текстовый файл и обработаем его, чтобы удалить ненужные символы. Первая строка создает текстовый файл в режиме записи, а вторая строка записывает транскрибированный текст в файл. Третья строка считывает содержимое текстового файла как Pandas DataFrame, а четвертая строка удаляет вторую строку DataFrame. Пятая строка применяет серию строковых операций для удаления нежелательных символов.
with open("transcript.txt", "w") as f: f.write(trancript_str) Text = pd.read_csv('transcript.txt', delimiter='\t', header=None) Text = Text.drop(Text.index[1]) Text[0] = Text[0].str.strip() Text[0] = Text[0].str.replace('[^\w\s]','') Text[0] = Text[0].str.replace('\d+', '') Text[0] = Text[0].str.replace('udcudfb ', '')
Далее мы создадим Pandas DataFrame и переименуем столбец. Первая строка создает DataFrame, а вторая строка переименовывает столбец. Наконец, мы отобразим первые пять строк DataFrame.
#create a dataframe df = pd.DataFrame(Text) #rename the column df.columns = ['Text'] df.head()
Теперь мы очистим и сохраним расшифрованные текстовые данные в виде текстового файла. Первая строка удаляет последний символ каждой строки в столбце «Текст», который обычно представляет собой символ «\n». Вторая строка транспонирует DataFrame и отображает первые 5 строк. Третья строка устанавливает максимальную ширину столбца для отображения всего текста. Наконец, очищенные данные сохраняются в текстовый файл для дальнейшего анализа или использования.
#use slicing to the last element df['Text'] = df['Text'].str[:-1] #preview the data df.head().T #show all the data in the column pd.set_option('display.max_colwidth', None) df.head() #save the data to a text file df.to_csv('transcript.txt', index=False) df.head()
СОЗДАНИЕ ОБЛАКА СЛОВ
После того, как наши расшифрованные текстовые данные очищены и сохранены, пришло время создать наше облако слов! Первая строка кода считывает файл изображения и преобразует его в массив NumPy. Вторая строка создает объект Counter для подсчета вхождений каждого слова в столбце «Текст» DataFrame. Третья строка создает облако слов с помощью библиотеки WordCloud, а четвертая строка отображает облако слов.
mask = np.array(Image.open("mask.png")) with open ('transcript.txt', 'r') as f: text = f.read() #remove alphanumeric characters and convert to lowercase text = re.sub(r'\W+', ' ', text).lower() #count the frequency of each word word_counts = Counter(text.split()) #list of unique words words = list(word_counts.keys()) # remove the words text, purchase, your, tracks, through ,me words = [word for word in words if word not in ['text', 'purchase', 'your', 'tracks', 'through', 'me']]
Вот и все! Мы расшифровали аудиофайл, обработали текстовые данные с помощью API OpenAI и библиотеки Pandas, а также создали необычное облако свежих слов с помощью Python. Продолжайте кодить, друзья!
#create a color map with mask color_map = Image.new("RGB", (mask.shape[1], mask.shape[0]), color=(255,255,255)).load() for i in range(mask.shape[0]): for j in range(mask.shape[1]): if mask[i,j][0] == 0 and mask[i,j][1] == 0 and mask[i,j][2] == 0: color_map.putpixel((j,i), (0,0,0)) #generate the word cloud wc = Image.new("RGB", (mask.shape[1], mask.shape[0]), color=(255,255,255)) draw = ImageDraw.Draw(wc) for word in words: font_size = word_counts[word] * 10 font_color = (random.randint(0,255), random.randint(0,255), random.randint(0,255)) font = ImageFont.truetype("arial.ttf", font_size) word_size = draw.textsize(word, font=font) x = random.randint(0, mask.shape[1] - word_size[0]) y = random.randint(0, mask.shape[0] - word_size[1]) draw.text((x,y), word, font=font, fill=font_color) #show the word cloud plt.imshow(wc) plt.axis("off") plt.show()