乐闻世界logo
搜索文章和话题

JS 如何在大量文本中找到常用短语

7 个月前提问
6 个月前修改
浏览次数21

1个答案

1

在JavaScript中,要找到大量文本中的常用短语,我们可以使用多种方法。以下是一种比较系统的方法:

步骤1:清理并分割文本

首先,需要将文本清理并分割成单词。这包括去除标点符号、转换为小写(或统一大小写),以便统一词语的形式。

javascript
function cleanText(text) { return text.toLowerCase().replace(/[\.,-\/#!$%\^&\*;:{}=\-_`~()]/g,""); } function splitToWords(text) { return text.split(/\s+/); }

步骤2:生成短语

接下来,我们可以通过组合相邻的单词来生成可能的短语。可以定义一个函数来生成所有长度为n的短语。

javascript
function generatePhrases(words, n) { let phrases = []; for (let i = 0; i < words.length - n + 1; i++) { phrases.push(words.slice(i, i + n).join(" ")); } return phrases; }

步骤3:计算短语的频率

使用一个对象(或Map)来统计每个短语出现的次数。

javascript
function countPhrases(phrases) { return phrases.reduce((acc, phrase) => { acc[phrase] = (acc[phrase] || 0) + 1; return acc; }, {}); }

步骤4:找到最常用的短语

最后,我们需要从计数器中找出出现次数最多的短语。

javascript
function findMostCommonPhrases(phrasesCount, topN = 10) { return Object.entries(phrasesCount) .sort((a, b) => b[1] - a[1]) .slice(0, topN); }

完整的例子

javascript
// 示例文本 let text = "Hello world, hello. Hello world again!"; // 清理和分割 let cleanedText = cleanText(text); let words = splitToWords(cleanedText); // 生成短语 let phrases = generatePhrases(words, 2); // 生成所有2个单词的短语 // 计算频率 let phrasesCount = countPhrases(phrases); // 找到最常用的短语 let commonPhrases = findMostCommonPhrases(phrasesCount, 5); console.log(commonPhrases);

这个方法将找到文本中所有由两个单词组成的最常用短语。通过改变generatePhrases函数中的n值,可以搜索不同长度的短语。这种方法适用于处理相对较短的文本或在特定情况下分析文本数据。对于非常大的数据集,可能需要使用更高效的数据结构和算法,比如使用trie树或数据库解决方案。

2024年6月29日 12:07 回复

你的答案