Байесовский классификатор Node-nlp получил очень низкий балл - PullRequest
2 голосов
/ 15 марта 2019

Я просто следую этому согласно этому https://github.com/axa-group/nlp.js/issues/126#issuecomment-444852649

но я получил очень низкий балл, отличный от того, что было продемонстрировано. https://runkit.com/jesus-seijas-sp/5c0910e71539810012150767

Есть ли какое-то правило, по которому я скучаю?

Я просто хочу использовать BayesClassifier

Я использую: "node-nlp": "^2.4.2"

const { BayesClassifier, NlpManager } = require('node-nlp');

    async function main() {
        const bayes = new BayesClassifier();
        const manager = new NlpManager({
          languages: ['en'],
          classifier: bayes,
          useNeural: false,
        });
        manager.addDocument('en', 'Hello', 'greet');
        manager.addDocument('en', 'Good evening', 'greet');
        manager.addDocument('en', 'Good morning', 'greet');
        manager.addDocument('en', "I've lost my keys", 'keys');
        manager.addDocument('en', "I don't find my keys", 'keys');
        manager.addDocument('en', "I don't know where are my keys", 'keys');
        await manager.train();
        const result = await manager.process('Where are my keys');
        console.log(result);
    }

    main();

РЕЗУЛЬТАТ

{ locale: 'en',
  localeIso2: 'en',
  language: 'English',
  utterance: 'Where are my keys',
  classification:
   [ { label: 'keys', value: 0.055555555555555546 },
     { label: 'greet', value: 0.006172839506172837 } ],
  intent: 'keys',
  domain: 'default',
  score: 0.055555555555555546,
  entities: [],
  sentiment:
   { score: 0,
     comparative: 0,
     vote: 'neutral',
     numWords: 4,
     numHits: 0,
     type: 'senticon',
     language: 'en' } }

1 Ответ

0 голосов
/ 16 марта 2019

разработчик здесь!Произошло резкое изменение между 2.3.x и 2.4.x. В 2.3.xa для каждой классификации была проведена нормализация, код этой нормализации приведен здесь: https://github.com/axa-group/nlp.js/blob/master/lib/nlp/nlp-classifier.js#L241

В 2.4.x эта нормализация выполнена толькокогда результаты получены из нейронной сети brain.js, но не для внутреннего классификатора логистической регрессии, поскольку этот LRC уже возвращает нормализованные результаты в диапазоне от 0 до 1. Результат классификатора Байеса из-за этого не классифицирован, а потому, что, честно говоря, байесовскийКлассификация предлагает худшие результаты в соответствии с эталонами, в то время как нейронная сеть дает отличные результаты.

Но вы можете нормализовать результаты, используя функцию normalizeNeural, и распределение значений будет между 0 и 1.

...