当前位置:首页 > JavaScript

js实现ngram

2026-04-05 06:11:24JavaScript

实现 N-gram 的 JavaScript 方法

方法一:基于字符串分割的 N-gram 生成

js实现ngram

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

方法二:字符级别的 N-gram 生成

js实现ngram

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

方法三:支持多种粒度(词/字符)的通用实现

function generateNGrams(text, n, type = 'word') {
  const input = type === 'word' ? text.split(/\s+/) : text;
  const ngrams = [];
  const max = type === 'word' ? input.length - n + 1 : input.length - n + 1;

  for (let i = 0; i < max; i++) {
    const slice = input.slice(i, i + n);
    ngrams.push(type === 'word' ? slice.join(' ') : slice);
  }
  return ngrams;
}

使用示例

const sampleText = "自然语言处理很有趣";

// 词级别的 2-gram
console.log(generateNGrams(sampleText, 2));
// 输出: ["自然 语言", "语言 处理", "处理 很", "很 有趣"]

// 字符级别的 3-gram
console.log(generateCharNGrams(sampleText, 3));
// 输出: ["自然语", "然语言", "语言处", "言处理", "处理很", "理很有", "很有趣"]

性能优化建议

  1. 对于大文本处理,可以考虑使用生成器函数避免内存问题:
function* nGramGenerator(text, n) {
  const tokens = text.split(/\s+/);
  for (let i = 0; i <= tokens.length - n; i++) {
    yield tokens.slice(i, i + n).join(' ');
  }
}
  1. 预处理文本时去除标点符号和特殊字符:
function cleanText(text) {
  return text.replace(/[^\w\s]|_/g, '').replace(/\s+/g, ' ');
}

标签: jsngram
分享给朋友:

相关文章

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise =…

js实现文字滚动

js实现文字滚动

实现文字滚动的几种方法 使用CSS动画实现滚动 通过CSS的@keyframes和transform属性可以实现平滑的文字滚动效果。 <style> .scroll-text { w…

js实现 功能

js实现 功能

在 JavaScript 中实现功能通常涉及多个关键步骤,具体取决于功能需求。以下是常见功能的实现方法和示例: 基本功能实现 使用函数封装逻辑是最直接的方式。例如,实现一个计算两数之和的函数: f…