当前位置:首页 > JavaScript

js实现ngram

2026-04-05 06:11:24JavaScript

实现 N-gram 的 JavaScript 方法

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

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 生成

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

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

js实现ngram

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
分享给朋友:

相关文章

css3结合js制作

css3结合js制作

CSS3 结合 JavaScript 制作动态效果 CSS3 和 JavaScript 结合可以实现丰富的动态效果,包括动画、交互和响应式设计。以下是几种常见的实现方式: CSS3 动画与 Java…

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…