Анализ эмоциональной окраски отзывов с Кинопоиска / Хабр
Вступление
Обработка естественного языка (NLP) является популярной и важной областью машинного обучения. В данном хабре я опишу свой первый проект, связанный с анализом эмоциональной окраски кино отзывов, написанный на Python. Задача сентиментного анализа является довольно распространенной среди тех, кто желает освоить базовые концепции NLP, и может стать аналогом ‘Hello world’ в этой области.
В этой статье мы пройдем все основные этапы процесса Data Science: от создания собственного датасета, его обработки и извлечения признаков с помощью библиотеки NLTK и наконец обучения и настройки модели с помощью scikit-learn. Сама задача состоит в классификации отзывов на три класса: негативные, нейтральные и позитивные.
Формирование корпуса данных
Для решения данной задачи можно было бы использовать какой-нибудь уже готовый и аннотированный корпус данных с отзывами с IMDB, коих множество на GitHub.
import requests from bs4 import BeautifulSoup import numpy as np import time import os def load_data(url): r = requests.get(url, headers = headers) # отправка http запроса soup = BeautifulSoup(r.text, 'html. parser')# создание html парсера reviews = soup.find_all(class_='_reachbanner_')# сохранение только отзывов reviews_clean = [] for review in reviews:# очистка от лишней html разметки reviews_clean.append(review.find_all(text=True)) return reviews_clean
От html разметки мы избавились, однако наши отзывы все еще являются объектами BeautifulSoup, нам же необходимо преобразовать их в строки. Функция convert как раз делает это. Напишем также функцию, которая извлекает имя фильма, которое позже будет использоваться для сохранения отзывов.
def convert(reviews): # преобразование отзывов в строки review_converted = [] for review in reviews: for i in review: map(str, i) review = ''.join(review) review_converted.append(review) return review_converted def get_name(url): # получение имени фильма r = requests.get(url, headers = headers) soup = BeautifulSoup(r.text, 'html.parser') name = soup.find(class_='alternativeHeadline') name_clean = name.find_all(text = True) # Сохранение первого элемента, т. к. извлекается также год фильма return str(name_clean[0])
Последняя функция парсера будет принимать ссылку на главную страницу фильма, класс отзыва и путь для сохранения отзывов. Также в функции определены задержки (delays) между запросами, которые необходимы для избегания бана. В функции содержится цикл, который извлекает и сохраняет отзывы начиная с первой страницы, пока не встретит несуществующую страницу, из которой функция load_data извлечет пустой список и цикл прервется.
def parsing(url, status, path): page = 1 delays = [11, 12, 13, 11.5, 12.5, 13.5, 11.2, 12.3, 11.8] name = get_name(url) time.sleep(np.random.choice(delays)) # Выбор рандомной задержки while True: loaded_data = load_data(url + 'reviews/ord/date/status/{}/perpage/200/page/{}/'. format(status, page)) if loaded_data == []: break else: # Eсли папок с классами не существует, программа их создаст if not os.path.exists(path + r'\{}'.format(status)): os.makedirs(path + r'\{}'.format(status)) converted_data = convert(loaded_data) # Сохранение отзывов for i, review in enumerate(converted_data): with open(path + r'\{}\{}_{}_{}.txt'.format(status, name, page, i), 'w', encoding = 'utf-8') as output: output.write(review) page += 1 time.sleep(np.random.choice(delays))
Далее с помощью следующего цикла можно извлечь отзывы с фильмов, которые содержатся в списке urles. Список с фильмами необходимо будет создать вручную. Можно было бы, например, получить список ссылок на фильмы, написав функцию, которая бы извлекала их из топа 250 фильмов кинопоиска, чтобы не делать этого вручную, но для формирования небольшого датасета в тысячу отзывов на каждый класс хватит и 15-20 фильмов. Также если вы получите бан, то программа выведет на каком фильме и классе парсер остановился, чтобы продолжить с того же места после прохождения бана.
path = # путь для сохранения urles = # список с фильмами statuses = ['good', 'bad', 'neutral'] delays = [15, 20, 13, 18, 12.5, 13.5, 25, 12.3, 23] for url in urles: for status in statuses: try: parsing(url = url, status = status, path=path) print('one category done') time.sleep(np.random.choice(delays)) # Во время бана будет получена ошибка AttributeError except AttributeError: print('Бан получен: {}, {}'.format(url, status)) break # Блок else выполняется тогда, когда внутренний цикл НЕ прерывается # если внутренний цикл прерывается, то прерывается и внешний else: print('one url done') continue break
Предварительная обработка
После написания парсера, вспоминания рандомных фильмов для него и нескольких банов от кинопоиска, я перемешал отзывы в папках и отобрал по 900 отзывов от каждого класса для обучения и оставшиеся для контрольной группы. Теперь необходимо предварительно обработать корпус, а именно его токенизировать и нормализовать. Токенизировать означает разбить текст на составляющие, в данном случае на слова, так как мы будем использовать представление мешка слов. А нормализация заключается в преобразовании в нижний регистр слов, удалении стоп-слов и лишнего шума, стэмминга и любых других приемов, помогающих сократить пространство признаков.
Импортируем необходимые библиотеки.
Скрытый текст
from nltk.corpus import PlaintextCorpusReader from nltk.stem.snowball import SnowballStemmer from nltk.probability import FreqDist from nltk.tokenize import RegexpTokenizer from nltk import bigrams from nltk import pos_tag from collections import OrderedDict from sklearn.metrics import classification_report, accuracy_score from sklearn.naive_bayes import MultinomialNB from sklearn.model_selection import GridSearchCV from sklearn.utils import shuffle from multiprocessing import Pool import numpy as np from scipy. sparse import csr_matrix
Начнем с определения нескольких небольших функций для предварительной обработки текста. Первая под названием lower_pos_tag будет принимать список со словами, преобразовывать их к нижнему регистру и сохранять каждую лексему в кортеж с её частью речи. Операция добавления части речи слова называется Part of speech (POS) tagging и часто используется в NLP для извлечения сущностей. В нашем случае мы будем использовать части речи в следующей функции для фильтрации слов.
def lower_pos_tag(words): lower_words = [] for i in words: lower_words.append(i.lower()) pos_words = pos_tag(lower_words, lang='rus') return pos_words
В текстах содержится большое число слов, которые встречаются слишком часто, чтобы быть полезными для модели (так называемые стоп слова). В основном это предлоги, союзы, местоимения по которым нельзя определить к какому классу относится отзыв.
def clean(words): stemmer = SnowballStemmer("russian") cleaned_words = [] for i in words: if i[1] in ['S', 'A', 'V', 'ADV']: cleaned_words.append(stemmer.stem(i[0])) return cleaned_words
Далее напишем финальную функцию, которая будет принимать метку класса и извлекать все отзывы с этим классом. Для чтения корпуса будем использовать метод raw объекта PlaintextCorpusReader, который позволяет извлечь текст из указанного файла. Далее для токенизации используется RegexpTokenizer, работающий на основе регулярного выражения. Помимо отдельных слов я добавил в модель биграммы, представляющие собой комбинации всех соседних слов. Также в этой функции используется объект FreqDist, который возвращает частоту встречаемости слов. Он здесь используется для того, чтобы удалить слова, которые встречаются во всех отзывах определенного класса только один раз (их еще называют гапаксами). Таким образом, функция будет возвращать словарь, содержащий документы, представленные в виде мешка слов и список всех слов для определенного класса.
corpus_root = # Путь к корпусу def process(label): # Wordmatrix - список документов с лексемами # All words - список всех слов data = {'Word_matrix': [], 'All_words': []} # Промежуточный список для удаления гапаксов templist_allwords = [] # Определение пути к папке с определенным лейблом corpus = PlaintextCorpusReader(corpus_root + '\\' + label, '. \w\s]+') for i in range(len(names)): # Обработка корпуса bag_words = tokenizer.tokenize(corpus.raw(names[i])) lower_words = lower_pos_tag(bag_words) cleaned_words = clean(lower_words) finalist = list(bigrams(cleaned_words)) + cleaned_words data['Word_matrix'].append(final_words) templist_allwords.extend(cleaned_words) # Определение гапаксов templistfreq = FreqDist(templist_allwords) hapaxes = templistfreq.hapaxes() # Фильтрация от гапаксов for word in templist_allwords: if word not in hapaxes: data['All_words'].append(word) return {label: data}
Этап предварительной обработки является самым долгим, поэтому имеет смысл распараллелить обработку нашего корпуса. Сделать это можно с помощью модуля multiprocessing. В следующем куске программного кода я запускаю три процесса, которые будут одновременно обрабатывать три папки с разными классами. Далее результаты будут собраны в один словарь. На этом предварительная обработка закончена.
if __name__ == '__main__': data = {} labels = ['neutral', 'bad', 'good'] p = Pool(3) result = p.map(process, labels) for i in result: data.update(i) p.close()
Векторизация
После того, как мы предварительно обработали корпус, у нас есть словарь, где для каждой метки класса содержится список с отзывами, которые мы токенизировали, нормализовали и обогатили биграммами, а также список слов со всех отзывов этого класса. Так как модель не может воспринимать естественный язык так, как мы, теперь стоит задача представить наши отзывы в числовом виде. Для этого мы создадим общий вокабуляр, состоящий из уникальных лексем, и с помощью него векторизируем каждый отзыв.
Начнем с того, что создадим список, в котором будут находится отзывы всех классов вместе с их метками. Далее создадим общий вокабуляр, взяв от каждого класса по 10 000 самых часто встречающихся слов с помощью метода most_common все того же FreqDist. В итоге у меня получился вокабуляр, состоящий примерно из 17 000 слов.
# Создание помеченный данных со структурой: # [([список слов отзыва], метка_класса)] labels = ['neutral', 'bad', 'good'] labeled_data = [] for label in labels: for document in data[label]['Word_matrix']: labeled_data.append((document, label)) # Создание вокабуляра с уникальными лексемами all_words = [] for label in labels: frequency = FreqDist(data[label]['All_words'] common_words = frequency.most_common(10000) words = [i[0] for i in common_words] all_words.extend(words) # Извлечение уникальных лексем unique_words = list(OrderedDict.fromkeys(all_words))
Существует несколько способов векторизовать текст. Наиболее популярные из них: TF-IDF, прямое и частотное кодирование. Я использовал частотное кодирование, суть которого представить каждый отзыв в виде вектора, элементы которого являются числом вхождения каждого слова из вокабуляра. В NLTK есть свои классификаторы, можно использовать и их, но работают они медленнее аналогов из scikit-learn и имеют меньше настроек. Ниже представлен программный код для кодирования для NLTK. Однако я буду использовать модель Наивного Байеса из scikit-learn и закодирую отзывы, сохранив признаки в разреженной матрице из SciPy, а метки классов в отдельном массиве NumPy.
# Частотное кодирование для классификаторов nltk со структурой: # # [({уникальный термин: кол-во вхождений в документ}, метка класса)] prepared_data = [] for x in labeled_data: d = defaultdict(int) for word in unique_words: if word in x[0]: d[word] += 1 if word not in x[0]: d[word] = 0 prepared_data.append((d, x[1])) # Частотное кодирование для классификаторов scikit-learn # Разреженная матрица для признаков matrix_vec = csr_matrix((len(labeled_data), len(unique_words)), dtype=np.int8).toarray() # Массив для меток классов target = np.zeros(len(labeled_data), 'str') for index_doc, document in enumerate(labeled_data): for index_word, word in enumerate(unique_words): # Подсчет кол-ва вхождения слова в отзыв matrix_vec[index_doc, index_word] = document[0]. count(word) target[index_doc] = document[1] # Перемешиваем датасет X, Y = shuffle(matrix_vec, target)
Так как в датасете отзывы с определенными метками идут друг за другом, то есть сначала все нейтральные, потом все негативные и так далее, необходимо их перемешать. Для этого можно воспользоваться функцией shuffle из scikit-learn. Она как раз подходит для ситуаций, когда признаки и метки классов находятся в разных массивах, потому что позволяет перемешать два массива в унисон.
Обучение модели
Теперь осталось обучить модель и проверить ее точность на контрольной группе. В качестве модели будем использовать модель Наивного Байесовоского классификатора. В scikit-learn есть три модели Наивного Байеса в зависимости от распределения данных: бинарного, дискретного и непрерывного. Так как распределение наших признаков дискретное, выберем MultinomialNB.
Байесовский классификатор имеет гиперпараметр alpha, который отвечает за сглаживание модели. Наивный Байес вычисляет вероятности принадлежности каждого отзыва ко всем классам, для этого перемножая условные вероятности появления всех слов отзыва, при условии принадлежности к тому или иному классу. Но если какое-то слово отзыва не встречалось в обучающем наборе данных, то его условная вероятность равна нулю, что обнуляет вероятности принадлежности отзыва к какому-либо классу. Чтобы избежать этого, по умолчанию ко всем условным вероятностям слов добавляется единица, то есть alpha равняется одному. Однако это значение может быть неоптимальным. Можно попробовать подобрать alpha с помощью поиска по сетке и кросс валидации.
parameter = [1, 0, 0.1, 0.01, 0.001, 0.0001] param_grid = {'alpha': parameter} grid_search = GridSearchCV(MultinomialNB(), param_grid, cv=5) grid_search.fit(X, Y) Alpha, best_score = grid_search.best_params_, grid_search.best_score_
В моем случае грид серч выдает оптимальное значение гиперпараметра равное 0 с точностью в 0. 965. Однако такое значение явно не будет оптимальным для контрольного датасета, так как там будет большое число слов, не встречающихся ранее в обучающем наборе. Для контрольного набора данных эта модель имеет точность 0.598. Однако если увеличить alpha до 0.1, точность на обучающих данных упадет до 0.82, а на контрольных возрастет до 0.62. Вероятнее всего, на большем наборе данных разница будет существенней.
model = MultinomialNB(0.1) model.fit(X, Y) # X_control, Y_control обработаны так же, как и X и Y # Однако для векторизации использовался вокабуляр обучающего датасета predicted = model.predict(X_control) # Точность на контрольном датасете score_test = accuracy_score(Y_control, predicted) # Классификационный отчет report = classification_report(Y_control, predicted)
Вывод
Предполагается, что модель должна использоваться для прогнозирования отзывов, чьи слова не использовались для формирования вокабуляра. Поэтому качество модели можно оценивать по ее точности на контрольной части данных, которая равна 0. 62. Это почти в два раза лучше простого угадывания, но точность все ещё довольно низка.
По классификационному отчету видно, что модель хуже всего справляется с отзывами, имеющими нейтральный окрас (точность 0.47 против 0.68 для положительных и 0.76 для негативных). И действительно, в нейтральных отзывах содержатся слова, характерные как для положительных, так и для отрицательных отзывов. Вероятно, точность модели можно повысить, увеличив объем датасета, так как трехтысячный набор данных является довольно скромным. Также, можно было бы свести задачу до бинарной классификации отзывов на положительные и отрицательные, что также повысило бы точность.
Спасибо за прочтение.
P.S. Если есть желание самому потренироваться, мой датасет можно скачать ниже по ссылке.
Ссылка на датасет
Создатели «Чернобыля» и «Звездного пути» проведут мастер-классы в России
Свежий номер
РГ-Неделя
Родина
Тематические приложения
Союз
Свежий номер
Культура
23. 10.2019 19:42
Поделиться
Сусанна Альперина
VIII Санкт-Петербургский международный культурный форум пройдет с 14 по 16 ноября. Сегодня состоялась пресс-конференция, на которой была анонсирована программа одной из его ключевых секций — «Кино». Важнейшее направление работы в том, что она будет направлена на организацию сотрудничества крупнейших кино- и медиакорпораций России и мира. Во главу угла поставлено продвижение российского кино и анимации на мировой рынок. Одна из сенсаций — создатели сериала «Чернобыль», проектов «Секретные материалы» и «Звездный путь» проведут мастер-классы в России. Вторая — впервые мастер-класс проведет Федор Бондачук.
В пресс-конференции приняли участие руководитель секции «Кино», режиссер, продюсер Федор Бондарчук, председатель правления Ассоциации анимационного кино и киностудии «Союзмультфильм», генеральный директор «Центральной киностудии имени М. Горького» Юлиана Слащева, директор по работе с индустрией компании «Экспоконтент» Евгения Маркова, кинокритик и куратор Константин Шавловский. Они рассказали, что в числе спикеров и гостей секции — ведущие кинематографисты, критики, эксперты, руководители крупнейших продюсерских центров, медиахолдингов и интернет-платформ из России, Китая, США, Великобритании, Франции, Италии и других стран мира.
«В 2019 году главным в нашей секции станет тема «Россия на мировом кинорынке». Этот год стал во многих смыслах этапным для продвижения российского контента за рубежом. Впервые в России, в Санкт-Петербурге прошел Синепозиум Международной ассоциации кинокомиссий, и это совпало с проектом внедрения федеральной системы рибейтов, которая сейчас находится на рассмотрении в правительстве Российской Федерации. Также впервые в России в этом году состоится форум международных дистрибьюторов Key Buyers Event. Наконец, мы очень дорожим и выделяем второй Коллоквиум ФИПРЕССИ, который пройдет в Петербурге», — рассказал Федор Бондарчук.
Программу секции откроет панельная дискуссия «Россия на мировом кинорынке», на которой лидеры индустрии подведут итоги международного сотрудничества в области кино в 2019 году. Участниками дискуссии станут как раз и Федор Бондарчук, Юлиана Слащева, Евгения Маркова и другие эксперты. Одним из ключевых событий секции станет Панельная дискуссия «Российско-китайское сотрудничество в области кино» (в рамках программы «Китай — страна-гость»). Сотрудничество с Китаем, о котором еще пять лет назад никто не задумывался всерьез, сейчас волнует многих игроков рынка. В дискуссии примут участие: продюсер дистрибуционной компании Airmita Ду Лян (КНР), продюсер компании China International Filmand Media Лю Сюань (КНР), художник-постановщик Артур Мирзоян, продюсер, владелец студии компьютерных спецэффектов Algous Studio Алексей Гусев, а также известный продюсер, участвовавшая в многочисленных копродукциях с Китаем Шань Там (Гонконг, Китай).
В рамках секции «Кино» пройдет ряд мастер-классов от ведущих деятелей киноиндустрии. Впервые проведет мастер-класс Федор Бондарчук. Его тема — «Реальность фантастического мира». Федор Сергеевич расскажет о своей работе с фантастическими сюжетами, а также покажет эксклюзивные фрагменты из нового фильма «Вторжение», который выходит в прокат 1 января 2020 года. Художник-постановщик сериала «Чернобыль» Люк Халл (Великобритания) проведет мастер-класс, на котором расскажет о своей работе по воссозданию эпохи Чернобыля, получившей высокие оценки профессионального сообщества и зрителей. А продюсер Крис Кларк (Великобритания) поделится секретами успешного кино на мастер-классе «История на миллион: точка зрения продюсера». Сценарист, режиссер и продюсер, номинант на премию «Эмми» Пол Браун (США) на своем мастер-классе «Приемы создания героев, которым хочется сопереживать» расскажет об уникальных приемах сценарного мастерства на примере фильма «Мой парень — псих».
Юлиана Слащева рассказала о мероприятиях секции «Кино», посвященных анимации. В программу секции войдет панельная дискуссия «Копродукция как основной вектор развития анимационной индустрии в России». Участниками дискуссии станут генеральный директор и президент Cyber Group Studios Пьер Сисман (Франция), исполнительный вице-президент Toonz Media Group Пол Робинсон (Великобритания), старший вице-президент, директор по контенту и международной детской стратегии Turner EMEA Патриция Хидалго (Великобритания) и другие эксперты.
На мероприятии «Современные тенденции в российской анимации: питч-сессия новых отечественных анимационных проектов» будут представлены новые фильмы, находящиеся на стадии производства О свежих идеях и перспективных анимационных проектах, которые только готовятся к запуску в России, расскажут представители ведущих компаний отечественной мультиндустрии: директор киностудии «Союзмультфильм» Борис Машковцев, продюсер анимационных проектов Анимационной студии «Паровоз» Мари Льида, генеральный продюсер Группы компаний «РИКИ» Илья Попов и другие. Модератором мероприятия выступит директор Ассоциации анимационного кино Ирина Мастусова.
В 2019 году киностудия «Союзмультфильм» отмечает пятидесятилетие главных персонажей советского анимационного кино. К юбилею приурочены выставка «Чебурашка и все-все-все» и концерт «50 лет любимым героям «Союзмультфильма»».
«Концерт, посвященный 50-летию героев «Союзмультфильма», — это в нашем представлении настоящий мультконцерт, только под живой симфонический оркестр, со специально сделанной нарезкой из мультфильмов, с самыми известными песнями из золотой коллекции (колыбельной Медведицы из «Умки», песней Крокодила Гены, «Голубым вагоном», дуэтом Принцессы и Короля) и с нашими известными артистами театра и кино в качестве исполнителей. Также мы делаем выставку, посвященную 50-летию главных персонажей нашей мультипликации в «Бертгольд-центре» в Петербурге. Это очень модная креативная площадка с хорошим выставочным пространством, где мы сделаем выставку-инсталляцию о 50-летней истории «Союзмультфильма»», — отметила Юлиана Слащева.
Директор по работе с индустрией компании «Экспоконтент» — официального представителя международных рынков аудиовизуального контента в России и странах СНГ — обозначила повестку, которая будет обсуждаться на панельной дискуссии «Россия на мировом кинорынке». Кроме того, Евгения Маркова рассказала о результатах международного проката российских фильмов в 2019 году и актуальных трендах на российском и мировом рынках медиаконтента.
«Мы сейчас наблюдаем изменение мирового ландшафта: меняются игроки, меняется тип смотрения, меняются целевые аудитории, и не всегда производители контента успевают за теми изменениями, которые происходят. Мы поговорим об успехах российского кинематографа. Уже сейчас мы видим, что прокатные сборы российского кино подросли по сравнению с двумя предыдущими годами. Авторское кино покоряет мировые просторы: если два-три года назад у нас на международных фестивалях было порядка шести наград, то сейчас их уже около двадцати. Это очень позитивный и важный рост, причем не только с точки зрения репутации российского кинематографа, но с точки зрения продаж и монетизации. Жанровое кино развивается и продается — это абсолютно новый тренд. В связи с этим мы организуем первый за последние пять лет визит международных байеров. Приедут не только кинопрокатчики, которые уже бывали в России, приедут и представители медиахолдингов и интернет-платформ. Будут такие холдинги, как Hulu, Tencent, Mediaset, Koch Media: игроки, которые дистрибутируют российский контент в более чем 60 странах мира. Большую роль играет анимация — это в каком-то смысле нефть и газ нашей индустрии, ее позитивный драйвер», — отметила Евгения Маркова.
Раз в два года в рамах секции «Кино» собирается коллоквиум Международной федерации кинопрессы (ФИПРЕССИ), на котором проходят показы и обсуждения современного российского кино. Для участия в коллоквиуме 2019 года в Санкт-Петербург приедут кинокритики, представляющие ведущие мировые издания о кино, отборщики важнейших мировых кинофестивалей. В течение трех дней будут организованы закрытые показы новейших отечественных фильмов. После каждого показа пройдут обсуждения фильмов с членами ФИПРЕССИ. Заключительным мероприятием станет круглый стол, посвященный актуальному состоянию российского кинематографа, в котором примут участие представители ФИПРЕССИ, российские кинематографисты, журналисты, исследователи кино.
«На Коллоквиум ФИПРЕССИ, посвященный российскому кино, мы каждый раз привозим 12-15 человек, которые не только пишут о кино, но также являются кураторами одного или даже нескольких международных кинофестивалей. Уже много лет профессия кинокритика мутирует в кураторскую. Мы убиваем двух зайцев одним выстрелом: к нам приезжают люди, которые, посмотрев в течение трех дней 12 фильмов, не только пишут о них, но и включают в программы своих фестивалей», — заметил Константин Шавловский.
Поделиться
Мировое киноНаше киноСанкт-ПетербургСеверо-ЗападВ регионахКино и ТВ с Сусанной АльперинойКультурный форум в Санкт-Петербурге
Главное сегодня
Посол Антонов: Поставками помощи Киеву США провоцируют расширение географии кризиса
Путин: Россия с уважением относится к инициативам КНР по мирному урегулированию на Украине
Крючков: Целью сбитых над Джанкоем беспилотников были гражданские объекты
В Молдавии сообщили о возобновлении закупок российского газа
Путин потребовал пресекать любые попытки раскачать общество
Сохранение «неувядающей дружбы» и воплощение «подлинной многополярности». Главное из статьи Си Цзиньпина в «Российской газете»
Класс Национального реестра фильмов 2019 года включает «Пурпурный дождь»
В Национальный реестр фильмов Библиотеки Конгресса внесено больше фильмов, снятых или снятых женщинами, чем когда-либо прежде.
Принц в пурпурном дожде, 1984 год. Warner Bros/Courtesy Everett Collection
В Национальный реестр фильмов Библиотеки Конгресса внесено больше фильмов, снятых или снятых женщинами, чем когда-либо прежде.
Среди 25 отобранных: « Real Women Have Curves » Патрисии Кардозо 2002 года, « My Name is Oona » Ганвора Нельсона 1969 года и « New Leaf 1971 года », в котором Элейн Мэй написала сценарий, снялась и снялась. Также включены 1984 фильма. документальный фильм Before Stonewall , снятый совместно Гретой Шиллер и Робертом Розенбергом, и фильм Мадлен Андерсон 1970 года I Am Somebody , считающийся первым документальным фильмом о гражданских правах, снятым женщиной.
Ежегодный список влиятельных фильмов, охватывающих оба жанра и десятилетия, был объявлен в среду (11 декабря) библиотекарем Конгресса Карлой Хейден. Среди рассматриваемых фильмов за 2019 годбыли выдвинуты общественностью 6000 человек. Больше всего голосов набрала партия Кевина Смита Clerks 1994 года, вошедшая в окончательный вариант.
Исследовать
Смотрите последние видео, графики и новости
принц
Группа
Смотрите последние видео, диаграммы и новости
В этом году добавление охватывает столетие, начиная с 1903 года Эмигранты, высадившиеся на острове Эллис – Туман войны , документальный фильм 2003 года, в котором бывший министр обороны Роберт Макнамара пересматривает свою роль в формировании военной и внешней политики США в разгар войны во Вьетнаме.
Фильмы, выбранные после консультации с Национальным советом по сохранению фильмов и специалистами библиотеки, также включают «Пурпурный дождь » 1984 года Принса, « » Спайка Ли 1986 года, классику Диснея 1959 года « Спящая красавица » и фильм производства Диснея. Old Yeller с 1957 года.
«Национальный реестр фильмов стал важной записью американской истории, культуры и творчества», — говорится в заявлении Хейден. Последние выборки довели количество фильмов в реестре до 775, что составляет небольшую часть коллекции движущихся изображений Библиотеки Конгресса, насчитывающей более 1,6 миллиона наименований.
25: Amadeus , 1984; Бекки Шарп , 1935 г.; Тело и душа , 1925; Мальчики не плачут , 1999; Дочь шахтера , 1980 г.; Вход для сотрудников , 1933; Газовый светильник , 1944 г.; Джордж Вашингтон Карвер из Института Таскиги , 1937 г.; Подружки , 1978; Последний вальс , 1978; История города Феникс , 1955; Взвод , 1986 г.; и Костюм Зут , 1981 г.
Получайте еженедельные обзоры прямо на свой почтовый ящик
Подписаться
Национальный реестр фильмов объявляет разнообразный класс 2019 года
(Изображение предоставлено Disney) Сцена из классического мультфильма Диснея 1959 года «Спящая красавица». Этот фильм входит в число 25 фильмов, внесенных в Национальный реестр фильмов Библиотеки Конгресса. 11 декабря 2019 г., 20:00
| Обновлено: 17:48
Вашингтон • В Национальный реестр фильмов Библиотеки Конгресса внесено больше фильмов, снятых или снятых женщинами, чем когда-либо прежде. .69 «Меня зовут Уна» и «Новый лист» 1971 года, в котором Элейн Мэй написала сценарий, поставила и снялась в главной роли. 1970 г. «Я кто-то» считается первым документальным фильмом о гражданских правах, снятым женщиной.
Ежегодный список влиятельных фильмов, охватывающих как жанры, так и десятилетия, был объявлен в среду библиотекарем Конгресса Карлой Хейден. Среди рассматриваемых фильмов за 2019 годбыли выдвинуты общественностью 6000 человек. Больше всего голосов набрала книга Кевина Смита «Клерки» 1994 года, вошедшая в окончательный вариант.
Добавления этого года охватывают целое столетие: от «Эмигрантов, высадившихся на острове Эллис» 1903 года до «Тумана войны», документального фильма 2003 года, в котором бывший министр обороны Роберт Макнамара пересматривает свою роль в формировании военной и внешней политики США в разгар войны во Вьетнаме.
Фильмы, выбранные в консультации с Национальным советом по сохранению фильмов и специалистами библиотеки, также включают 19 фильмов Принца.84 «Пурпурный дождь», фильм Спайка Ли «Она должна это получить» 1986 года, классика Диснея 1959 года «Спящая красавица» и диснеевский «Старый крикун» 1957 года. истории, культуры и творчества», — говорится в заявлении Хейден.
В результате последних отборов количество фильмов в реестре достигло 775, что составляет небольшую часть коллекции движущихся изображений Библиотеки Конгресса, насчитывающей более 1,6 миллиона наименований.
Завершают список из 25: «Амадей», 19 лет.84; «Бекки Шарп», 1935 год; «Тело и душа», 1925; «Мальчики не плачут», 1999 г.; «Дочь шахтера», 1980; «Вход сотрудников», 1933; «Газовый свет», 1944; «Джордж Вашингтон Карвер в Институте Таскиги», 1937 год; «Подруги», 1978; «Последний вальс», 1978; «История города Феникс», 1955; «Взвод», 1986; и «Zoot Suit», 1981.
Ассошиэйтед Пресс
Сделайте пожертвование в редакцию сейчас.