texto resumen automático
parece que usted está interesado en automatic text summarization. Para obtener una buena visión general del problema, los problemas involucrados y los algoritmos disponibles, consulte el documento de Das y Martin A Survey on Automatic Text Summarization (2007).
simple algoritmo
Un simple pero razonablemente eficaz algoritmo de resumen implica elegir un número limitado de frases del texto original que contiene las palabras de contenido más frecuentes (es decir, las más frecuentes sin incluir stop list palabras)
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
Algunos paquetes de código abierto que hacen uso de este algoritmo de resumen son:
Classifier4J (Java)
Si está utilizando Java, se puede utilizar Classifier4J 's módulo de SimpleSummarizer.
Usando el ejemplo encontró here, asumamos que el texto original es:
Classifier4J es un paquete de Java para trabajar con texto. Classifier4J incluye un resumen. Un resumidor permite el resumen del texto. Un Summariser es realmente genial. No creo que haya ningún otro sumario de Java.
Como se ve en el siguiente fragmento, se puede crear fácilmente un simple resumen de una frase:
// Request a 1 sentence summary
String summary = summariser.summarise(longOriginalText, 1);
Usando el algoritmo anterior, esto producirá Classifier4J includes a summariser.
.
NClassifier (C#)
Si estás usando C#, hay un puerto de Classifier4J a C# llamado NClassifier
Resumidor de Tristan Havelick para NLTK (Python)
Hay una puerto en progreso de Python del clasificador de 4J de Classifier construido con Python's Natural Language Toolkit (NLTK) disponible here.
Posible duplicado de: ** [C# Encontrar fragmentos de documentos relevantes para la pantalla de resultados de búsqueda] (http: // stackoverflow.com/questions/282002) ** – hippietrail