代码之家  ›  专栏  ›  技术社区  ›  Krishnadas PC

节点nlp如何提取电子邮件、电话、url?

  •  0
  • Krishnadas PC  · 技术社区  · 7 年前

    我在用 node 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'] });
    

    要进行提取,接下来的步骤(需要一个示例代码)必须是什么?

    NPM URL是: https://www.npmjs.com/package/node-nlp

    1 回复  |  直到 7 年前
        1
  •  2
  •   tripleee    7 年前

    我将向您提供一个示例代码:

    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和Process中的语言,而传递未定义的语言,这样就可以从您的句子中猜测语言以适合您的nlpmanger的最佳语言。

    • 电子邮件提取适用于任何语言。您有其他更复杂的实体,如文本编号,这些实体将只针对某些语言提取。

    • 实体提取只是一个部分,其他有趣的部分是NLU分类器和自然语言生成,您将看到答案“您的电子邮件是电子邮件”是一个模板,并将电子邮件替换为从会话中提取的电子邮件。