node-nlp, как извлечь электронную почту, телефон, URL? - PullRequest
0 голосов
/ 03 октября 2018

Я использую узел nlp для извлечения телефона, URL-адреса, адреса электронной почты и т. Д. Приведенный пример кода был просто объектом на странице справки.Я не знаю, как инициализировать код извлечения.Прочитайте мне для извлечения URL-адрес https://github.com/axa-group/nlp.js/blob/master/docs/builtin-entity-extraction.md#ip-extraction

Один из примеров на этой странице приведен ниже.

Извлечение электронной почты

Он может определитьи извлеките действительные учетные записи электронной почты, это работает для любого языка.

"utterance": "My email is something@somehost.com please write me",
"entities": [
  {
    "start": 12,
    "end": 33,
    "len": 22,
    "accuracy": 0.95,
    "sourceText": "something@somehost.com",
    "utteranceText": "something@somehost.com",
    "entity": "email",
    "resolution": {
      "value": "something@somehost.com"
    }
  }
]

Я установил npm и инициализировал следующим образом

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

const manager = new NlpManager({ languages: ['en'] });

Какие должны быть следующие шаги (Требуется пример кода) для извлечения?

URL-адрес npm: https://www.npmjs.com/package/node-nlp

1 Ответ

0 голосов
/ 08 октября 2018

Я предоставлю вам пример кода:

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

const manager = new NlpManager({ languages: ['en'] });

async function mainExtractEntities() {
  const result = await manager.extractEntities('en', 'Are you able to identify that meh@meh.com is an email and moh@moh.com is another email so there are 2 emails?');
  console.log(result);
}

async function mainFullExample() {
  manager.addDocument('en', 'My mail is %email%', 'email');
  manager.addDocument('en', 'My email is %email%', 'email');
  manager.addDocument('en', 'Here you have my email: %email%', 'email');
  manager.addDocument('en', 'Hello', 'greet');
  manager.addDocument('en', 'Good morning', 'greet');
  manager.addDocument('en', 'good afternoon', 'greet');
  manager.addDocument('en', 'good evening', 'greet');
  manager.addAnswer('en', 'email', 'Your email is {{email}}');
  manager.addAnswer('en', 'greet', 'Hi!');
  await manager.train();
  let result = await manager.process('en', 'I think that my mail is meh@meh.com');
  console.log(result);
  result = await manager.process('en', 'Hello bot!');
  console.log(result);
}

mainExtractEntities();
mainFullExample();

Это отобразится в консоли:

[ { start: 30,
    end: 40,
    len: 11,
    accuracy: 0.95,
    sourceText: 'meh@meh.com',
    utteranceText: 'meh@meh.com',
    entity: 'email',
    resolution: { value: 'meh@meh.com' } },
  { start: 58,
    end: 68,
    len: 11,
    accuracy: 0.95,
    sourceText: 'moh@moh.com',
    utteranceText: 'moh@moh.com',
    entity: 'email',
    resolution: { value: 'moh@moh.com' } },
  { start: 100,
    end: 100,
    len: 1,
    accuracy: 0.95,
    sourceText: '2',
    utteranceText: '2',
    entity: 'number',
    resolution: { strValue: '2', value: 2, subtype: 'integer' } } ]
{ locale: 'en',
  localeIso2: 'en',
  language: 'English',
  utterance: 'I think that my mail is meh@meh.com',
  classification:
   [ { label: 'email', value: 0.9994852170204532 },
     { label: 'greet', value: 0.0005147829795467752 } ],
  intent: 'email',
  domain: 'default',
  score: 0.9994852170204532,
  entities:
   [ { start: 24,
       end: 34,
       len: 11,
       accuracy: 0.95,
       sourceText: 'meh@meh.com',
       utteranceText: 'meh@meh.com',
       entity: 'email',
       resolution: [Object] } ],
  sentiment:
   { score: 0.25,
     comparative: 0.027777777777777776,
     vote: 'positive',
     numWords: 9,
     numHits: 1,
     type: 'senticon',
     language: 'en' },
  srcAnswer: 'Your email is {{email}}',
  answer: 'Your email is meh@meh.com' }
{ locale: 'en',
  localeIso2: 'en',
  language: 'English',
  utterance: 'Hello bot!',
  classification:
   [ { label: 'greet', value: 0.8826839762075465 },
     { label: 'email', value: 0.1173160237924536 } ],
  intent: 'greet',
  domain: 'default',
  score: 0.8826839762075465,
  entities: [],
  sentiment:
   { score: 0,
     comparative: 0,
     vote: 'neutral',
     numWords: 2,
     numHits: 0,
     type: 'senticon',
     language: 'en' },
  srcAnswer: 'Hi!',
  answer: 'Hi!' }

Важные вещи, которые необходимо знать:

  • Вы можете опустить язык в extractEntities и обработать и передать вместо него неопределенный, таким образом, язык будет угадан из вашего предложения, чтобы соответствовать лучшему языку вашего NlpManger.

  • Электронная почтадобыча работает для любого языка.У вас есть другие более сложные сущности, такие как текстовые числа, которые будут извлечены только для некоторых языков

  • Извлечение сущности - это только одна часть, другие интересные стороны - это классификатор NLU и естественный язык.Поколение, вы увидите, что ответ "Ваш адрес электронной почты {{email}}" является шаблоном, и письмо заменяется извлеченным из разговора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...