natural 用 node.js 進行自然語言處理

NO IMAGE
1 Star2 Stars3 Stars4 Stars5 Stars 給文章打分!
Loading...

我們曾經介紹過用Python的TextBlob模組對文字進行情感分析,node.js同樣可以進行自然預言處理。natural模組已經支援詞法分析、詞幹分析、分類、語音、反比文件頻數權重評價、WordNet、字串相似度等處理。

NLP

目前為止,大多數演算法還僅限於英文,以後會逐漸增加多語言支援。現在已支援俄語和西班牙語的詞幹分析。

安裝

使用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頁面上都有詳細的用例,可以參考。

相關文章

人工智慧 最新文章