当前位置:首页 > JavaScript

js实现ngram

2026-03-02 05:13:22JavaScript

N-gram 实现方法

N-gram 是一种文本分析方法,将文本分割为连续的 N 个字符或单词。以下是 JavaScript 中实现 N-gram 的几种方法。

字符级 N-gram

字符级 N-gram 将字符串分割为连续的 N 个字符。

function generateNGrams(text, n) {
  const ngrams = [];
  for (let i = 0; i <= text.length - n; i++) {
    ngrams.push(text.substring(i, i + n));
  }
  return ngrams;
}

// 示例
const text = "hello";
const bigrams = generateNGrams(text, 2); // ["he", "el", "ll", "lo"]

单词级 N-gram

单词级 N-gram 将文本按单词分割为连续的 N 个单词。

function generateWordNGrams(text, n) {
  const words = text.split(/\s+/);
  const ngrams = [];
  for (let i = 0; i <= words.length - n; i++) {
    ngrams.push(words.slice(i, i + n).join(' '));
  }
  return ngrams;
}

// 示例
const sentence = "this is a sample sentence";
const trigrams = generateWordNGrams(sentence, 3); // ["this is a", "is a sample", "a sample sentence"]

滑动窗口优化

对于大文本,滑动窗口方法可以减少内存占用。

function* slidingWindowNGrams(text, n) {
  for (let i = 0; i <= text.length - n; i++) {
    yield text.substring(i, i + n);
  }
}

// 示例
const text = "example";
const generator = slidingWindowNGrams(text, 3);
for (const ngram of generator) {
  console.log(ngram); // "exa", "xam", "amp", "mpl", "ple"
}

处理标点符号和大小写

在实际应用中,通常需要预处理文本,去除标点符号并统一大小写。

function cleanText(text) {
  return text.toLowerCase().replace(/[^\w\s]/g, '');
}

function generateCleanNGrams(text, n) {
  const cleaned = cleanText(text);
  return generateNGrams(cleaned, n);
}

// 示例
const dirtyText = "Hello, World!";
const cleanTrigrams = generateCleanNGrams(dirtyText, 3); // ["hel", "ell", "llo", "low", "owo", "wor", "orl", "rld"]

应用场景

N-gram 常用于自然语言处理任务,如拼写检查、文本分类和信息检索。字符级 N-gram 适用于短文本分析,单词级 N-gram 更适合句子或段落分析。

js实现ngram

标签: jsngram
分享给朋友:

相关文章

js实现倒计时

js实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时功能可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是几种常见的实现方式: 使用 setInterv…

jquery.js

jquery.js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,用于简化 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它的设计宗旨是“Write Less, Do Mor…

js实现vue路由

js实现vue路由

Vue路由基础实现 使用Vue Router实现前端路由需要先安装并配置路由库。Vue Router是Vue.js官方的路由管理器。 安装Vue Router: npm install vue…

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previ…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaS…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…