Testo automatico riepilogo
sembra che ti interessa automatic text summarization. Per una buona panoramica del problema, delle questioni coinvolte e degli algoritmi disponibili, date un'occhiata al documento di Das and Martin A Survey on Automatic Text Summarization (2007).
semplice algoritmo
Un algoritmo di riepilogo semplice ma ragionevolmente efficace è quello di selezionare solo un numero limitato di frasi dal testo originale che contengono le parole di contenuto più frequenti (ad esempio, quelle più frequenti che non includono stop list parole).
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
Alcuni pacchetti open source che fanno riepilogo usando questo algoritmo sono:
Classifier4J (Java)
Se stai usando Java, è possibile utilizzare il modulo SimpleSummarizerClassifier4J s'.
Utilizzando l'esempio trovato here, supponiamo che il testo originale è:
Classifier4J è un pacchetto Java per lavorare con il testo. Classifier4J include un riepilogo. Un Summariser consente il riepilogo del testo. Un Summariser è davvero interessante. Non penso ci siano altri jaris summarisers.
Come si è visto nel seguente frammento di codice, è possibile creare facilmente un semplice riassunto una frase:
// Request a 1 sentence summary
String summary = summariser.summarise(longOriginalText, 1);
Usando l'algoritmo di cui sopra, questo produrrà Classifier4J includes a summariser.
.
NClassifier (C#)
Se stai usando C#, c'è un porto di Classifier4J a C# chiamato NClassifier
Summarizer di Tristan Havelick per NLTK (Python)
C'è un porta Python work-in-progress del classificatore di Classifier4J creato con Python Natural Language Toolkit (NLTK) disponibile here.
Possibile duplicato di: ** [C# Ricerca di frammenti di documento rilevanti per visualizzazione risultati di ricerca] (http: // stackoverflow.it/questions/282002) ** – hippietrail