UNPKG

ts-textrank

Version:

Typescript TextRank implementation

89 lines (88 loc) 3.21 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.RelativeSummarizerConfig = exports.AbsoluteSummarizerConfig = void 0; const Summarizer_1 = __importDefault(require("./Summarizer")); /** * Absolute count config */ class AbsoluteSummarizerConfig { constructor(sentenceCount, similarity, parser, dampingFactor, sortMode) { this.sentenceCount = sentenceCount; this.similarity = similarity; this.parser = parser; this.dampingFactor = dampingFactor; this.sortMode = sortMode; this.validate(); } validate() { if (this.sentenceCount < 1) { throw new Error(`sentence count ${this.sentenceCount} is not valid. Must be 0 < d`); } if (this.dampingFactor < 0 || this.dampingFactor > 1) { throw new Error(`damping factor ${this.dampingFactor} is not valid. Must be 0 < d < 1`); } if (this.sortMode !== Summarizer_1.default.SORT_OCCURENCE && this.sortMode !== Summarizer_1.default.SORT_SCORE) { throw new Error(`sort mode ${this.sortMode} is not valid. Must be Summarizer.SORT_OCCURENCE or Summarizer.SORT_SCORE`); } } getSortMode() { return this.sortMode; } getDampingFactor() { return this.dampingFactor; } getTextParser() { return this.parser; } getSimilarityFunction() { return this.similarity; } getSentenceCount(text) { return this.sentenceCount; } } exports.AbsoluteSummarizerConfig = AbsoluteSummarizerConfig; class RelativeSummarizerConfig { constructor(sentenceRatio, similarity, parser, dampingFactor, sortMode) { this.sentenceRatio = sentenceRatio; this.similarity = similarity; this.parser = parser; this.dampingFactor = dampingFactor; this.sortMode = sortMode; this.validate(); } validate() { if (this.sentenceRatio <= 0 || this.sentenceRatio >= .5) { throw new Error(`sentence ratio ${this.sentenceRatio} is not valid. Must be 0 < ratio < .5`); } if (this.dampingFactor < 0 || this.dampingFactor > 1) { throw new Error(`damping factor ${this.dampingFactor} is not valid. Must be 0 < d < 1`); } if (this.sortMode !== Summarizer_1.default.SORT_OCCURENCE && this.sortMode !== Summarizer_1.default.SORT_SCORE) { throw new Error(`sort mode ${this.sortMode} is not valid. Must be Summarizer.SORT_OCCURENCE or Summarizer.SORT_SCORE`); } } getSortMode() { return this.sortMode; } calculateSentenceCount(text) { const total = text.sentences.length; return total * this.sentenceRatio; } getTextParser() { return this.parser; } getSimilarityFunction() { return this.similarity; } getSentenceCount(text) { return this.calculateSentenceCount(text); } getDampingFactor() { return this.dampingFactor; } } exports.RelativeSummarizerConfig = RelativeSummarizerConfig;