UNPKG

word2vector-json-ts

Version:

TypeScript library for processing Word2Vec output vectors in JSON format.

147 lines (109 loc) 4.16 kB
import WordList from '../src/WordList'; import { Vector } from '../src/Vector'; describe('WordList', () => { let wordList: WordList; beforeEach(() => { wordList = new WordList(); }); it('should add a word and its vector', () => { const word = 'example'; const vector = new Vector([1, 2, 3]); wordList.addWord(word, vector); expect(wordList.getVector(word)).toBe(vector); }); it('should retrieve the correct vector for a word', () => { const word = 'test'; const vector = new Vector([4, 5, 6]); wordList.addWord(word, vector); const retrievedVector = wordList.getVector(word); expect(retrievedVector).toBe(vector); }); it('should return undefined for a non-existent word', () => { const vector = wordList.getVector('nonexistent'); expect(vector).toBe(undefined); }); it('should check if a word exists', () => { const word = 'exists'; const vector = new Vector([7, 8, 9]); wordList.addWord(word, vector); expect(wordList.hasWord(word)).toBe(true); expect(wordList.hasWord('nonexistent')).toBe(false); }); it('should remove a word and its vector', () => { const word = 'remove'; const vector = new Vector([10, 11, 12]); wordList.addWord(word, vector); const removed = wordList.removeWord(word); expect(removed).toBe(true); expect(wordList.hasWord(word)).toBe(false); }); it('should return false when removing a non-existent word', () => { const removed = wordList.removeWord('nonexistent'); expect(removed).toBe(false); }); it('should return the n closest matches for a word', () => { const word1 = 'word1'; const vector1 = new Vector([1, 0, 0]); const word2 = 'word2'; const vector2 = new Vector([0, 1, 0]); const word3 = 'word3'; const vector3 = new Vector([0, 0, 1]); wordList.addWord(word1, vector1); wordList.addWord(word2, vector2); wordList.addWord(word3, vector3); const closestMatches = wordList.getNClosestMatches(2, word1); expect(closestMatches).toHaveLength(2); expect((closestMatches[0]?.[0] ?? 0)).toBe('word2'); expect((closestMatches[1]?.[0] ?? 0)).toBe('word3'); }); it('should return an empty array if no matches are found', () => { const closestMatches = wordList.getNClosestMatches(2, 'nonexistent'); expect(closestMatches).toHaveLength(0); }); it('should return an empty array if n is 0', () => { const word = 'word'; const vector = new Vector([1, 2, 3]); wordList.addWord(word, vector); const closestMatches = wordList.getNClosestMatches(0, word); expect(closestMatches).toHaveLength(0); }); it('should return an empty array if n is negative', () => { const word = 'word'; const vector = new Vector([1, 2, 3]); wordList.addWord(word, vector); const closestMatches = wordList.getNClosestMatches(-1, word); expect(closestMatches).toHaveLength(0); }); it('should predict the next N words based on a given word', () => { const word = 'test'; const vector = new Vector([1, 2, 3]); const predictedWord = 'predicted'; wordList.addWord(word, vector); wordList.addWord(predictedWord, new Vector([4, 5, 6])); const predictions = wordList.predictNextNWord(1, [word]); expect(predictions).toHaveLength(1); expect(predictions[0]).toBe(predictedWord); }); it('should return an empty array if no predictions are found', () => { const predictions = wordList.predictNextNWord(1, ['nonexistent']); expect(predictions).toHaveLength(0); }); it('should return an empty array if n is 0 for predictions', () => { const word = 'word'; const vector = new Vector([1, 2, 3]); wordList.addWord(word, vector); const predictions = wordList.predictNextNWord(0, [word]); expect(predictions).toHaveLength(0); }); it('should return an empty array if n is negative for predictions', () => { const word = 'word'; const vector = new Vector([1, 2, 3]); wordList.addWord(word, vector); const predictions = wordList.predictNextNWord(-1, [word]); expect(predictions).toHaveLength(0); }); it('should return an empty array if the word list is empty', () => { const predictions = wordList.predictNextNWord(1, ['nonexistent']); expect(predictions).toHaveLength(0); }); });