Se você está procurando os documentos da versão 3, você pode encontrá-los aqui Versão 3
"NLP.js" é um utilitário geral de linguagem natural para nodejs. Atualmente apoiando:
!
A versão 4 é muito diferente das versões anteriores. Antes desta versão, NLP.js era uma biblioteca monolítica. As grandes mudanças:
normalize -> tokenize -> removeStopwords -> stem -> arrToObj
hear
e say
. Exemplos de conectores incluídos: Console Connector, Microsoft Bot Framework Connector e um Direct Line Offline Connector (este permite que você crie um web chatbot usando o Microsoft Webchat, mas sem precisar implantar nada no Azure).Se você deseja usar NLP.js em seu aplicativo Node, você pode instalar via NPM da seguinte forma:
npm install node-nlp
Existe uma versão do NLP.js que funciona em React Native, para que você possa construir chatbots que podem ser treinados e executados no celular mesmo sem internet. Você pode instalá-lo via NPM:
npm install node-nlp-rn
Algumas limitações:
Você pode ver um ótimo exemplo de uso na pasta /examples/02-qna-classic
. Este exemplo é capaz de treinar o bot e salvar o modelo em um arquivo, de forma que quando o bot for reiniciado, o modelo seja carregado em vez de ser treinado novamente.
Você pode começar a construir sua PNL do zero com algumas linhas:
const { NlpManager } = require ( 'node-nlp' ) ;
const manager = new NlpManager ( { languages : [ 'en' ] , forceNER : true } ) ;
// Adds the utterances and intents for the NLP
manager . addDocument ( 'en' , 'goodbye for now' , 'greetings.bye' ) ;
manager . addDocument ( 'en' , 'bye bye take care' , 'greetings.bye' ) ;
manager . addDocument ( 'en' , 'okay see you later' , 'greetings.bye' ) ;
manager . addDocument ( 'en' , 'bye for now' , 'greetings.bye' ) ;
manager . addDocument ( 'en' , 'i must go' , 'greetings.bye' ) ;
manager . addDocument ( 'en' , 'hello' , 'greetings.hello' ) ;
manager . addDocument ( 'en' , 'hi' , 'greetings.hello' ) ;
manager . addDocument ( 'en' , 'howdy' , 'greetings.hello' ) ;
// Train also the NLG
manager . addAnswer ( 'en' , 'greetings.bye' , 'Till next time' ) ;
manager . addAnswer ( 'en' , 'greetings.bye' , 'see you soon!' ) ;
manager . addAnswer ( 'en' , 'greetings.hello' , 'Hey there!' ) ;
manager . addAnswer ( 'en' , 'greetings.hello' , 'Greetings!' ) ;
// Train and save the model.
( async ( ) => {
await manager . train ( ) ;
manager . save ( ) ;
const response = await manager . process ( 'en' , 'I should go now' ) ;
console . log ( response ) ;
} ) ( ) ;
Isso produz o seguinte resultado em um console:
{ utterance: ' I should go now ' ,
locale: ' en ' ,
languageGuessed: false,
localeIso2: ' en ' ,
language: ' English ' ,
domain: ' default ' ,
classifications:
[ { label: ' greetings.bye ' , value: 0.698219120207268 },
{ label: ' None ' , value: 0.30178087979273216 },
{ label: ' greetings.hello ' , value: 0 } ],
intent: ' greetings.bye ' ,
score: 0.698219120207268,
entities:
[ { start: 12,
end: 14,
len: 3,
accuracy: 0.95,
sourceText: ' now ' ,
utteranceText: ' now ' ,
entity: ' datetime ' ,
resolution: [Object] } ],
sentiment:
{ score: 1,
comparative: 0.25,
vote: ' positive ' ,
numWords: 4,
numHits: 2,
type: ' senticon ' ,
language: ' en ' },
actions: [],
srcAnswer: ' Till next time ' ,
answer: ' Till next time ' }
Por padrão, a rede neural tenta evitar falsos positivos. Para isso, um dos processos internos é que palavras nunca vistas pela rede sejam representadas como um recurso que dá algum peso à intenção None
. Então, se você tentar o exemplo anterior com " I have to go ", ele retornará a intenção None
porque 2 das 4 palavras nunca foram vistas durante o treinamento. Se você não quiser evitar esses falsos positivos e se sentir mais confortável com as classificações nas intenções que declara, poderá desativar esse comportamento definindo useNoneFeature
como falso:
const manager = new NlpManager ( { languages : [ 'en' ] , nlu : { useNoneFeature : false } } ) ;
Você também pode adicionar um registro de progresso para acompanhar o que está acontecendo durante o treinamento. Você pode registrar o progresso no console:
const nlpManager = new NlpManager ( { languages : [ 'en' ] , nlu : { log : true } } ) ;
Ou você pode fornecer sua própria função de log:
const logfn = ( status , time ) => console . log ( status , time ) ;
const nlpManager = new NlpManager ( { languages : [ 'en' ] , nlu : { log : logfn } } ) ;
Você pode ler o guia sobre como contribuir em Contribuindo.
Feito com contribuidores-img.
Você pode ler o Código de Conduta em Código de Conduta.
?
Este projeto é desenvolvido pela AXA Group Operations Spain SA
Se precisar entrar em contato conosco, pode fazê-lo pelo email [email protected]
Direitos autorais (c) Operações do Grupo AXA Espanha SA
É concedida permissão, gratuitamente, a qualquer pessoa que obtenha uma cópia deste software e dos arquivos de documentação associados (o "Software"), para negociar o Software sem restrições, incluindo, sem limitação, os direitos de usar, copiar, modificar, mesclar , publicar, distribuir, sublicenciar e/ou vender cópias do Software e permitir que as pessoas a quem o Software seja fornecido o façam, sujeito às seguintes condições:
O aviso de direitos autorais acima e este aviso de permissão serão incluídos em todas as cópias ou partes substanciais do Software.
O SOFTWARE É FORNECIDO "COMO ESTÁ", SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO ÀS GARANTIAS DE COMERCIALIZAÇÃO, ADEQUAÇÃO A UM DETERMINADO FIM E NÃO VIOLAÇÃO. EM HIPÓTESE ALGUMA OS AUTORES OU DETENTORES DE DIREITOS AUTORAIS SERÃO RESPONSÁVEIS POR QUALQUER RECLAMAÇÃO, DANOS OU OUTRA RESPONSABILIDADE, SEJA EM UMA AÇÃO DE CONTRATO, ATO ILÍCITO OU DE OUTRA FORMA, DECORRENTE DE, OU EM CONEXÃO COM O SOFTWARE OU O USO OU OUTRAS NEGOCIAÇÕES NO SOFTWARE.