当前位置:首页 > 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和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div cl…

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 c…

js实现视口

js实现视口

js实现视口检测的方法 使用JavaScript检测元素是否进入视口(viewport)可以通过Intersection Observer API或手动计算元素位置实现。以下是两种常见方法: Int…

js分页实现

js分页实现

分页的基本原理 分页的核心是通过计算当前页码和数据偏移量,从服务器或本地数据中截取对应范围的数据进行展示。通常需要以下参数:当前页码(currentPage)、每页条数(pageSize)、总数据量(…

js实现定位

js实现定位

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