ml5.js предоставляет высокоуровневый интерфейс для работы с машинным обучением в браузере на языке JavaScript, упрощая интеграцию сложных моделей, таких как Word2Vec, в веб-приложения. Word2Vec используется для преобразования слов в векторное представление, где семантическая близость слов отражается в геометрическом пространстве.
Для работы с ml5.js необходимо подключить библиотеку через CDN или npm. В браузере это выглядит следующим образом:
p5.js требуется как зависимость, так как ml5.js
использует его для работы с элементами DOM и анимацией, но для Word2Vec
можно ограничиться только загрузкой модели и функциями обработки
текста.
Предобученные модели Word2Vec можно загрузить через ml5.js с помощью
класса ml5.word2vec. Этот класс предоставляет методы для
поиска ближайших слов, векторных операций и измерения семантической
схожести. Инициализация модели выглядит следующим образом:
let word2vec;
function setup() {
noCanvas();
word2vec = ml5.word2vec('path/to/wordvec.json', modelReady);
}
function modelReady() {
console.log('Модель загружена и готова к использованию');
}
Ключевые моменты:
'path/to/wordvec.json' должен указывать на
JSON-файл предобученных векторов Word2Vec.modelReady вызывается после полной загрузки
модели, что гарантирует, что дальнейшие операции с ней будут
корректными.После загрузки модели доступны основные операции:
word2vec.nearest('кошка', 5, (err, results) => {
if (err) {
console.error(err);
return;
}
console.log('Ближайшие слова к "кошка":', results);
});
nearest(word, k, callback) возвращает массив из
k слов, наиболее близких к заданному слову.word и
distance, где distance — мера схожести (чем
меньше, тем ближе).word2vec.getVector('король', (err, vector) => {
if (err) return console.error(err);
console.log('Вектор слова "король":', vector);
});
getVector(word, callback) возвращает массив чисел,
представляющий слово в многомерном пространстве.word2vec analogy('король', 'мужчина', 'женщина', 3, (err, results) => {
if (err) return console.error(err);
console.log('Результаты аналогии:', results);
});
analogy(a, b, c, k, callback) ищет слово
d, такое что a — b +
c ≈ d.ml5.js поддерживает модели Word2Vec в формате JSON. Каждый вектор хранится как массив чисел, где ключом является слово:
{
"король": [0.21, -0.34, 0.45, ...],
"королева": [0.18, -0.29, 0.40, ...]
}
Преимущества использования JSON формата:
Основные сценарии применения предобученных Word2Vec векторов:
fetch с прогресс-индикатором при загрузке
крупных файлов.Все методы ml5.js Word2Vec работают асинхронно. Это позволяет не блокировать основной поток JavaScript при загрузке и поиске по векторам:
async function findSimilar(word) {
try {
const results = await new Promise((resolve, reject) => {
word2vec.nearest(word, 5, (err, res) => err ? reject(err) : resolve(res));
});
console.log(results);
} catch (error) {
console.error('Ошибка при поиске похожих слов:', error);
}
}
Асинхронный подход повышает отзывчивость веб-приложений и упрощает интеграцию с другими функциями интерфейса.