Vector Object
This is a n-dimensional vector implementation in javascript. A vector can be created using json objects, with the object keys as the components. It is useful for cases like word vector calculations. For example, calculating the cosine similarity of two word vectors.
The advantage of using json object over array to define a vector is that we do not need the two vectors have the same number of components for calculations. Take the following example:
Using this library:
const a = react: 1 nodejs: 2 angular: 1 ;const b = nodejs: 2 marko: 3 nextjs: 2 ; const similarity = a;
Compare what if using array (Note: this is not supported in this library):
// assume index 0: react, index 1: nodejs, index 2: angular, index 3: marko, index 4: nextjsconst a = 1 2 1 0 0;const b = 0 2 0 3 2; const similarity = a;
It is much easier to define vector in object than array as we need to pad much zeros into the array if two vectors have very few overlapping components. The vectors can be large but sparse if we are doing word analyzation.
Installation
npm install vector-object
And then import the Vector class
const Vector = ;
Major Change Log
1.3.0
Upgrade dependency to fix security alerts
1.2.0
Fix the issue if the word vector contains words which are same as the instance methods
1.1.0
The vector operations now would update the instance itself, rather than creating a new vector object. It is for better performance so less objects are created during the calculations. This is a NON-COMPATIBLE change. If you are using versions < 1.1.0, you may need rewrite a bit your code. Sorry for that 🙏🏼
Usage
- constructor
- clone()
- toObject()
- getComponents()
- get(component)
- set(component, value)
- isEqual(vector)
- getDistance(vector)
- getLength()
- getDotProduct(vector)
- getCosineSimilarity(vector)
- normalize()
- add(vector)
- subtract(vector)
- multiply(scalar)
- divide(scalar)
- chainability
constructor
create a new vector object
const a = x: 1 y: 2 z: 3 ;
clone()
return a copy of the vector object
const a = x: 1 y: 2 z: 3 ;const b = a; console; // return { x: 1, y: 2, z: 3 }
toObject()
return an json object of the vector
const a = x: 1 y: 2 z: 3 ; console; // return { x: 1, y: 2, z: 3 }
getComponents()
return array of the components in the vector object
const a = react: 5 angular: 2 vue: 2 marko: 1 ; console; // return ['react', 'angular', 'vue', 'marko']
get(component)
return the value of the component in the vector object
const a = react: 5 angular: 2 vue: 2 marko: 1 ; console; // return 5console; // return undefined
set(component, value)
set the value of the component in the vector object
const a = react: 5 angular: 2 vue: 2 marko: 1 ;a; console; // return { react: 10, angular: 2, vue: 2, marko: 1 }
isEqual(vector)
return a boolean value if the input vector is same as itself
const a = a: 1 b: 2 c: 3 ;const b = a: 1 b: 2 c: 3 ;const c = a: 1 b: 2 ; console; // return trueconsole; // return falseconsole; // return false
getDistance(vector)
return the distance between the target vector and the vector object
const a = a: 1 b: 2 c: 3 ;const b = b: 2 c: 1 d: 2 ;const distance = a; console; // return 3
getLength()
return the length of the vector object
const a = a: 3 b: 4 ;const length = a; console; // return 5
getDotProduct(vector)
return the dot product of the input vector and the vector object
const a = a: 1 b: 2 c: 1 ;const b = b: 2 c: 2 ;const dotProduct = a; console; // return 6
getCosineSimilarity(vector)
return the cosine similarity (range from 0 to 1, the larger the more similar between the two vectors) of the input vector and the vector object
const a = ant: 1 bird: 2 cat: 3 ;const b = bird: 2 cat: 2 dog: 2 ;const similarityAA = a;const similarityAB = a; console; // return 1console; // return 0.6236095644623236
normalize()
normalized the vector and return itself
const a = a: 3 b: 4 ;a; console; // return { a: 0.6, b: 0.8 }
add(vector)
perform additional with the input vector and return itself
const a = a: 1 b: 2 ;const b = b: 1 c: 2 ;a; console; // return { a: 1, b: 3, c: 2 }
subtract(vector)
perform subtraction with the input vector and return itself
const a = a: 1 b: 2 ;const b = b: 1 c: 2 ; console; // return { a: 1, b: 0, c: -2 }
multiply(scalar)
perform scalar multiplication and return itself
const a = a: 1 b: 2 c: 1 ;a; console; // return { a: 10, b: 20, c: 10 }
divide(scalar)
perform scalar division and return itself
const a = a: 1 b: 2 c: 1 ;a; console; // return { a: 0.1, b: 0.2, c: 0.1 }
chainability
The vector calculation methods are chainable so you can write your expression in the following way:
const a = a: 1 b: 2 c: 1 ;const b = a: 2 b: 1 ;const c = a: 1 b: 4 d: 2 ; const v = a;
Test
npm installnpm run test