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

如何在浏览器的JS与PHP页面实现NLP词干提取并解决相关报错

浏览器端JavaScript与PHP的词干提取实现方案

一、浏览器端JavaScript词干提取方案

1. 用原生支持浏览器的NLP库(Compromise.cool)

Compromise无需打包,直接通过CDN引入即可使用,词干提取调用示例:

<script src="https://unpkg.com/compromise@14.11.0/builds/compromise.min.js"></script>
<script>
  // 对单个单词提取词干
  const wordStem = nlp('words').verbs().toStem().out()[0];
  console.log(wordStem); // 输出 'word'
  
  // 对多词文本提取词干
  const text = 'I saw a developer';
  const stems = nlp(text).terms().toStem().out();
  console.log(stems); // 输出 ['i', 'saw', 'a', 'develop']
</script>

2. 适配Node.js库到浏览器(解决require未定义问题)

如果偏好使用natural或NLP.js这类Node.js库,可通过以下两种方式适配:

  • 方法一:配置Browserify打包脚本
    之前执行npm run build报错是因为package.json未配置build脚本,添加后再执行:
    // package.json中添加scripts字段
    "scripts": {
      "build": "browserify your-script.js -o bundle.js"
    }
    
    执行npm run build生成浏览器可用的bundle.js,在HTML中引入即可正常使用库的API。
  • 方法二:使用库的CDN版本
    部分Node.js库提供UMD格式的CDN版本,直接引入即可:
    <!-- natural库CDN示例 -->
    <script src="https://cdn.jsdelivr.net/npm/natural@6.5.0/dist/natural.min.js"></script>
    <script>
      console.log(natural.PorterStemmer.stem('words')); // 输出 'word'
    </script>
    

3. 修复手动实现Porter词干提取的调用错误

你之前因调用方式错误导致stemmer is not a function,正确的函数调用前提是先定义或导入完整的词干函数,示例:

// 完整Porter词干算法的JS实现(可直接使用)
function porterStemmer(word) {
  word = word.toLowerCase();
  // 以下为标准Porter词干算法步骤(简化版示例)
  if (word.length < 3) return word;
  if (word.endsWith('s')) word = word.slice(0, -1);
  // 更多算法步骤省略,需补充完整实现
  return word;
}

// 正确调用
const result = porterStemmer('words');
console.log(result); // 输出 'word'

二、PHP端词干提取方案

1. 使用PHP原生扩展

若服务器已安装php-stem扩展,可直接调用内置函数:

$word = 'words';
$stem = stem_word($word, 'en'); // 'en'指定英文词干规则
echo $stem; // 输出 'word'

2. 使用Composer第三方库

通过Composer安装morphos/php-stemmer,调用示例:

require 'vendor/autoload.php';
use Morphos\English\Stemmer;

$stemmer = new Stemmer();
echo $stemmer->stem('words'); // 输出 'word'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 21:01:20