wnsummarizer
Version:
A complex summarize to easy for you
237 lines (198 loc) • 8.01 kB
Markdown
# wnsummarizer
This project is for those of you who need to quickly summarize long texts. Using wnresoomer, you can summarize long texts. However, this module has the following drawbacks:
1. It can't read documents.
2. It can't read links.
3. It can only read text directly.
I will try to add this feature in the future.
## Installation
```bash
npm i wnsummarizer
```
Or
```bash
npm install wnsummarizer
```
The main feature of my module is to summarize long texts, besides that it can be used for concise text tests and multi-text tests.
This module uses cores from the CPU for better performance, I use the module from the [os](https://github.com/DiegoRBaquero/node-os) to get cores from the CPU itself.
## tsconfig.json
```json
{
"compilerOptions": {
"target": "ES2020",
"module": "CommonJS",
"declaration": true,
"outDir": "./dist",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true
},
"include": ["*.ts"]
}
```
## Summarize Feature (TS)
```ts
import {TextSummarizer} from 'wnsummarizer';
async function summarizer() {
const summarizer = new TextSummarizer();
const text = `Your text`;
// Level 1 summarizer
const result1 = await summarizer.summarize(text, { level: 1 });
console.log('Original length:', result1.original.length, 'characters');
console.log('Summary length:', result1.summary.length, 'characters');
console.log('Compression ratio:', (result1.compressionRatio * 100).toFixed(1) + '%');
console.log('Summary:', result1.summary);
console.log('Key points:', result1.keyPoints);
console.log('Processing time:', result1.processingTime.toFixed(2), 'ms\n');
// Level 2 summarizer
const result2 = await summarizer.summarize(text, { level: 2 });
console.log('Original length:', result2.original.length, 'characters');
console.log('Summary length:', result2.summary.length, 'characters');
console.log('Compression ratio:', (result2.compressionRatio * 100).toFixed(1) + '%');
console.log('Summary:', result2.summary);
console.log('Key points:', result2.keyPoints);
console.log('Processing time:', result2.processingTime.toFixed(2), 'ms\n');
// Level 3 summarizer
const result3 = await summarizer.summarize(text, { level: 3 });
console.log('Original length:', result3.original.length, 'characters');
console.log('Summary length:', result3.summary.length, 'characters');
console.log('Compression ratio:', (result3.compressionRatio * 100).toFixed(1) + '%');
console.log('Summary:', result3.summary);
console.log('Key points:', result3.keyPoints);
console.log('Processing time:', result3.processingTime.toFixed(2), 'ms\n');
}
summarizer();
```
## Custom Summarize Feature (TS)
```ts
import {TextSummarizer} from 'wnsummarizer';
async function customsummarize() {
const summarizer = new TextSummarizer();
const text = `Your text`;
const customConfig = {
level: 3 as const, // summarization level
minSentences: 2, // minimum sentences in summary
maxSentences: 4 // maximum sentences in summary
};
const custom = await summarizer.summarize(text, customConfig);
console.log('Custom summary:', custom.summary);
console.log('Processing time:', custom.processingTime.toFixed(2), 'ms\n');
}
customsummarize();
```
## Short Text Feature (TS)
```ts
import {TextSummarizer} from 'wnsummarizer';
async function shorttext() {
const summarizer = new TextSummarizer();
const shortText = "Your text";
const shorttext = await summarizer.summarize(shortText, { level: 2 });
console.log('Short text result:', shorttext.summary);
console.log('Processing time:', shorttext.processingTime.toFixed(2), 'ms\n');
}
shorttext();
```
## Multiple Short Text Feature (TS)
```ts
import {TextSummarizer} from 'wnsummarizer';
async function multipleshorttext() {
const summarizer = new TextSummarizer();
const texts = [
"Your text 1",
"Your text 2",
"Your text 3",
"etc"
];
for (let i = 0; i < texts.length; i++) {
console.log(`Text ${i + 1}:`);
const multipleshorttext = await summarizer.summarize(texts[i], { level: 2 });
console.log('Summary:', multipleshorttext.summary);
console.log('Key points:', multipleshorttext.keyPoints);
console.log('Time:', multipleshorttext.processingTime.toFixed(2), 'ms\n');
}
}
multipleshorttext();
```
Besides TypeScript, this module can be used in NodeJS language.
## Summarize Feature (NodeJS)
```js
const {TextSummarizer} = require('wnsummarizer');
async function summarizer() {
const summarizer = new TextSummarizer();
const text = `Your text`;
// Level 1 summarizer
const result1 = await summarizer.summarize(text, { level: 1 });
console.log('Original length:', result1.original.length, 'characters');
console.log('Summary length:', result1.summary.length, 'characters');
console.log('Compression ratio:', (result1.compressionRatio * 100).toFixed(1) + '%');
console.log('Summary:', result1.summary);
console.log('Key points:', result1.keyPoints);
console.log('Processing time:', result1.processingTime.toFixed(2), 'ms\n');
// Level 2 summarizer
const result2 = await summarizer.summarize(text, { level: 2 });
console.log('Original length:', result2.original.length, 'characters');
console.log('Summary length:', result2.summary.length, 'characters');
console.log('Compression ratio:', (result2.compressionRatio * 100).toFixed(1) + '%');
console.log('Summary:', result2.summary);
console.log('Key points:', result2.keyPoints);
console.log('Processing time:', result2.processingTime.toFixed(2), 'ms\n');
// Level 3 summarizer
const result3 = await summarizer.summarize(text, { level: 3 });
console.log('Original length:', result3.original.length, 'characters');
console.log('Summary length:', result3.summary.length, 'characters');
console.log('Compression ratio:', (result3.compressionRatio * 100).toFixed(1) + '%');
console.log('Summary:', result3.summary);
console.log('Key points:', result3.keyPoints);
console.log('Processing time:', result3.processingTime.toFixed(2), 'ms\n');
}
summarizer();
```
## Custom Summarize Feature (NodeJS)
```js
const {TextSummarizer} = require('wnsummarizer');
async function customsummarize() {
const summarizer = new TextSummarizer();
const text = `Your text`;
const customConfig = {
level: 3, // summarization level
minSentences: 2, // minimum sentences in summary
maxSentences: 4 // maximum sentences in summary
};
const custom = await summarizer.summarize(text, customConfig);
console.log('Custom summary:', custom.summary);
console.log('Processing time:', custom.processingTime.toFixed(2), 'ms\n');
}
customsummarize();
```
## Short Text Feature (NodeJS)
```js
const {TextSummarizer} = require('wnsummarizer');
async function shorttext() {
const summarizer = new TextSummarizer();
const shortText = "Your text";
const shorttext = await summarizer.summarize(shortText, { level: 2 });
console.log('Short text result:', shorttext.summary);
console.log('Processing time:', shorttext.processingTime.toFixed(2), 'ms\n');
}
shorttext();
```
## Multiple Short Text Feature (NodeJS)
```js
const {TextSummarizer} = require('wnsummarizer');
async function multipleshorttext() {
const summarizer = new TextSummarizer();
const texts = [
"Your text 1",
"Your text 2",
"Your text 3",
"etc"
];
for (let i = 0; i < texts.length; i++) {
console.log(`Text ${i + 1}:`);
const multipleshorttext = await summarizer.summarize(texts[i], { level: 2 });
console.log('Summary:', multipleshorttext.summary);
console.log('Key points:', multipleshorttext.keyPoints);
console.log('Time:', multipleshorttext.processingTime.toFixed(2), 'ms\n');
}
}
multipleshorttext();
```