无法使用节点加载快速文本模型

时间:2019-10-02 15:13:19

标签: node.js nlp fasttext

更新:我用以下代码替换了旧代码:

const fastText = require('fasttext');
const path = require('path');

async function main() {
  const model = path.resolve(__dirname, './wiki.en.bin');
  const query = new fastText.Query(model);
  const ret = await query.nn('word', 5);
  console.log(ret);
}

main();

我现在遇到的错误是

  

模型文件的文件格式错误!

所以现在我想看看它是否与我使用macoS有关。


我正在学习使用node.js,并已从https://fasttext.cc/docs/en/pretrained-vectors.html下载了一个.bin fastText模型。我想用它来对节点做一些nlp的事情。我的问题是我无法加载模型。在许多事情之间,我尝试了以下操作:

const fastText = require('fasttext');
const path = require('path');

var async = require('async');


function first(a){
    return new Promise((resolve, reject) => {
        exports.model = path.resolve(__dirname, './wiki.en.bin');
        console.log("done first");
        resolve(a);
    });
}

function second(b){
    return new Promise((resolve, reject) => {
      setTimeout(() => {
          console.log("doing 2nd");
          console.log(exports.model);
          exports.query = new fastText.Query(exports.model);
          console.log("done second");
          resolve(b);
      }, 10000);
    });
  }
  function third(c){
      return new Promise((resolve, reject) => {
        setTimeout(() => {
          console.log("Checking that Query is loaded...");
          console.log(exports.query);
          exports.query.nn('word', 5, (err, res) => {
              if (err) {
                  console.error(err);
              } else if (res.length > 0) {
                  let tag = res[0].label; // letter
                  let confidence = res[0].value // 0.99992
                  console.log('Nearest neighbor', tag, confidence, res);
              } else {
                  console.log('No matches');
              }
          });
          console.log("Done");
          resolve(c);
        }, 10000);
      });

    }

first('first')
.then(second)
.then(third);

但是,该模型似乎没有加载。该文件确实存在-我从节点中检查了该文件,但是我一直得到一个空模型。这是完整的输出:

  

先完成

     

做第二个[PATH] /wiki.en.bin

     

完成秒

     

正在检查查询是否已加载...

     

FasttextQuery {}

     

[PATH] /fasttext_demo.js:31

      exports.query.nn('word', 5, (err, res) => {
                    ^
     

错误:应该有一个对象

at Timeout.setTimeout [as _onTimeout] (/Users/billymosse/Downloads/dsibot/fasttext_demo.js:31:25)
at ontimeout (timers.js:436:11)
at tryOnTimeout (timers.js:300:5)
at listOnTimeout (timers.js:263:5)
at Timer.processTimers (timers.js:223:10)

当尝试使用模型时。实际上,它是空的。

有人可以帮助我理解我的错误吗?或者,也欢迎使用实际加载模型的代码片段。为了有价值,我正在使用macOS。

编辑:请参见顶部的更新。

0 个答案:

没有答案