Резюмирование текста в НЛП означает короткое рассказывание длинной истории с ограниченным количеством слов и передачу важного сообщения вкратце.

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

После этого найдите предложения с высокой частотой и выберите наиболее важные предложения для передачи сообщения.

Зачем нам нужно автоматическое суммирование?

Оптимизация времени, так как требуется меньше времени, чтобы понять суть текста вкратце.

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

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

Смещение меньше при автоматическом суммировании, чем при ручном.

Обобщение текста может быть разных типов, например:

1) В зависимости от типа ввода: это может быть один или несколько документов, текст которых необходимо обобщить.

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

3) На основе типа вывода: в зависимости от того, как вывод требуется, абстрактный или экстрактивный.

Шаги по обобщению текста:

1) Очистка текста: удаление стоп-слов, знаков препинания и перевод слов в нижний регистр.

2) Токенизация работы: токенизация каждого слова из предложений.

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

4) Токенизация предложения: в зависимости от частоты предложения, то

5) Обобщение

Теперь посмотрим, как это сделать с помощью библиотеки Spacy.

Установите и импортируйте просторную библиотеку, а также импортируйте стоп-слова.

pip install spacy
import spacy
from spacy.lang.en.stop_words import STOP_WORDS

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

stopwords=list(STOP_WORDS)
from string import punctuation
punctuation=punctuation+ '\n'

Сохраните текст в переменном тексте, из которого нам нужно резюмировать текст.

text="""The human coronavirus was first diagnosed in 1965 by Tyrrell and Bynoe from the respiratory tract sample of an adult with a common cold cultured on human embryonic trachea.1 Naming the virus is based on its crown-like appearance on its surface.2 Coronaviruses (CoVs) are a large family of viruses belonging to the Nidovirales order, which includes Coronaviridae, Arteriviridae, and Roniviridae families.3 Coronavirus contains an RNA genome and belongs to the Coronaviridae family.4 This virus is further subdivided into four groups, ie, the α, β, γ, and δ coronaviruses.5 α- and β-coronavirus can infect mammals, while γ- and δ- coronavirus tend to infect birds.6 Coronavirus in humans causes a range of disorders, from mild respiratory tract infections, such as the common cold to lethal infections, such as the severe acute respiratory syndrome (SARS), Middle East respiratory syndrome (MERS) and Coronavirus disease 2019 (COVID-19). The coronavirus first appeared in the form of severe acute respiratory syndrome coronavirus (SARS-CoV) in Guangdong province, China, in 20027 followed by Middle East respiratory syndrome coronavirus (MERS-CoV) isolated from the sputum of a 60-year-old man who presented symptoms of acute pneumonia and subsequent renal failure in Saudi Arabia in 2012.8 In December 2019, a β-coronavirus was discovered in Wuhan, China. The World Health Organization (WHO) has named the new disease as Coronavirus disease 2019 (COVID-19), and Coronavirus Study Group (CSG) of the International Committee has named it as SARS-CoV-2.9,10 Based on the results of sequencing and evolutionary analysis of the viral genome, bats appear to be responsible for transmitting the virus to humans"""

Обозначьте слова из предложений в тексте.

nlp = spacy.load('en_core_web_sm')
doc= nlp(text)
tokens=[token.text for token in doc]
print(tokens)

Вычислите частоту слов из текста после удаления игнорируемых слов и знаков препинания.

word_frequencies={}
for word in doc:
    if word.text.lower() not in stopwords:
        if word.text.lower() not in punctuation:
            if word.text not in word_frequencies.keys():
                word_frequencies[word.text] = 1
            else:
                word_frequencies[word.text] += 1

Распечатайте и посмотрите, как часто встречаются слова, чтобы знать важные слова.

print(word_frequencies)

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

max_frequency=max(word_frequencies.values())
for word in word_frequencies.keys():
    word_frequencies[word]=word_frequencies[word]/max_frequency

Выведите нормализованные частоты слов.

print(word_frequencies)

Получите жетоны предложений.

sentence_tokens= [sent for sent in doc.sents]
print(sentence_tokens)

Вычислите наиболее важные предложения, добавив частоты слов в каждом предложении.

sentence_scores = {}
for sent in sentence_tokens:
    for word in sent:
        if word.text.lower() in word_frequencies.keys():
            if sent not in sentence_scores.keys():                            
             sentence_scores[sent]=word_frequencies[word.text.lower()]
            else:
             sentence_scores[sent]+=word_frequencies[word.text.lower()]

Оценка предложения печати

sentence_scores

Из ‘headhq’ импортируйте ‘nlargest’ и вычислите 30% текста с максимальной оценкой.

from heapq import nlargest
select_length=int(len(sentence_tokens)*0.3)
select_length
summary=nlargest(select_length, sentence_scores,key=sentence_scores.get)
summary

Получите краткое содержание текста.

final_summary=[word.text for word in summary]
final_summary
summary=''.join(final_summary)
summary

Мы получаем результат, как показано ниже:

'and β-coronavirus can infect mammals, while γ- and δ- coronavirus tend to infect birds.6 Coronavirus in humans causes a range of disorders, from mild respiratory tract infections, such as the common cold to lethal infections, such as the severe acute respiratory syndrome (SARS), Middle East respiratory syndrome (MERS) and Coronavirus disease 2019 (COVID-19).The coronavirus first appeared in the form of severe acute respiratory syndrome coronavirus (SARS-CoV) in Guangdong province, China, in 20027 followed by Middle East respiratory syndrome coronavirus (MERS-CoV) isolated from the sputum of a 60-year-old man who presented symptoms of acute pneumonia and subsequent renal failure in Saudi Arabia in 2012.8The World Health Organization (WHO) has named the new disease as Coronavirus disease 2019 (COVID-19), and Coronavirus Study Group (CSG) of the International Committee has named it as SARS-CoV-2.9,10 Based on the results of sequencing and evolutionary analysis of the viral genome, bats appear to be responsible for transmitting the virus to humans

Заключение

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

Могут быть различные другие способы, такие как использование библиотеки «nltk», чтобы сделать это, используя лексический анализ, часть речевого теггера и n-грамм, распознавание сущности имени и косинусное сходство между предложениями. Подробнее об этом мы поговорим в моем следующем блоге.

Первоначально опубликовано на https://www.numpyninja.com 2 марта 2021 г.