CoderCastrov logo
CoderCastrov
NLP - Обработка естественного языка

Использование NLP для предоставления верхнеуровневых резюме статей Википедии

Использование NLP для предоставления верхнеуровневых резюме статей Википедии
просмотров
5 мин чтение
#NLP - Обработка естественного языка

В этой статье мы рассмотрим, как использовать техники обработки естественного языка (NLP) для создания верхнеуровневых резюме связанных статей Википедии. Это может быть полезно, когда вы хотите быстро понять основные моменты нескольких статей по теме, не читая каждую из них. Мы будем использовать мощную библиотеку NLP spaCy и пакет wikipedia для Python, чтобы достичь этой цели. Кроме того, мы воспользуемся библиотекой scipy для вычисления косинусной схожести для ранжирования предложений.

Вот код, который мы будем использовать, разбитый и объясненный пошагово:


Импорт необходимых библиотек:

Мы начинаем с импорта необходимых библиотек: spacy для обработки естественного языка, wikipedia для взаимодействия с API Википедии и cosine из scipy.spatial.distance для вычисления косинусного сходства между векторами.

import spacy
import wikipedia
from scipy.spatial.distance import cosine

Загрузка модели обработки естественного языка:

Затем мы загружаем модель en_core_web_lg из spaCy, которая является большой моделью английского языка и включает в себя векторы слов для вычисления семантической близости.

nlp = spacy.load("en_core_web_lg")

Определение функции get_related_articles:

Эта функция принимает запрос (тему, по которой вы хотите найти статьи) и необязательный параметр языка (по умолчанию английский). Она ищет связанные статьи с помощью библиотеки wikipedia и возвращает список словарей, содержащих заголовки статей, URL-адреса и краткое описание.

def get_related_articles(query, language='en'):
    wikipedia.set_lang(language)
    search_results = wikipedia.search(query)

    related_articles = []
    for result in search_results:
        try:
            page = wikipedia.page(result)
            related_articles.append({
                'title': page.title,
                'url': page.url,
                'summary': page.summary,
            })
        except wikipedia.exceptions.DisambiguationError as e:
            print(f"Найдена страница с неоднозначным значением: {e}")
        except wikipedia.exceptions.PageError as e:
            print(f"Страница не найдена: {e}")

    return related_articles

Определение функции summarize_summaries:

Эта функция принимает список связанных статей и необязательный параметр для количества предложений, которые следует включить в итоговое резюме (по умолчанию 10). Она вычисляет средний вектор для всех предложений в резюме, ранжирует предложения на основе их косинусной схожести среднего вектора и возвращает топовые n_sentences в качестве итогового резюме.

def summarize_summaries(related_articles, n_sentences=10):
    all_summaries = ' '.join([article['summary'] for article in related_articles])
    doc = nlp(all_summaries)

    # Преобразование генератора doc.sents в список
    sentences = list(doc.sents)

    # Вычисление среднего вектора для всех предложений
    avg_vector = sum([nlp(sent.text).vector for sent in sentences]) / len(sentences)

    # Ранжирование предложений на основе косинусной схожести среднего вектора
    ranked_sentences = sorted(sentences, key=lambda x: 1 - cosine(nlp(x.text).vector, avg_vector), reverse=True)

    # Возвращение топовых n_sentences в качестве резюме
    summary_sentences = ranked_sentences[:n_sentences]
    summary = ' '.join([sent.text for sent in summary_sentences])

    return summary

Основной блок кода

Наконец, в основном блоке кода мы определяем запрос (в данном случае "Барак Обама"), вызываем функцию get_related_articles для получения связанных статей, а затем вызываем функцию summarize_summaries для генерации окончательного резюме. Затем мы выводим резюме в консоль.

if __name__ == '__main__':
    query = 'Барак Обама'
    related_articles = get_related_articles(query)
    summary = summarize_summaries(related_articles)

    print("Резюме резюме:")
    print(summary)

Используя техники обработки естественного языка (Natural Language Processing, NLP) и пакет wikipedia, мы можем быстро и эффективно создавать общие резюме для набора связанных статей из Википедии, что упрощает понимание основных моментов без необходимости читать каждую статью полностью.

Результат

