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

本文涉及的产品
NLP自然语言处理_基础版,每接口每天50万次
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_高级版,每接口累计50万次
简介: 我们曾经介绍过用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,并在云中应用人工智能和机器学习算法。在本书的最后,你将会有足够的信息通过你创建的机器人来接触成千上万的新用户。
|
21天前
|
Web App开发 JavaScript 前端开发
2024年5月node.js安装(winmac系统)保姆级教程
本篇博客为2024年5月版Node.js安装教程,适用于Windows和Mac系统。作者是一名熟悉JavaScript与Vue的大一学生,分享了Node.js的基本介绍、下载链接及简单安装步骤。安装完成后,通过终端命令`node -v`验证版本即可确认安装成功。欢迎关注作者,获取更多技术文章。
23 2
2024年5月node.js安装(winmac系统)保姆级教程
|
20天前
|
存储 JavaScript 搜索推荐
Node框架的安装和配置方法
安装 Node 框架是进行 Node 开发的第一步,通过正确的安装和配置,可以为后续的开发工作提供良好的基础。在安装过程中,需要仔细阅读相关文档和提示,遇到问题及时解决,以确保安装顺利完成。
66 2
|
3月前
|
JavaScript
NodeJs的安装
文章介绍了Node.js的安装步骤和如何创建第一个Node.js应用。包括从官网下载安装包、安装过程、验证安装是否成功,以及使用Node.js监听端口构建简单服务器的示例代码。
NodeJs的安装
|
2月前
|
JavaScript 开发工具 git
已安装nodejs但是安装hexo报错
已安装nodejs但是安装hexo报错
34 2
|
2月前
|
JavaScript 算法 内存技术
如何降低node.js版本(nvm下载安装与使用)
如何降低node.js版本(nvm下载安装与使用)
|
3月前
|
存储 JavaScript 前端开发
Node 版本控制工具 NVM 的安装和使用(Windows)
本文介绍了NVM(Node Version Manager)的Windows版本——NVM for Windows的安装和使用方法,包括如何安装Node.js的特定版本、列出已安装版本、切换使用不同版本的Node.js,以及其他常用命令,以实现在Windows系统上对Node.js版本的便捷管理。
Node 版本控制工具 NVM 的安装和使用(Windows)
|
2月前
|
Web App开发 JavaScript 前端开发
JavaWeb 22.Node.js_简介和安装
JavaWeb 22.Node.js_简介和安装
|
3月前
|
SQL JavaScript 数据库
sqlite在Windows环境下安装、使用、node.js连接
sqlite在Windows环境下安装、使用、node.js连接
|
3月前
|
JavaScript Linux 开发者
一个用于管理多个 Node.js 版本的安装和切换开源工具
【9月更文挑战第14天】nvm(Node Version Manager)是一个开源工具,用于便捷地管理多个 Node.js 版本。其特点包括:版本安装便捷,支持 LTS 和最新版本;版本切换简单,不影响开发流程;多平台支持,包括 Windows、macOS 和 Linux;社区活跃,持续更新。通过 nvm,开发者可以轻松安装、切换和管理不同项目的 Node.js 版本,提高开发效率。
105 4