UNPKG

kusamoji

Version:

Japanese morphological analyzer for Node.js — Viterbi tokenizer with mmap dict loading and pluggable POS-source strategy

43 lines (36 loc) 1.46 kB
"use strict"; /** * Connection costs matrix from cc.dat file. * 2 dimension matrix [forward_id][backward_id] -> cost * @constructor * @param {number} forward_dimension * @param {number} backward_dimension */ function ConnectionCosts(forward_dimension, backward_dimension) { this.forward_dimension = forward_dimension; this.backward_dimension = backward_dimension; // leading 2 integers for forward_dimension, backward_dimension, respectively this.buffer = new Int16Array(forward_dimension * backward_dimension + 2); this.buffer[0] = forward_dimension; this.buffer[1] = backward_dimension; } ConnectionCosts.prototype.put = function (forward_id, backward_id, cost) { let index = forward_id * this.backward_dimension + backward_id + 2; if (this.buffer.length < index + 1) { throw "ConnectionCosts buffer overflow"; } this.buffer[index] = cost; }; ConnectionCosts.prototype.get = function (forward_id, backward_id) { let index = forward_id * this.backward_dimension + backward_id + 2; if (this.buffer.length < index + 1) { throw "ConnectionCosts buffer overflow"; } return this.buffer[index]; }; ConnectionCosts.prototype.loadConnectionCosts = function (connection_costs_buffer) { this.forward_dimension = connection_costs_buffer[0]; this.backward_dimension = connection_costs_buffer[1]; this.buffer = connection_costs_buffer; }; module.exports = ConnectionCosts;