The TextRank algorithm implemented in Go. This particular implementation is suited for sentence extraction and is based off the paper by Rada Mihalcea and Paul Tarau (2004).
package main
import (
"fmt"
"io/ioutil"
"os"
"github.com/joshleeb/textrank"
)
func main() {
bytes, _ := ioutil.ReadAll(os.Stdin)
text := string(bytes)
// Iterating 30 times was chosen based on the convergence curves in Figure 1
// of "TextRank: Bringing Order into Texts" by Rada Mihalcea and Paul Tarau,
// 2004 - https://web.eecs.umich.edu/~mihalcea/papers/mihalcea.emnlp04.pdf
words := textrank.RankWords(text, 30)[:5]
fmt.Println(words)
// Iterating 5 times was chosen based on the convergence curves in Figure 1
// of "TextRank: Bringing Order into Texts" by Rada Mihalcea and Paul Tarau,
// 2004 - https://web.eecs.umich.edu/~mihalcea/papers/mihalcea.emnlp04.pdf
sentences := textrank.RankSentences(text, 5)
for _, sentence := range sentences[:5] {
fmt.Println("\n" + sentence)
}
}