Сводка сводок: Среди сотен речей, которые он произнес с тех пор, включаются шесть речей перед Конгрессом (включая четыре обращения к нации), две победные речи, речь к исламскому миру в Египте в начале своего первого срока, а также речь после стрельбы в конгрессмена Габриэллы Гиффордс. Обама также руководил внедрением Закона об доступной медицине и другими законодательными актами, принятыми в его первом сроке, и провел переговоры о ядерном соглашении с Ираном и нормализации отношений с Кубой. Во внешней политике он приказал военные вмешательства в Ираке и Сирии в ответ на успехи ИГИЛ после вывода войск из Ирака в 2011 году, способствовал обсуждениям, которые привели к Парижскому соглашению 2015 года по глобальным изменениям климата, сократил численность американских войск в Афганистане в 2016 году, ввел санкции против России после аннексии Крыма и снова после вмешательства в выборы США 2016 года, посредничал в ядерной сделке с Ираном и нормализовал отношения США с Кубой. Президентский центр Барака Обамы - это запланированный музей, библиотека и образовательный проект в Чикаго, посвященный президентству Барака Обамы, 44-го президента Соединенных Штатов. Обама и другие воздали дань Линкольну в виде почестей и ссылок во время нескольких мероприятий, начиная с коммерческого поезда из Филадельфии, Пенсильвания, в Вашингтон, округ Колумбия, 17 января 2009 года. Достижения Обамы за первые 100 дней его президентства включали подписание Закона о справедливой оплате труда Лилли Ледбеттер 2009 года, смягчение сроков исков о равной оплате; подписание закона о расширенной программе страхования здоровья для детей (S-CHIP); одобрение конгрессом бюджетного резолюции, которая закрепила позицию Конгресса в отношении реформы здравоохранения в 2009 году; внедрение новых этических руководящих принципов, направленных на существенное ограничение влияния лоббистов на исполнительную власть; отказ от политики Буша по ряду вопросов, за исключением Ирака, в котором он продолжил вывод американских войск из Ирака; поддержка декларации ООН о сексуальной ориентации и гендерной идентичности; и отмена 7,5-летнего запрета на финансирование федеральных исследований на эмбриональных стволовых клетках. Семья Барака Обамы, 44-го президента Соединенных Штатов, является выдающейся американской семьей, активной в праве, образовании, активизме и политике. Президентская присяга, которую Верховный судья Джон Робертс вручил Обаме во время его инаугурационной церемонии 20 января, немного отклонялась от присяги, предусмотренной Конституцией Соединенных Штатов, что привело к ее повторному вручению на следующий день. 56-я инаугурация, которая установила рекорд посещаемости для любого мероприятия, проводимого в городе, отметила начало первого срока Барака Обамы в качестве президента и Джо Байдена в качестве вице-президента. В Чикаго Обама работал в разное время в качестве организатора сообщества, юриста, лектора и старшего лектора по конституционному праву в Юридической школе Университета Чикаго на южной стороне города, а затем опубликовал свою мемуарную книгу "Сны отца моего" перед началом своей политической карьеры в 1997 году в качестве члена Иллинойского сената.

Ограничения

В то время как подход, описанный в статье, предоставляет быстрый способ генерации верхнеуровневых резюме для связанных статей в Википедии, у него есть некоторые ограничения. Вот некоторые из основных проблем:

Несмотря на эти ограничения, подход, представленный в статье, все равно может быть полезен для быстрого создания верхнеуровневых резюме связанных статей в Википедии во многих случаях. Важно знать об этих ограничениях и рассмотреть альтернативные методы или улучшения, если необходимо решить конкретные задачи.

Дальнейшие шаги

Для решения упомянутых ранее ограничений можно рассмотреть несколько альтернативных или дополнительных подходов:

Путем исследования этих альтернативных подходов вы можете улучшить качество резюме и устранить ограничения исходного метода. Комбинирование нескольких техник и использование более продвинутых моделей обработки естественного языка (NLP) может значительно улучшить производительность процесса суммаризации.

СТАТЬ ПИСАТЕЛЕМ на MLearning.ai

Предложения по публикации на Mlearning.ai

Как стать писателем на Mlearning.ai

medium.com