ts-textrank
Version:
Typescript TextRank implementation
89 lines (88 loc) • 3.21 kB
JavaScript
"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;