You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript中实现句子间词汇相似度检测及匹配词汇获取?

JavaScript句子词汇相似度检测解决方案

要实现你需要的词汇匹配逻辑,核心是统一大小写+词汇级别的交集检测,之前的方法没成功大概率是没处理大小写和词汇拆分的问题。下面是具体实现:

实现思路

  1. 统一转换为小写,避免大小写差异导致匹配失败
  2. 把句子拆分为独立词汇数组(自动过滤标点、多余空格)
  3. 用集合(Set)快速查找两个句子的共同词汇
  4. 返回匹配状态和所有匹配的词汇

代码实现

function checkWordSimilarity(mastersentences, keywordsentences) {
    // 辅助函数:将句子转为小写并拆分为词汇集合
    const getWordSet = (sentence) => {
        // 去除标点、转小写、拆分为词汇数组,再转成Set去重
        return new Set(
            sentence.toLowerCase().split(/\W+/).filter(word => word.trim() !== '')
        );
    };

    const masterWords = getWordSet(mastersentences);
    const keywordWords = getWordSet(keywordsentences);
    const matchedWords = [];

    // 遍历关键词集合,找主句子里的共同词汇
    for (const word of keywordWords) {
        if (masterWords.has(word)) {
            matchedWords.push(word);
        }
    }

    return {
        isMatch: matchedWords.length > 0,
        matchedWords: matchedWords
    };
}

// 测试你的示例
let mastersentences = "Gambir, Kecamatan Gambir, Kota Jakarta Pusat, Daerah Khusus Ibukota Jakarta";
let keywordsentences = "DKI JAKARTA";
const result = checkWordSimilarity(mastersentences, keywordsentences);

console.log(result.isMatch); // true
console.log(result.matchedWords); // ['jakarta']

代码说明

  • split(/\W+/):用非单词字符(标点、空格等)拆分句子,自动处理逗号、空格分隔的情况
  • filter(word => word.trim() !== ''):过滤拆分后可能出现的空字符串
  • Set的has()方法可以快速判断词汇是否存在,效率比数组遍历更高
  • 返回结果包含匹配状态和所有匹配的词汇,满足你获取匹配词汇的需求

为什么之前的方法没生效?

  • includes()/indexOf():是子字符串匹配,且区分大小写,比如原例子中"DKI JAKARTA"的大写"JAKARTA"和主句子里的"Jakarta"大小写不一致,直接用会返回false;而且如果关键词是"arta",也会误判为匹配
  • match()/search():默认也是区分大小写,且需要正则表达式配合才能实现词汇级匹配,单独用无法直接满足需求

内容的提问来源于stack exchange,提问作者riski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 05:45:35