余弦算法nodejs实现

作者: comeluder | 来源:发表于2016-12-22 13:38 被阅读7次

// 载入模块
var Segment = require('segment');
// 创建实例
var segment = new Segment();
// 使用默认的识别模块及字典,载入字典文件需要1秒,仅初始化时执行一次即可
segment.useDefault();

// 开始分词

var str_total = [];

var str1 = segment.doSegment('我是一个人', {stripPunctuation: true});
str1.forEach(function(single_random){

console.log(single_random);
console.log(single_random.w);

if(str_total.indexOf(single_random.w)<0)
    str_total.push(single_random.w);

});

console.log('中国人');

var str2 = segment.doSegment('我不是人', {stripPunctuation: true});
str2.forEach(function(single_random){
console.log(single_random);
console.log(single_random.w);

if(str_total.indexOf(single_random.w)<0)
    str_total.push(single_random.w);

});

console.log(str_total);

str1_frequency = [];
str2_frequency = [];
for (var i=0;i<str_total.length;i++)
{
str1_frequency[i] = 0;
str2_frequency[i] = 0;
}

console.log(str1_frequency);
console.log(str2_frequency);

str1.forEach(function(single_random){

var index = str_total.indexOf(single_random.w);
//console.log(index);
if(index >=0)
    str1_frequency[index] = str1_frequency[index] + 1;

});

str2.forEach(function(single_random){

var index = str_total.indexOf(single_random.w);
//console.log(index);
if(index >=0)
    str2_frequency[index] = str2_frequency[index] + 1;

});
console.log(str1_frequency);
console.log(str2_frequency);

var fenzi = 0;
var fenmu1 = 0;
var fenmu2 = 0;
for (var i=0;i<str_total.length;i++)
{
fenzi += str1_frequency[i] * str2_frequency[i];
fenmu1 += str1_frequency[i] * str1_frequency[i];
fenmu2 += str2_frequency[i] * str2_frequency[i];

}
console.log(fenzi);
console.log(fenmu1);
console.log(fenmu2);
fenmu1 = Math.sqrt(fenmu1);
fenmu2 = Math.sqrt(fenmu2);
console.log(fenmu1);
console.log(fenmu2);

var result = fenzi/(fenmu1 * fenmu2);
console.log(result);

相关文章

  • 余弦算法nodejs实现

    // 载入模块var Segment = require('segment');// 创建实例var segmen...

  • 利用TF-IDF与余弦相似性自动提取关键词

    1 TF-IDF算法2 代码实现3 余弦相似性4 代码实现 1 TF-IDF算法 举个例子 假定现在有一篇长文《中...

  • 余弦相似度匹配

    今天的产品涉及到一个相似度匹配算法,上网查了这类算法很多。跟研发讨论,研发推荐使用余弦值相似度算法。 余弦...

  • 第四章 相似度分析算法——基于余弦相似性算法的相似度分析

    4.5 基于余弦相似性算法的相似度分析 余弦相似性算法是基于向量空间模型的算法,其关键词的向量依赖于IF-IDF算...

  • 余弦相似度算法与kotlin实现

    余弦相似度计算 余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。余弦值越接近1,就表明夹角...

  • 波浪效果

    在工程中碰到了需要实现波浪动画。只知道是使用正弦函数和余弦函数,CADisplayLink来实现。 正弦,余弦函数...

  • Nodejs基于LRU算法实现的缓存处理操作示例

    本文主要介绍了Nodejs基于LRU算法实现的缓存处理操作,结合具体实例形式分析了LRU算法的原理、功能以及n...

  • crypto

    crypto模块目的是为了提供通用的加密和希哈算法。纯js实现这些功能太困难,速度非常慢。nodejs用C实现这些...

  • nodejs加密模块使用

    nodejs的加密模块crypto是使用了系统自带的openssl的加密模块来实现的,里面实现了多种加密算法,如m...

  • 余弦相似度算法

    相信大家对这个概念并不陌生,废话少说,先来炒点现饭! 概念 余弦相似度,又称为余弦相似性,是通过计算两个向量的夹角...

网友评论

    本文标题:余弦算法nodejs实现

    本文链接:https://www.haomeiwen.com/subject/jaacvttx.html