РЕДАКТИРОВАТЬ: После того, как обе ночи дебатов пришли к выводу, что я сделал более тщательную запись. Я бы призвал вас проверить это.
Визуализация основных дебатов
Чарльз Ландау ・ 1 августа ’19 ・ 1 мин. читать
Если вы смотрите дебаты сегодня вечером и подумали: «Как я могу проанализировать данные о транскрипте из этого?» Вот какой -то стартовый код, чтобы просто и легко анализировать стенограмму.
import pandas as pd import sklearn as sk import requests import bs4 # http request r = requests.get('https://www.washingtonpost.com/politics/' '2019/07/31/transcript-first-night-second-democratic-debate') r.status_code # Parse html soup = bs4.BeautifulSoup(r.content) graphs = soup.find_all('p') utterances = [x.get_text() for x in graphs if 'data-elm-loc' in x.attrs.keys()] # Parse utterances utterances = utterances [2:] seq = 0 data = [] for i in utterances: graph = i.split() if graph[0][-1] == ':': text = ' '.join(graph[1:]) num_words = len(graph) - 1 name = graph[0][:-1] seq += 1 elif len(graph) > 1 and graph[1] == '(?):': # Cases like 'WARREN (?):' text = ' '.join(graph[2:]) num_words = len(graph) - 2 name = graph[0] seq += 1 else: text = ' '.join(graph) data.append({"name": name, "graph": text, "seq": seq, "num_words": num_words}) df = pd.DataFrame(data) # "Unknown", O'Rourke parsing errors df = df[df.name != "(UNKNOWN)"] df['name'] = df['name'].apply(lambda x: ''.join([char for char in x if char.isalpha()])) # Example... df.groupby('name').sum()['num_words'].plot(kind='bar')
(Изображение взято в середине дебате, это не окончательные числа)
(Очищенные, числа после дебата)
Вы можете быстро начать с этого кода и больше в интерактивной ноутбуке на Kaggle:
Оригинал: “https://dev.to/charlesdlandau/primary-debate-analysis-quickstart-19k1”