natural 用 node.js 进行自然语言处理

本文涉及的产品
NLP自然语言处理_基础版,每接口每天50万次
NLP自然语言处理_高级版,每接口累计50万次
NLP 自学习平台,3个模型定制额度 1个月
简介: 我们曾经介绍过用Python的TextBlob模块对文本进行情感分析,node.js同样可以进行自然预言处理。natural模块已经支持词法分析、词干分析、分类、语音、反比文档频数权重评价、WordNet、字符串相似度等处理。

我们曾经介绍过用Python的TextBlob模块对文本进行情感分析,node.js同样可以进行自然预言处理。natural模块已经支持词法分析、词干分析、分类、语音、反比文档频数权重评价、WordNet、字符串相似度等处理。

image.png

目前为止,大多数算法还仅限于英文,以后会逐渐增加多语言支持。现在已支持俄语和西班牙语的词干分析。


安装

使用npm安装

npm install natural

词法分析

支持按词切割,按正则表达式切割和按句法树切割:

var natural = require('natural'),

 tokenizer = new natural.WordTokenizer();

console.log(tokenizer.tokenize("your dog has flees."));

// [ 'your', 'dog', 'has', 'flees' ]

tokenizer = new natural.TreebankWordTokenizer();

console.log(tokenizer.tokenize("my dog hasn't any flees."));

// [ 'my', 'dog', 'has', 'n\'t', 'any', 'flees', '.' ]

tokenizer = new natural.RegexpTokenizer({pattern: /\-/});

console.log(tokenizer.tokenize("flee-dog"));

// [ 'flee', 'dog' ]

tokenizer = new natural.WordPunctTokenizer();

console.log(tokenizer.tokenize("my dog hasn't any flees."));

// [ 'my',  'dog',  'hasn',  '\'',  't',  'any',  'flees',  '.' ]

字符串距离

实现了Jaro-Winkler字符串距离,用0到1之间的数字表示匹配程度:

var natural = require('natural');

console.log(natural.JaroWinklerDistance("dixon","dicksonx"))

console.log(natural.JaroWinklerDistance('not', 'same'));

输出:

0.7466666666666666

0

同样支持Levenshtein距离(编辑距离):

var natural = require('natural');

console.log(natural.LevenshteinDistance("ones","onez"));

console.log(natural.LevenshteinDistance('one', 'one'));

输出:

1

0

Levenshtein的三种编辑操作可以修改:

console.log(natural.LevenshteinDistance("ones","onez", {

   insertion_cost:1,

   deletion_cost:1,

   substitution_cost:1

}));

输出:

1

Dice系数:

var natural = require('natural');

console.log(natural.DiceCoefficient('thing', 'thing'));

console.log(natural.DiceCoefficient('not', 'same'));

输出:

1

0

词干分析

目前的实现支持Porter算法。

var natural = require('natural');

返回word

console.log(natural.PorterStemmer.stem("words")); // 分析一个单词的词干

俄语:

console.log(natural.PorterStemmerRu.stem("падший"));

西班牙语:

console.log(natural.PorterStemmerEs.stem("jugaría"));

stem()tokenizeAndStem()加上attach(),是PorterStemmer.stem(token).tokenizeAndStem()的简写形式。

natural.PorterStemmer.attach();

console.log("i am waking up to the sounds of chainsaws".tokenizeAndStem());

console.log("chainsaws".stem());

同样可以用Lancaster算法实现:

natural.LancasterStemmer.attach();

console.log("i am waking up to the sounds of chainsaws".tokenizeAndStem());

console.log("chainsaws".stem());

我想这些例子已经足以说明natural是如何使用的了。其他自然预言处理操作,在natural的GitHub页面上都有详细的用例,可以参考。

相关文章
|
自然语言处理 机器人 机器学习/深度学习
带你读《实用Bot开发指南:基于Node.js与Bot框架设计并构建聊天机器人》之二:聊天机器人与自然语言理解
本书讲述机器人设计和实现背后的基本概念。每一章都建立在前面的主题之上,并且在适当的地方显示了实现这些概念的实际工作代码。通过选择一个代码编辑器,你可以开始体验创建智能、迷人和有用的机器人。本书将教你如何在Facebook Messenger和Slack等平台上创建自己的机器人,整合扩展API,并在云中应用人工智能和机器学习算法。在本书的最后,你将会有足够的信息通过你创建的机器人来接触成千上万的新用户。
|
14天前
|
JavaScript
NodeJs的安装
文章介绍了Node.js的安装步骤和如何创建第一个Node.js应用。包括从官网下载安装包、安装过程、验证安装是否成功,以及使用Node.js监听端口构建简单服务器的示例代码。
NodeJs的安装
|
13天前
|
存储 JavaScript 前端开发
Node 版本控制工具 NVM 的安装和使用(Windows)
本文介绍了NVM(Node Version Manager)的Windows版本——NVM for Windows的安装和使用方法,包括如何安装Node.js的特定版本、列出已安装版本、切换使用不同版本的Node.js,以及其他常用命令,以实现在Windows系统上对Node.js版本的便捷管理。
Node 版本控制工具 NVM 的安装和使用(Windows)
|
29天前
|
SQL JavaScript 数据库
sqlite在Windows环境下安装、使用、node.js连接
sqlite在Windows环境下安装、使用、node.js连接
|
25天前
|
JavaScript Linux 开发者
一个用于管理多个 Node.js 版本的安装和切换开源工具
【9月更文挑战第14天】nvm(Node Version Manager)是一个开源工具,用于便捷地管理多个 Node.js 版本。其特点包括:版本安装便捷,支持 LTS 和最新版本;版本切换简单,不影响开发流程;多平台支持,包括 Windows、macOS 和 Linux;社区活跃,持续更新。通过 nvm,开发者可以轻松安装、切换和管理不同项目的 Node.js 版本,提高开发效率。
|
2天前
|
JavaScript 算法 内存技术
如何降低node.js版本(nvm下载安装与使用)
如何降低node.js版本(nvm下载安装与使用)
|
2月前
|
缓存 JavaScript 安全
2022年最新最详细的安装Node.js以及cnpm(详细图解过程、绝对成功)
这篇文章提供了2022年最新最详细的Node.js和cnpm安装教程,包括步骤图解、全局配置路径、cnpm安装命令、nrm的安装与使用,以及如何管理npm源和测试速度。
2022年最新最详细的安装Node.js以及cnpm(详细图解过程、绝对成功)
|
14天前
|
JavaScript 前端开发 Linux
|
15天前
|
JavaScript Linux API
安装NodeJs,好啊好啊
安装NodeJs,好啊好啊
|
2月前
|
JavaScript NoSQL 前端开发