diff options
Diffstat (limited to 'vendor/github.com/DavidBelicza/TextRank/v2/convert/builder.go')
| -rw-r--r-- | vendor/github.com/DavidBelicza/TextRank/v2/convert/builder.go | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/vendor/github.com/DavidBelicza/TextRank/v2/convert/builder.go b/vendor/github.com/DavidBelicza/TextRank/v2/convert/builder.go new file mode 100644 index 0000000..db94cfc --- /dev/null +++ b/vendor/github.com/DavidBelicza/TextRank/v2/convert/builder.go @@ -0,0 +1,43 @@ +package convert + +import ( + "github.com/DavidBelicza/TextRank/v2/parse" + "github.com/DavidBelicza/TextRank/v2/rank" +) + +// TextToRank function converts a ParsedSentence object to Rank object, it is +// the preparing process to later text ranking. +func TextToRank(sentence parse.ParsedSentence, lang Language, ranks *rank.Rank) { + sentenceId := addSentence(ranks, sentence) + addWord(ranks, sentence.GetWords(), lang, sentenceId) +} + +func addWord(ranks *rank.Rank, words []string, lang Language, sentenceID int) { + prevWordID := -1 + var curWordID int + + for _, word := range words { + if !lang.IsStopWord(word) { + if found, rootWord := lang.FindRootWord(word); found { + word = rootWord + } + + if !ranks.IsWordExist(word) { + curWordID = ranks.AddNewWord(word, prevWordID, sentenceID) + } else { + curWordID = ranks.UpdateWord(word, prevWordID, sentenceID) + } + + ranks.Relation.AddRelation(curWordID, prevWordID, sentenceID) + ranks.UpdateRightConnection(prevWordID, curWordID) + + prevWordID = curWordID + } + } +} + +func addSentence(ranks *rank.Rank, sentence parse.ParsedSentence) int { + ranks.SentenceMap[len(ranks.SentenceMap)] = sentence.GetOriginal() + + return len(ranks.SentenceMap) - 1 +} |
