var findTenMostSimilarWordsToWord = function(wordToCompareTo, DMapKeys, WPrimeTranspose) { //using cosine similarity to find 10 most similar words var wordSimilarity = []; var vectorOfWordToCompareTo = WPrimeTranspose[DMapKeys.indexOf(wordToCompareTo)]; for(var k=0; k<DMapKeys.length; k++) { var word = DMapKeys[k]; if (wordToCompareTo === word) { continue; } var dotProduct = math.dot(vectorOfWordToCompareTo, WPrimeTranspose[k]); var vectorMagnitudesMultiplied = math.hypot(vectorOfWordToCompareTo) * math.hypot(WPrimeTranspose[k]); var cosine = dotProduct / vectorMagnitudesMultiplied; wordSimilarity.push({ word: word, cosineSimilarity: cosine }); } return _.sortBy(wordSimilarity, function(item) { //it naturally sorts in ascending order, but I want it to sort in descending order return item.cosineSimilarity * -1; }).slice(0, 10); }
return function (y) { return mathjs.dot(x, y); }
(x, y, circle) => { const v = math.subtract([x, y], [circle.x, circle.y]); return math.dot(v, v) < (circle.scale * circle.r) ** 2; },