Делать крутые вещи с данными

Введение

Гиперпартийные новости описываются как новости, которые крайне предвзято относятся к одной политической партии. Это может быть крайний левый или крайний правый. К сожалению, сейчас в США наблюдается сильная политическая поляризация. Людям нравятся только политики и взгляды, разделяемые членами их группы. Недавние беспорядки у Капитолия США обнажили этот растущий разрыв между либеральными и консервативными избирателями. Этот политический раскол со временем нарастает. Ознакомьтесь с этой статьей Pew Research о поразительных находках на 2020 год. Их исследование показывает, что избиратели Байдена и Трампа принципиально расходятся во мнениях по таким основным вопросам, как основные американские ценности. 80% сторонников Байдена считают, что у сторонников Трампа не только разные приоритеты в политике, но и разные основные ценности. Такой же процент сторонников Трампа думает и о другом лагере. Это поразительный уровень недоверия!

Во многих случаях существующие средства массовой информации подогревают эту поляризацию, открывая своим читателям весьма пристрастные взгляды. В этом блоге я хочу использовать модель Longformer для обнаружения гиперпартийных новостей. Если гиперпартийные новости могут быть обнаружены, то они могут быть автоматически помечены и либо удалены, либо, по крайней мере, читатель проинформирован о них. Код для этой модели доступен на моем ноутбуке Colab здесь. Я также загрузил его на свой GitHub здесь.

Набор данных и предварительная обработка

Для этого блога мы используем набор данных гиперпартийных новостей. Этот набор данных становится общедоступным на семинаре по семантической оценке. Я использовал библиотеку наборов данных HuggingFace, чтобы загрузить ее. Библиотека наборов данных предоставляет простой API для загрузки и доступа к набору данных.

!pip install datasets
dataset  = datasets.load_dataset('hyperpartisan_news_detection', 'bypublisher')

Набор данных содержит 600 000 новостных статей в обучающем наборе и 600 000 в проверочном наборе. Каждой статье присваивается метка True / False, где True означает, что статья является гиперпартийной.

Пример статьи с пометкой Hyperpartisan:

As we prepare for oral arguments Friday before a federal appeals court in Washington, D.C. in our appeal of our lawsuit challenging ObamaCare, it\'s important to note that a growing number of Americans reject the pro-abortion, government-run, and costly health care law. In a new poll released by <a href="http://www.rasmussenreports.com/public_content/politics/current_events/healthcare/health_care_law">Rasmussen</a>, 56% of likely voters favor repeal of ObamaCare, while 52% say the health care law is bad for the country. A clear majority of voters have favored repeal of the law in every Rasmussen survey but one since the measure was passed by Congress in March of last year. As you may recall, our legal team is preparing for critical arguments before a three-judge panel of a federal appeals court in Washington on Friday. We\'re appealing a lower court decision dismissing our federal lawsuit which challenges the constitutionality of ObamaCare. We filed our lawsuit in federal

Мы делаем базовую предварительную обработку статей перед отправкой на обучение. Я использовал библиотеку Bleach, чтобы очистить HTML-теги в статье. Я также взял случайное подмножество из 20 тысяч примеров для обучения и 5 тысяч для проверки. Это для ускорения тренировочного процесса.

Одним из ключевых этапов предварительной обработки данных является определение длины токена для статьи. Преобразователь обрезает все, что длиннее токена, и заполняет все, что короче. Одним из основных преимуществ использования модели Longformer является то, что она может тренироваться с использованием токена длиной до 4096 токенов. Здесь мы токенизируем до максимальной длины 2048 токенов. Приведенный ниже фрагмент кода выполняет токенизацию.

encodings = tokenizer.encode_plus(text_, pad_to_max_length=True,          max_length=2048,
add_special_tokens=True,
return_token_type_ids=False,
return_attention_mask=True,
padding='max_length', truncation=True)

Типичные модели Transformer могут принимать токен длиной 512 или 1024 токена, что может быть недостаточно для многих проблем. Одним из ключевых преимуществ Longformer является возможность работать с более длинными последовательностями.

Обучение модели Longformer

Longformer - преобразователь длинных документов - это модель от Института искусственного интеллекта Аллена, выпущенная в 2020 году. Модели на основе преобразователя не могут обрабатывать длинные последовательности, поскольку используемый ими механизм внимания масштабируется квадратично. В результате большинство моделей трансформаторов могут обслуживать только 512 или 1024 токена. Longformer предлагает механизм внимания, который линейно масштабируется с длиной последовательности. Это достигается за счет использования локального оконного внимания с глобальным вниманием к конкретной задаче. Модель Longformer превосходит BERT / RoBERTa в задачах с длинными документами.

На рисунке ниже показаны различные механизмы внимания. Обычные трансформаторы используют полное квадратичное внимание на панели a, тогда как Longformer использует локальное внимание на основе окна + выбранное глобальное внимание, как показано на панели d.

Для обучения этой модели мы использовали репозиторий HuggingFace Transformers. Модель Longformer инициализируется, как показано ниже:

