Автоматическое суммирование текста
Звучит так, будто вас интересует автоматическое суммирование текста . Хороший обзор проблемы, связанных с ней проблем и доступных алгоритмов можно найти в статье Даса и Мартина Обзор по автоматическому суммированию текста (2007).
Простой алгоритм
Простой, но достаточно эффективный алгоритм суммирования состоит в том, чтобы просто выбрать ограниченное количество предложений из исходного текста, которые содержат наиболее часто встречающиеся слова с содержанием (т. Е. Наиболее часто встречающиеся, не включающие стоп-лист слова).
Summarizer(originalText, maxSummarySize):
// start with the raw freqs, e.g. [(10,'the'), (3,'language'), (8,'code')...]
wordFrequences = getWordCounts(originalText)
// filter, e.g. [(3, 'language'), (8, 'code')...]
contentWordFrequences = filtStopWords(wordFrequences)
// sort by freq & drop counts, e.g. ['code', 'language'...]
contentWordsSortbyFreq = sortByFreqThenDropFreq(contentWordFrequences)
// Split Sentences
sentences = getSentences(originalText)
// Select up to maxSummarySize sentences
setSummarySentences = {}
foreach word in contentWordsSortbyFreq:
firstMatchingSentence = search(sentences, word)
setSummarySentences.add(firstMatchingSentence)
if setSummarySentences.size() = maxSummarySize:
break
// construct summary out of select sentences, preserving original ordering
summary = ""
foreach sentence in sentences:
if sentence in setSummarySentences:
summary = summary + " " + sentence
return summary
Некоторые пакеты с открытым исходным кодом, которые выполняют суммирование с использованием этого алгоритма:
Classifier4J (Java)
Если вы используете Java, вы можете использовать Classifier4J модуль SimpleSummarizer .
Используя найденный пример здесь , давайте предположим, что оригинальный текст:
Classifier4J - это Java-пакет для работы с текстом. Classifier4J включает в себя сумматор. Summariser позволяет сводку текста. Подведение итогов действительно круто. Я не думаю, что есть какие-либо иные сумматоры Java.
Как видно из следующего фрагмента, вы можете легко создать простое резюме из одного предложения:
// Request a 1 sentence summary
String summary = summariser.summarise(longOriginalText, 1);
Используя приведенный выше алгоритм, вы получите Classifier4J includes a summariser.
.
N Классификатор (C #)
Если вы используете C #, есть порт Classifier4J - C #, называемый NClassifier
Подведение итогов Тристана Хавелика для NLTK (Python)
Имеется незавершенный порт Python для сумматора Classifier4J, созданный с использованием набора естественных языков (NLTK) Python доступен здесь .