当前位置:首页 > 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"
}

处理标点符号和大小写

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

js实现ngram

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 更适合句子或段落分析。

标签: jsngram
分享给朋友:

相关文章

js 进度条的实现

js 进度条的实现

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

js防抖和节流实现

js防抖和节流实现

防抖(Debounce)的实现 防抖的核心思想是在事件被触发后,延迟执行回调函数。如果在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口大小调整等场景。 function debounce…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js实现 功能

js实现 功能

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

js实现定位

js实现定位

使用Geolocation API获取当前位置 在JavaScript中,可以通过浏览器内置的Geolocation API获取用户的地理位置信息。该API需要用户授权才能访问位置数据。 if (n…

js 实现页面刷新

js 实现页面刷新

使用 location.reload() location.reload() 是原生 JavaScript 提供的页面刷新方法。调用该方法会重新加载当前页面,相当于点击浏览器的刷新按钮。 // 基本…