self.model = LongformerForSequenceClassification.from_pretrained("allenai/longformer-base-4096", return_dict=True, num_labels=2)
self.tokenizer = LongformerTokenizer.from_pretrained('allenai/longformer-base-4096')

Я создал класс LongformerFineTuner на основе PyTorch Lightning для обучения и проверки. Модель обучена за 2 эпохи на обучающей выборке из 20К новостных статей. Проверка выполняется периодически и выдает оценку точности.

Пожалуйста, найдите полный код в моем блокноте colab или на моем Github здесь.

Для тренировки этой модели я использовал Colab Pro. На полное обучение ушло около 7 часов.

Оценка модели

Обученная модель оценивается на проверочном наборе. Общая точность модели составляет 93,4%.

Оценка модели за точность, отзывчивость и F1:

                     precision    recall  f1-score   support
Not HyperPartisan       0.95      0.92      0.93      7572
   Hyper Partisan       0.92      0.95      0.93      7428
accuracy                                    0.93     15000
   macro avg            0.93      0.93      0.93     15000
weighted avg            0.93      0.93      0.93     15000

Модель правильно определяет, что приведенная ниже статья о погоде не является гиперпартийной.

Input Text: <s>July 31 (UPI) &#8212; A tropical depression off the Gulf Coast of Florida was upgraded to a tropical storm on Monday, the National Hurricane Center said. The storm was designated Tropical Storm Emily on Monday morning &#8212; the fifth named storm of the 2017 Atlantic hurricane season. Emily is moving eastward with strong winds at about 8 mph, and is expected to bring very heavy rain to south and central Florida in the coming days. Monday, officials said 60 mph winds forced the closure of the Sunshine Skyway Bridge in St. Petersburg and caused some infrastructure damage. No serious injuries have yet been reported. A <a href="http://www.sun- sentinel.com/news/weather/fl-reg-tropics-monday-20170731-story.html">tropical storm warning</a> was issued early Monday for the west coast of Florida, from Anclote River southward to Bonita Beach. The tropical storm made landfall at about 10:45 a.m., on Anna Maria Island, near Bradenton. Emily is expected to turn northeast as it passes over the state, indicating central Florida will receive much of the expected rain. The storm is expected to move offshore to the Atlantic Ocean by early Tuesday. Rain accumulations of two to four inches are predicted for the state&#8217;s west coast, the <a href="http://www.nhc.noaa.gov/text/refresh/MIATCPAT1+shtml/311139.shtml">National Hurricane Center</a> said, with isolated amounts of up to eight inches possible

И приведенная ниже статья была правильно идентифицирована как гиперпартийная новостная статья. Фактическая статья из 1300+ слов была обработана Longformer без усечения!

'A combative President Trump launched an urgent, last-ditch bid Wednesday to revive an Obamacare repeal effort that had been left for dead just 24 hours earlier, imploring Republicans to stay in Washington until the job is done and warning that failure would decimate the party and its agenda.I'm ready to act, Mr. Trump said at the White House. For seven years you've promised the American people that you would repeal Obamacare. People are hurting. Inaction is not an option. The urgent public plea marked a confrontational shift in tone for Mr. Trump, who had been lobbying senators mainly behind the scenes, and a renewed commitment to the effort. One day earlier,Mr. Trump said Republicans should force Democrats to own Obamacare by letting it collapse under its unsustainable weight.SEE ALSO: Trump hosting GOP senators at White House on Obamacare repeal Mr. Trump got personal at times, leaning into Sen. Dean Heller, a Nevada Republican who faces a tough re-election battle next year and is wary of backing the repeal-and-replace effort....

Мне нравится применять НЛП к политическим / новостным статьям. Я написал другие интересные блоги по этой теме. Пожалуйста, ознакомьтесь с этой статьей об использовании возможностей языковой генерации GPT2 для генерации речей в стиле Дональда Трампа и этой статьей об обнаружении фейковых новостей с помощью преобразователя T5.

Вывод

В этом блоге предлагается решение насущной проблемы гиперпартийных новостей. Если статьи крайне левых / крайне правых могут быть идентифицированы и отмечены в социальных сетях / блогах, то они могут помочь сократить увеличивающийся разрыв между двумя политическими партиями. Кроме того, в этом блоге для обнаружения используется Longformer. Я лично считаю, что Longformer или аналогичные модели, которые предназначены для более длинных последовательностей, более практичны и будут тенденцией в будущем. Мы можем обработать 2048 токенов и по-прежнему тренироваться в разумные сроки. Longformer может быть расширен для решения других задач, включая подробный текстовый ответ на вопрос или подробное текстовое резюме. Пожалуйста, свяжитесь со мной напрямую, если вам понадобится помощь с этим.

Надеюсь, вы попробуете код и натренируете свои собственные модели. Поделитесь своим опытом в комментариях ниже.

В Deep Learning Analytics мы очень увлечены использованием машинного обучения для решения реальных проблем. Мы помогли многим компаниям внедрить инновационные решения на основе искусственного интеллекта. Свяжитесь с нами через наш сайт здесь, если вы видите возможность сотрудничества.

использованная литература