Задумывались ли вы о том, почему Twitter так популярен? Почему маленькие сообщения заменяют большие истории? Помогает ли это нам в каком-то смысле очистить свой разум? Или это мир обобщенной информации?

Мир быстро развивается в отношении технологий, коммерции, бизнеса и средств массовой информации. Вокруг так много информации, и происходит постоянная бомбардировка информацией, которая загромождает наш разум. У людей короткая продолжительность концентрации внимания; следовательно, мы не можем запомнить слова в длинном документе. Извлечение сути из этих длинных документов стало почти необходимостью, которая изменит наш мир. И, вероятно, именно поэтому Twitter так успешен.

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

Обработка естественного языка (NLP) — это раздел информатики, информационной инженерии и искусственного интеллекта, который можно использовать для автоматического суммирования веб-страниц. В этой статье мы узнаем о суммировании текста, чрезвычайно важном понятии текстовой аналитики, которое используется предприятиями и аналитическими фирмами для сокращения и обобщения огромных текстовых документов. Резюме текста — это подобласть НЛП, которая занимается извлечением резюме из огромных кусков текста.

Шаги суммирования текста

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

  1. как выбрать основное содержание документа и
  2. как выразить выбранное содержание в сжатой форме.

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

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

Основные шаги, выполняемые при суммировании текста, включают следующее:
1. Получить данные с веб-страницы.

Первой задачей является загрузка текста веб-страниц. urllib.request – это модуль Python для получения URL-адресов. Функция urlopen может извлекать URL-адреса с использованием различных протоколов. Он также предлагает немного более сложный интерфейс для обработки распространенных ситуаций, таких как базовая аутентификация, файлы cookie, прокси и так далее.

# scrape the data from a web page
def scrape_data_from_page(url):
    article_text = “”
    if(site):
        scraped_data = urllib.request.urlopen(url)
        article = scraped_data.read()
        parsed_article = bs.BeautifulSoup(article,’lxml’)
        # Assuming that the text data is in paragraphs,
        # we shall fetch all the paragraphs.
        paragraphs = parsed_article.find_all(‘p’)
        for p in paragraphs: 
            article_text += p.text
 
    return article_text

2. Нормализация текста

Нормализация текста — это процесс очистки, нормализации и стандартизации текстовых данных с помощью таких методов, как удаление специальных символов и символов, удаление лишних HTML-тегов, удаление стоп-слов и т. д. Здесь мы удаляем только квадратные скобки, лишние пробелы. и специальные символы. Тем не менее, мы можем использовать другие продвинутые методы, такие как исправление орфографии, выделение корней и лемматизация для нормализации текста.

def normalize_page_text(article_text): 
    # Removing Square Brackets and Extra Spaces
    article_text = re.sub(r'\[[0-9]*\]', ' ', article_text)  
    article_text = re.sub(r'\s+', ' ', article_text)
    # Removing special characters
    formatted_article_text = re.sub('[^a-zA-Z]', ' ', article_text )  
    return re.sub(r'\s+', ' ', formatted_article_text)

3. Извлечение признаков

Извлечение признаков – это процесс извлечения значимых признаков или атрибутов из необработанных текстовых данных для передачи их в статистический алгоритм или алгоритм машинного обучения. Этот процесс также известен как векторизация, потому что обычно конечным преобразованием этого процесса являются числовые векторы из необработанных текстовых токенов. Существуют различные методы, используемые для извлечения признаков, такие как:

  • Извлечение признаков на основе вхождений бинарных терминов
  • Пакет частот извлечения признаков на основе слов
  • Извлечение признаков, взвешенных по TF-IDF

Для простоты я буду использовать извлечение частотных признаков на основе Bag of Words, которые сообщают нам частоту появления слова или группы слов в документе.

# Use Bag of Words–based frequency feature extraction to find the 
# weighted frequency of occurrence of each word
def find_weighted_frequency_of_occurence(formatted_article_text):
    stopwords = nltk.corpus.stopwords.words('english')
    wf = {}  
    for word in nltk.word_tokenize(formatted_article_text):  
        if word not in stopwords:
            if word not in wf.keys():
                wf[word] = 1
            else:
                wf[word] += 1
    
    maximum_frequncy = max(wf.values())
    for word in wf.keys():
        wf[word] = (wf[word]/maximum_frequncy)
        
    return wf

4. Рейтинг предложений

Следующим шагом является извлечение признака из предложения и проверка его важности для ранжирования. Здесь частота слов используется для расчета оценки
предложения:

# Calculating Sentence Scores
def calculate_sentence_scores(sentence_list, wf):
    sentence_scores = {}  
    for sent in sentence_list:  
        for word in nltk.word_tokenize(sent.lower()):
            if word in wf.keys():
                if len(sent.split(' ')) < 30:
                    if sent not in sentence_scores.keys():
                        sentence_scores[sent] = wf[word]
                    else:
                        sentence_scores[sent] += wf[word]
    return sentence_scores

Мы можем использовать многие методы глубокого обучения для повышения точности и лучших результатов, таких как модель кодировщика-декодера.

5. Поиск лучших предложений

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

# retrieve_top_sentences to get the summary
def retrieve_top_sentences(sentence_scores, num):
    summary_sentences = heapq.nlargest(num, sentence_scores, key=sentence_scores.get)
    return ' \n\n'.join(summary_sentences)

6. Обобщите документ

Наконец, используя написанную выше функцию, чтобы получить сводку веб-страницы следующим образом:

def get_summary_from_web_page(url, toplines): 
    article_text = scrape_data_from_page(url)

    article_text = normalize_page_text(article_text)

    # Converting Text To Sentences
    sentence_list = sent_tokenize(article_text)

    wf = find_weighted_frequency_of_occurence(article_text)

    sentence_scores = calculate_sentence_scores(sentence_list, wf)

    return retrieve_top_sentences(sentence_scores, toplines)
url = 'https://en.wikipedia.org/wiki/Cloud_computing'
# Get the summary of page in 10 lines
summary = get_summary_from_web_page(url, 10) 
print(summary)

Сноска

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

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

Если вам понравилась эта статья, пожалуйста, оставьте несколько 👏. Это дает мне понять, что я помогаю.

Свяжитесь со мной

Нужна помощь с машинным обучением или ИИ? Свяжитесь со мной по адресу [email protected]

Следите за мной в 🐦 Twitter и 📝 Medium.

Спасибо за чтение!