Pratique e implemente um aplicativo de Internet classificador de informações de NLP para a nuvem gratuitamente

Publicidade

Informações passo a passo para treinar um manequim de PNL, incorporando-o em um Python Flask Internet App e implantando-o na nuvem

Neste artigo, vamos construir, preparar e implantar um manequim de PNL na nuvem acessível a qualquer pessoa na rede sem gastar um centavo. O produto de ponta ficará assim.

Fique à vontade para clicar no hiperlink abaixo para experimentá-lo por conta própria (vai demorar um pouco para carregar). Esteja ciente de que, se muitas pessoas acessarem ao mesmo tempo, ele pode ficar sem memória e travar, mas lembre-se de que é um serviço gratuito! 🙂

Vamos seguir as seguintes etapas:

  1. Pratique um manequim de PNL usando um fácil manequim de classificação de vetores de assistência linear para classificar o conteúdo textual de informações em 10 classes totalmente diferentes (‘BEM-ESTAR’, ‘POLÍTICA’, ‘ENTRETENIMENTO’, ‘VIAGEM’, ‘ESTILO E BELEZA’, ‘CAIS’, ‘ FOOD & DRINK’, ‘WORLD NEWS’, ‘BUSINESS’ e ‘SPORTS’).
  2. Salve o modelo profissional diretamente em um arquivo.
  3. Crie um Flask Internet App em Python que reúna o modelo experiente para fazer previsões de classe de dados em conteúdo de texto inserido pelo usuário.
  4. Dê uma olhada no Flask Internet App domesticamente em seu navegador.
  5. Implante o Flask Internet App na Heroku Cloud Platform sem gastar um centavo.

O repositório GitHub para este texto é fornecido em. Tenha a liberdade de obtê-lo para cumprir ao lado. Ele contém todos os dados de registros para o aplicativo de Internet e o livro Jupyter Pocket para treinar o modelo de PNL. Ao implantar este aplicativo da Internet na nuvem mais tarde, você não deseja a metade do treinamento do modelo, ou seja, o arquivo do livro Jupyter Pocket, nem deseja o conhecimento do treinamento, ou seja, o arquivo csv porque o modelo já é qualificado.

Primeiro, vamos passar pelas etapas de treinamento do modelo de PNL, usando o livro de bolso Jupyter ‘Praticar um manequim de PNL para classificar informações Class.ipynb’ no repositório GitHub.

O conjunto de dados de classe de informação com o qual vamos trabalhar é obtido do Kaggle ( hyperlink ). Além disso, está no repositório do GitHub como o arquivo ‘NewsCategorizer.csv’ . Vamos lidar com o treinamento de um classificador de classes de informações com as informações acima. Não posso me aprofundar demais nos principais pontos do pré-processamento de conteúdo textual, otimizar e ajustar os hiperparâmetros do modelo, pois nosso objetivo é mostrar como criar um aplicativo da Internet a partir de um modelo NLP para prever o conteúdo textual , e implantação na nuvem.

Primeiro, essas são as importações relacionadas e seu objetivo (comentado abaixo). Execute pip installs para quaisquer pacotes que ainda não foram colocados em seu pc.

Primeiro, carregamos o conhecimento do arquivo csv e fazemos algum EDA e pré-processamento fundamental do conteúdo textual.

Para facilitar as coisas, vamos usar apenas 2 colunas, a ‘classe’ da informação e sua ‘short_description’ . ou seja, vamos simplesmente treinar o manequim para prever a classe das informações do ‘short_description’ . Na verdade, diferentes implementações extra difíceis podem tentar extrair todo o conteúdo textual do site na coluna ‘hiperlinks’ para treinar o modelo. Mas vamos manter as coisas fáceis.

Como será visto a seguir, existem 10 classes que geralmente são distribuídas igualmente entre os vários conjuntos de dados inteiros, bom!

conhecimento claro

