我想评价两个标签之间的相似度。例如,单词technology、computer和chip应该具有高相似度,像food这样的单词应该具有低相似度。
鉴于 AI 的最新进展和 NLP 的更传统方法,您现在如何在 Node JS 中解决这个问题?
我试图让 2013 年的 Google News 数据集与 word2vec 一起运行,但是这个或其他 word2vec 库似乎都不能与现代版本的节点一起运行(或者至少我还没有设法做任何工作)与数据集)。还有像 fast-text 或 文本相似性测试(使用 TensorFlow.js).
这样的存储库现在我想知道哪种方法在技术上最能解决我的问题(也是我尚未考虑的方法)以及如何在代码中技术上实现它。
您可以使用 wink-nlp 来测量基于词嵌入的相似度:
// Load wink-nlp package.
const winkNLP = require( 'wink-nlp' );
// Load english language model.
const model = require( 'wink-eng-lite-web-model' );
// Load word embeddings.
const vectors = require( 'wink-embeddings-sg-100d' );
// Load similarity utility.
const similarity = require( 'wink-nlp/utilities/similarity.js' );
// Instantiate winkNLP
const nlp = winkNLP( model, vectors );
console.log( +similarity.vector.cosine(nlp.vectorOf('technology'),
nlp.vectorOf('computer')).toFixed(4));
// --> 0.7642
console.log( +similarity.vector.cosine(nlp.vectorOf('food'),
nlp.vectorOf('computer')).toFixed(4));
// --> 0.3722