Aqui, limpamos o conjunto de dados (ou seja, a coluna ‘short_description’) removendo stopwords, pontuação, sublinhados e dígitos. Stopwords significa apenas frases comuns em inglês que não são específicas de nenhuma classe de informação, por exemplo, the, it, he, I, myself. Não queremos essas frases no conjunto de dados.

Em seguida, como na maioria dos trabalhos de processamento de conteúdo textual NLP, nós tokenizamos as frases e realizamos a lematização do conteúdo textual, ou seja, alteramos uma frase para seu tipo básico usando a biblioteca NLTK (Pure Language Toolkit) .

Vamos dar uma olhada no conteúdo textual das classes ‘BEM-ESTAR’ e ‘VIAGEM’ para ter uma ideia real do conhecimento limpo. Imprimimos as primeiras linhas. Como agora processamos as informações para remover palavras irrelevantes e pontuações e assim por diante., as frases não irão para a circulação facilmente.

array(['treinamento de parte de descanso confirmado tipo já sabia sequência de corrida construída treino duro três semanas de cinco dias muito treinamento cruzado fisioterapia rolamento de espuma também confirmou teimoso', 'pense na ferramenta de fala 
desafio do treinador narrar experiência caso tratar respeito pode encontrar companhia agradável', 
'relógio correndo estado unido encontre cura equipe trabalhando estude dr francisco lopera', 
'quero ocupado continue tentando perfeito quero feliz foco fazendo diferença', 
'primeira má notícia refrigerante pão carne enlatada cerveja refeição altamente nutritiva dar sorte irlandês faria'], 
dtype=object )
array(['discussão mccandless life lendo livro assistindo filme ouvindo passando informações', 
'acordou condição virar cutucar cabeça ver poderia viajar horizonte contraste espesso branco leve sombra tenda poderia ver nevasca passando por você', ' 
viajante indo amar um', 
'atualmente viver los angeles caminho cidade de nova york duas grandes megacidades metropolitanas autofocadas londres londres cidade favorita mundo longe ', ' 
atravessou israel andou de bicicleta pela birmânia barco de pesca pilotado laotian mekong dirigiu land rover pela américa provou ponto viajando leve caminhou pelo mundo seis semanas tipo bolsa de bagagem' ], 
dtype=objeto)

Aqui extraímos as frases de cada classe e de todas as linhas, então contamos com o número de ocorrências de cada frase usando a operação Counter() que importamos anteriormente. Em seguida, plotamos a frequência das dez frases mais comuns para cada classe.

Vemos algumas frases frequentes repetidas ao longo das aulas, de preferência também seria bom adicionar às stopwords listando frases como ‘um’, ‘vez’, ‘ano’, ‘como’, como aparecem em todas as aulas. No entanto, o TfidfVectorizer que usaremos mais tarde para vetorizar as frases cuidará disso. Vou incorporar apenas 2 gráficos abaixo, fique à vontade para executar o livro Jupyter Pocket para ver a saída total do código abaixo.

Agora temos nosso conhecimento de conteúdo textual pronto para treinamento. Como em todas as tarefas normais de ML, as opções (conteúdo textual) provavelmente serão salvas na variável X, enquanto os rótulos (classe) provavelmente serão salvos em y.

Temos que converter nosso conteúdo textual em vetores (ilustração significativa de números) com um vetorizador, pois nosso manequim pode cuidar apenas de números, não de alfabetos. Primeiro, como em todo trabalho de estudo de máquina, dividimos nosso conhecimento em 2 grupos de linhas, preparamos e verificamos as unidades usando o funcionamento train_test_split () antes de vetorizá-lo.

Em seguida, usamos um TfidfVectorizer , Tfidf significa ‘Período de Frequência Inverso Doc Frequency’. Principalmente quando este vetorizador se encaixa em nosso conhecimento, ele pega a palavra de todas as frases/vocabulário (ou seja, todas as frases e frases em questão) presentes no conteúdo textual que fornecemos. (Eu escolhi combiná-lo com frases únicas e também frases de duas frases usando o parâmetro ngram_range = (1,2) no código abaixo). Em seguida, converte todo o conteúdo textual (cada linha na coluna ‘short_description’) em um vetor com números correspondentes que representam a frequência de cada uma das frases em questão.

‘Frequência do período de tempo’ significa que quanto maior a quantidade, maior a frequência do período de tempo dentro do conteúdo textual.

É importante ressaltar que ele faz parte da ‘Frequência Doc Inversa’ . Se o período de tempo parece muitas instâncias dentro do conteúdo textual de uma classe selecionada, pode ser uma frase bastante comum (semelhante a ‘um’, ‘tempo’, ‘ano’ como visto anteriormente) que aparece em muitos papéis (ou seja, a maioria das linhas de conteúdo textual). Portanto, esse período de tempo não desempenharia um papel vital na determinação do tipo de conteúdo textual.

Ao dividir a frequência de cada período de tempo pela frequência de documento (ou seja, o número de linhas de conteúdo textual em que aparece), podemos contabilizar isso e dar um peso menor às frases frequentes. Não posso entrar em parâmetros diferentes usados ​​no TfidfVectorizer. No entanto, tenha a liberdade de aprender mais sobre o TfidfVectorizer por conta própria, incluí um hiperlink abaixo.

O tfidf_vectorizer foi ajustado exclusivamente em nosso conhecimento de coaching para observar todas as frases em questão, então retrabalhamos o conhecimento de coaching em vetores que representam a frequência dessas frases. Isso é feito pela operação fit_transform() sob (duas etapas estão envolvidas aqui). Em seguida, usamos o mesmo modelo para transformar o conhecimento de teste em vetores.

Nós NÃO combinamos com o conhecimento de teste porque o conhecimento de teste deve simular a entrada de pessoa de conteúdo textual para previsão de categoria, e o vetorizador já está instalado efetivamente antes que a pessoa insira qualquer entrada. Da mesma forma, vamos finalmente querer o tfidf_vectorizer em nosso aplicativo de Internet mais tarde para remodelar as frases que vamos classificar no aplicativo de Internet em vetores, antes de usar nosso modelo profissional para previsão.

Vamos imprimir os feature_names (ou seja, frases extraídas pelo TfidfVectorizer). Sem surpresa, devemos sempre ver que eles são compostos de frases únicas e também frases de duas frases , conforme definimos dentro do ngram_range(1,2) conforme mencionado anteriormente. (Além disso, eles geralmente começam com z porque estou imprimindo as últimas 20 opções organizadas em ordem alfabética). Alfabetos não ingleses também estão incluídos.

['zuburbia', 
'zuburbia endosso', 
'zucchini', 
'zucchini add', 
'zuckerberg', 
'zuckerberg impetuoso', 
'zuckerberg juntou', 'zuckerberg 
make ', 
'zuckerberg falou', 
'zumba', 
'zurich' , 
'zurich chess', 
'zuzana', 
'zuzana navelkova', 
'ça', 
'école', 
'école de', 
'öztürk', 
'öztürk université', 
'over']

Vamos agora preparar um manequim de classificação de vetor de assistência linear fácil .

0.723

A precisão que obtemos aqui em nosso conhecimento de teste é de mais de 70% (é possível que você obtenha um valor um pouco diferente). Nada mal, considerando que era um modelo de classificação de vetores de assistência linear realmente fundamental, sem nenhum estudo profundo envolvido e sem ajuste de hiperparâmetros de modelo. Além disso, estamos treinando apenas a ‘descrição curta’ das informações com algum pré-processamento muito básico. Tenha a liberdade de aprimorar o modelo ajustando alguns de seus parâmetros e fazendo um pré-processamento de conteúdo textual extra superior!

Aqui vem a parte divertida. Vamos agora dar uma olhada no manequim com algum conteúdo textual! Criamos uma operação que pega o conteúdo textual, vetorizamos usando a operação rework() do tfidf_vectorizer que foi instalado em nosso conhecimento de treinamento anteriormente e usamos o modelo svc_classifier que foi usado anteriormente para prever a classe de informações e imprimi-la .

Vamos inserir algum conteúdo textual e conferir!

Agora que terminamos com o treinamento de manequim, estamos finalmente na Etapa 2!

A biblioteca pickle em Python nos permite salvar muitos objetos Python em dados de registros em nosso armazenamento nativo, utilizando a operação pickle.dump() . Podemos então carregá-lo diretamente em um objeto Python usando outro programa Python usando a operação pickle.load() e usá-lo da mesma forma que agora o usamos neste programa para previsão.

Nosso manequim svc_classifier foi ajustado e treinado anteriormente. Esteja ciente de que estamos salvando este manequim qualificado (com o nome de arquivo ‘classifier.pkl’) E o tfidf_vectorizer (com o nome de arquivo ‘tfidf_vectorizer.pkl’). Vamos carregar este manequim e vetorizador em nosso programa Python (arquivo ‘app.py’) para nosso Flask Python Internet App para usá-lo para previsões dentro do aplicativo posteriormente.

Por que estamos salvando o tfidf_vectorizer de forma tão eficaz? Tenha em mente que o tfidf_vectorizer foi ajustado exclusivamente em nosso conhecimento de coaching e seus feature_names foram derivados das frases e frases em nosso conhecimento de coaching. Em seguida, usamos para remodelar o conhecimento de coaching E o conhecimento de teste para vetorizar o conteúdo textual. (Não combinamos com nossos conhecimentos de teste porque não fomos obrigados a fazê-lo, se você se esquecer, pode voltar à parte acima para aprender mais uma vez.) Da mesma forma, vamos querer o tfidf_vectorizer em nosso aplicativo de Internet posteriormente para remodelar o conteúdo textual que vamos classificar no aplicativo de Internet em vetores, antes que o svc_classifier funcione nele para prever a classe de informações.

Os caminhos de arquivo do manequim salvo e do vetorizador sob são

  • ‘news_category_classifier_webapp/mannequin/classifier.pkl’ e
  • ‘news_category_classifier_webapp/manequim/tfidf_vectorizer.pkl’

Se você estiver usando este livro de bolso de todo o meu GitHub Repo sem alterar nenhuma estrutura de pasta, não precisará alterar o caminho do arquivo para o uso do aplicativo da Internet posteriormente. Caso contrário, você pode simplesmente salvar os dados de registro em ‘classifier.pkl’ e ‘tfidf_vectorizer.pkl’ na mesma pasta do Jupyter Pocket book, antes de copiá-los para a pasta correspondente do Flask Internet App posteriormente.

Embora eu já tenha incluído esses dados de registros no repositório do GitHub, você os substituirá assim que executar o código no livro do Jupyter Pocket.

Agora vamos criar o Flask Internet App. Primeiro, você precisará criar a próxima construção de pasta com os dados de registros correspondentes (ou você pode usar o meu incluído no repositório do GitHub).

Abaixo da pasta ‘news_category_classifier_webapp’ , crie um arquivo ‘app.py’ . Não se preocupe com o ‘Procfile’ e ‘necessities.txt’, mas.

Em seguida, crie uma listagem de ‘manequim’ e replique ‘classifier.pkl’ e ‘tfidf_vectorizer.pkl’ anteriores para esta pasta (se ainda não estiver lá).

Por fim, crie a lista de ‘modelos’ com um arquivo ‘mais importante.html’ .

Flask Internet App — arquivo app.py

Primeiro, vamos dar uma olhada em nosso arquivo app.py. Você gostaria de fazer pip set up flask se não estiver em seu sistema, mas.

Vemos 3 segmentos de código de aparência familiar em:

  • o primário acumula nosso arquivo tf_idf_vectorizer diretamente em um objeto tfidf_vectorizer
  • o segundo agrupa nosso arquivo classifier.pkl diretamente em um objeto classificador . Esses dados de registros são da pasta ‘manequim’
  • a operação predict_category() final faz uso de cada objeto para prever um determinado conteúdo textual e retornar a classe .

Primeiro, essa é a linha de código usual para uma appocasião, utilizando a técnica Flask do pacote flask e armazenando-a na variável app. O parâmetro template_folder informa ao aplicativo o local para procurar dados de registros html para carregar no navegador. Lembre-se de que identificamos nossa pasta (contendo o arquivo ‘most important.html’) como ‘templates’. Isso segue a mesma antiga conferência Flask.

O aplicativo acima pode ser usado para lidar com solicitações de rede recebidas e enviar respostas para o usuário. Em seguida, o @app.routeque você vê abaixo é um decorador Python que transforma uma operação Python diária em uma operação de visualização Flask , que converte o valor de retorno da operação em uma resposta HTTP a ser exibida por um navegador online. (Não se preocupe, mais sobre isso mais tarde, pois esclarecerei o código em um elemento maior).

Primeiro, você deve '/'seguir o caminho acima @app.route()para informar esta função (no nosso caso, a operação principal () comprovada acima) para responder a solicitações de rede para o URL /, que é o URL principal. Caso você esteja criando um aplicativo de Internet mais complicado, ele pode criar outras rotas, como, /other_route.por exemplo, quando você acessa um site da Internet ‘ www.somewebsite.com/’ (descobrir que termina com um '/'na página da Web mais importante), para Ao acessar uma parte especial do site, é possível que você seja redirecionado para ‘ www.somewebsite.com/other_route’ (descubra que termina com um '/other_route') depois de clicar em alguns hiperlinks na página principal.

Também usamos as estratégias ‘GET’ e ‘POST’ para o @app.route()decorador. Isso informa à operação que a rota de URL /(ou seja, a página da Web mais importante) antecipará cada solicitação ‘GET’ e ‘POST’ e fará várias coisas com base nas solicitações. Um aplicativo fácil de Internet Flask geralmente teria apenas as solicitações ‘GET’, sempre que inserimos um hiperlink de site da Internet em nosso navegador, estamos fazendo uma solicitação ‘GET’ para obter algumas informações para mostrar em nosso navegador. No entanto, se digamos que preenchemos algum tipo em um site da Internet e clicamos no botão ‘Enviar’ , provavelmente estaremos fazendo uma solicitação ‘POST’em vez disso, estamos ‘postando’ algumas informações no site. O site pode selecionar o curso de informações ‘postadas’ para ele e retornar algum resultado final. É exatamente isso que vamos fazer.

Assim que entramos em nosso aplicativo de Internet, estamos fazendo uma solicitação ‘GET’, então o site nos apresenta um tipo para preencher.

Depois de inserir algo e clicar em ‘Enviar’, provavelmente faremos uma solicitação ‘POST’ para a mesma página mais importante da rota de URL /, em seguida, o site processará essas informações e retornará a previsão de classe de informações. Vamos dar uma olhada nos segmentos de código para a operaçãoprincípio() para ver como o site responde de maneira diferente a ‘GET’ e ‘POST’. Existem 2 loops if dentro da operação. Vamos dar uma olhada no loop primário.

Metodologia ‘GET’

Se estamos entrando no site pela primeira vez, estamos fazendo uma solicitação de técnica ‘GET’, a operação retornará a técnica flask.render_template(‘most important.html’) , que apenas informa ao navegador para carregue o arquivo ‘most important.html’ da pasta de modelos. Que preenche a forma com a entrada de conteúdo textual e um botão Enviar (vamos descobrir este arquivo html mais tarde).

Metodologia ‘POST’

Depois de enviarmos a forma no aplicativo da Internet. Uma solicitação de técnica ‘POST’ provavelmente será enviada (isso é feito no arquivo HTML posteriormente). Inicializamos um objeto string vazio chamado news_text acima, após o qual a técnica flask.request.type[‘news_text’] aparece para o conteúdo textual que foi enviado pela pessoa da disciplina de entrada de um tipo HTML chamado ‘news_text’ . (Mais uma vez vamos criar esse tipo dentro do html depois). Em seguida, usando a operação predict_category() descrita anteriormente, o aplicativo faz uma previsão para a classe de informações e a armazena na variável de previsão .

Em seguida, ele retorna o método render_template() que agrupa o arquivo ‘most important.html’ mais uma vez, mas desta vez, descobrimos que também passamos no {‘Information Textual content’:news_text} no parâmetro original_input que usamos serão exibidos na página da Web posteriormente, acima da classe de informações esperada. Além disso, vamos dentro da previsão (ou seja, string de classe de informação prevista) como um parâmetro de resultado final para a página da Web para exibição. Em nosso arquivo .html mais importante , vamos extrair o original_input e o resultado finalParâmetros para exibição. Não se preocupe muito se você não perceber, mas, todas as peças virão juntas quando dermos uma olhada no código principal.html . Pode parecer algo assim na página da web:

“Conteúdo textual da informação : eu gosto de andar de bicicleta pela cidade” é a entrada autêntica .

“TRAVEL” é o resultado final .

Por último, mas não menos importante, queremos o código de conformidade para executar o aplicativo depois de iniciá-lo como nosso programa mais importante.

Terminamos com o arquivo app.py.

Flask Internet App — arquivo most important.html

Agora vamos para a pasta de modelos e trabalhamos com o arquivo most important.html .

Um arquivo html tem todas as partes entre as tags <html>e</html>. Vamos ignorar todas as partes da primeira parte do código entre as tags <type></type>. Este é o código CSS usado para tornar o site mais bonito, todas as peças ainda serão executadas completamente, mas sem cores e com botões feios sem isso. Fique à vontade para aprender este tutorial sobre css caso você seja .

Primeiro, o próximo código contém conteúdo textual entre as tags <title>, que pode aparecer porque a janela do navegador é identificada acima do navegador quando alguém entra no site. O código entre as tags <h1> é um cabeçalho, que mostra o conteúdo textual em uma fonte gigante ousada no site. As tags <middle> facilitam o cabeçalho. Tenha a liberdade de criar seu próprio título e título.

Criar tipo para a pessoa enviar informações Conteúdo textual

Agora criamos a forma com o próximo código, entre as tags <type> . Escrevemos algumas orientações para a pessoa fazer uso do código. <br> significa break, que é uma simples quebra de linha (ou seja, começar em uma nova linha) para separar o conteúdo textual. A parte seguinte do site correspondente parece assim.

A primeira linha revela isso:

Bem aqui, o parâmetro de movimento {{ url_for(‘mais importante’) }} informa à forma para fazer o movimento de ir para a página principal da web (recarregar esta página da web mais importante) depois que a pessoa envia a forma (ou seja, leva este movimento ). Mas desta vez, embora a página principal esteja mais uma vez, estamos fazendo uma solicitação técnica “POST” agora em vez de uma solicitação “GET”. (O código app.py acima sabe que deve estar processando informações do método “POST”. Espero que você veja como todas as peças estão começando a se encaixar!)

Outra parte vital do código é que isto:

O id será qualquer nome que você quiser, mas o parâmetro de identificação deve ser “news_text” porque lembre-se em nosso arquivo app.py , escrevemos este código flask.request.type[‘news_text’] para obter o conteúdo textual da esfera com a identificação “news_text” . O parâmetro de classificação é “conteúdo textual” (em vez de diferentes variedades, como dígitos, ou controle deslizante, botões de opção e assim por diante.) Portanto, parece uma disciplina de conteúdo textual para a pessoa inserir conteúdo textual.

Em seguida, criamos o botão Enviar utilizando este código:

Mostrar a previsão da classe de informação

Agora que já temos o formato para a pessoa enviar algum conteúdo textual. No entanto, queremos que o código mostre a previsão da classe de informações. O código relacionado é comprovado em.

Primeiro, {% if end result %} e {% endif %} acima são como um ‘if loop’ em Python, mas é assim que é aplicado em um arquivo html do Flask. Principalmente algo entre essas 2 tags só aparecerá se houver uma variável chamada ‘resultado final’ que é entregue a esta página da web . Portanto, quando você entrar nesta página da web pela primeira vez, nada entre as duas tags aparecerá, pois não existe tal variável.

No entanto, depois que a pessoa enviar a forma e uma técnica ‘POST’ for feita, lembre-se de que em nosso arquivo app.py vamos renderizar um modelo com esses parâmetros original_input={‘Information Textual content’:news_text} e resultado final =previsão . É daí que vem o resultado final. O aplicativo faz uma previsão e vai para esta página da web como uma variável de resultado final . Essa variável de resultado final será acessada no código html como {{ resultado final }} . O código que mostra o resultado é esse:

Além disso, entregamos o parâmetro original_input={‘Information Textual content’:news_text} no arquivo app.py. Esteja ciente de que {‘Information Textual content’:news_text} é apenas um arquivo de dicionário Python. Vamos mostrar isso no site por meio do próximo código.

O código acima é (você adivinhou) um ‘loop for’. Basicamente, ele percorre todos os pares de chaves e valores no dicionário , descompactando original_input.gadgets() (sim, há apenas um par aqui, mas ainda queremos fazer isso). Em seguida, ele mostra a chave ‘Conteúdo textual da informação’ e a cadeia de valor news_text (independentemente da pessoa inserida anteriormente), que é exibida acima da classe de informação antecipada.

Estamos realmente realizados com o Flask Internet App! Vamos dar uma olhada domesticamente em nosso navegador!

Primeiro, abra o terminal (comando imediato, shell de energia Anaconda ou qualquer terminal onde você possa executar instruções python) e depois vá para a lista da pasta ‘news_category_classifier_webapp’ .

No meu caso, executei ‘ cd D:news_category_classifier_webapp’

Em seguida, execute o comando ‘ python app.py’ para iniciar o aplicativo! Um servidor agora está trabalhando no aplicativo internamente em seu computador.

Agora abra seu navegador e digite http://127.0.0.1:5000/ .

Se tudo correr bem, é melhor ver isso em seu navegador e você poderá jogar junto com seu aplicativo de Internet! Parabéns!

Agora que temos o aplicativo funcionando internamente, vamos implantá-lo na rede para que qualquer pessoa possa acessá-lo, idêntico ao meu aplicativo aqui . Provavelmente usaremos a Heroku Cloud Platform , já que é de uso gratuito, tem memória restrita e pode travar se muitas pessoas a usarem imediatamente. Após cerca de meia hora de inatividade, o aplicativo deve ser reiniciado quando alguém o visita, portanto, pode demorar um pouco para carregar. (Você pode pagar para melhorar os ativos embora.)

Primeiro, você pode abrir o Bloco de Notas e criar um arquivo conhecido como Procfile (sem extensão de arquivo) com a próxima linha “net: gunicorn app:app” (sem as aspas). Isso apenas diz ao Herokuapp para executar o Gunicorn, um servidor Python HTTP, de acordo com a documentação aqui .

Você também precisa de um arquivo needies.txt aqui com as próximas linhas de conteúdo textual que informam ao Herokuapp quais pacotes de biblioteca devem ser adicionados quando você implanta o aplicativo (a configuração provavelmente será realizada automaticamente nos servidores do Heroku).

balão
pandas
gunicorn
sklearn

Como lembrete, é melhor ter a construção total abaixo de sua listagem ‘news_category_classifier_webapp’ agora.

Crie uma conta GitHub e Herokuapp

Agora vá para os próximos 2 hiperlinks para criar sua conta GitHub e Herokuapp caso você ainda não os tenha.

É bom adicionar seu repositório ao GitHub, após o qual o Herokuapp poderá aprender com o repositório para implantá-lo. Não usaremos nenhuma interface de comando para importar ou implantar algo no GitHub e podemos continuar com a técnica básica.

Adicione seu código ao repositório GitHub

Depois de criar sua conta GitHub, clique em ‘Novo’ para criar um novo repositório.

Agora dê ao seu repositório uma reputação ‘news_category_classifier_webapp’ . Eu já tenho a identificação deste repositório, então um erro foi confirmado em. O repositório também se tornará não público para você, já que você fará login em sua conta do GitHub no Herokuapp mais tarde para acessar este repositório.

Agora, basta arrastar toda a pasta ‘news_category_classifier_webapp’ do seu computador para esta área conforme comprovado. Quando você decidir fazê-lo usando as instruções do git , tenha a liberdade de agir! Você não precisa adicionar o livro Jupyter Pocket e o arquivo csv usado para treinar o manequim, eles não devem estar dentro da pasta.

Agora você deve ter a próxima construção em seu repositório GitHub.

Criar um novo aplicativo no Herokuapp

Na verdade, estamos encerrando algumas etapas antes de o aplicativo parar! Depois de criar sua conta no Herokuapp, acesse https://dashboard.heroku.com/apps e clique em ‘Criar novo aplicativo’.

Agora dê uma reputação ao aplicativo. O aplicativo será implantado em https:// your_app_name .herokuapp.com/, então selecione corretamente. 🙂

Em seguida, role para baixo na tela seguinte e clique em “GitHub” e inscreva-se em sua conta GitHub. Em seguida, digite ‘informações’ (ou qualquer nome que você tenha dado ao seu repositório GitHub) na barra de pesquisa para procurar seu repositório. Assim que seu repositório for descoberto, clique em ‘Join’ .

Agora clique em Deploy Department , você tem apenas um departamento que é o departamento ‘mais importante’. Você pode permitir implantações automatizadas se desejar, portanto, sempre que substituir seu repositório GitHub, a nova versão será implantada automaticamente.

Dê ao Herokuapp alguns minutos para colocar os pacotes Python necessários e começar todas as peças.

Quando você vir isso abaixo, clique em ‘Visualizar’ e pronto! Você pode ser levado ao seu aplicativo de Internet! Tenha a liberdade de publicar o hiperlink do seu aplicativo abaixo do feedback para você!

Como uma rápida recapitulação, agora conseguimos perceber tudo isso dentro do artigo! 🙂 Ufa, foi um curso demorado mas espero que tenham gostado!

  1. Pratique um manequim de PNL usando um fácil manequim de classificação de vetores de assistência linear para classificar o conteúdo textual de informações em 10 classes totalmente diferentes (‘BEM-ESTAR’, ‘POLÍTICA’, ‘ENTRETENIMENTO’, ‘VIAGEM’, ‘ESTILO E BELEZA’, ‘CAIS’, ‘ FOOD & DRINK’, ‘WORLD NEWS’, ‘BUSINESS’ e ‘SPORTS’).
  2. Salve o modelo profissional diretamente em um arquivo.
  3. Crie um Flask Internet App em Python que reúna o modelo experiente para fazer previsões de classe de dados em conteúdo de texto inserido pelo usuário.
  4. Dê uma olhada no Flask Internet App domesticamente em seu navegador.
  5. Implante o Flask Internet App na Heroku Cloud Platform sem gastar um centavo.

Se você gostou deste texto, fique à vontade para dar uma olhada em meus vários artigos! E fique à vontade para me seguir para mais artigos como este! 🙂