【.com速译】Web应用程序仍然是数据科学家向用户展示他们的数据科学项目的有用工具。由于我们可能没有网络开发技能,我们可以使用像Streamlit这样的开源Python库在短时间内轻松开发网络应用程序。1.Streamlit简介Streamlit是一个开源的Python库,用于为数据科学和机器学习项目创建和共享Web应用程序。该库可帮助您使用几行代码在几分钟内创建和部署数据科学解决方案。Streamlit与数据科学中使用的其他流行Python库无缝集成,例如NumPy、Pandas、Matplotlib、Scikit-learn等。注:Streamlit使用React作为前端框架在屏幕上渲染数据。2.安装和设置Streamlit需要您机器上的python>=3.7版本。要安装streamlit,您需要在终端中运行以下命令。pipinstallstreamlit您还可以使用以下命令检查计算机上安装的版本。streamlit--versionstreamlined,version1.1.0成功安装streamlit后,您可以在终端中运行以下命令来测试该库。streamlithelloStreamlitHello应用程序将出现在Web浏览器的新选项卡中。这表明一切正常,我们可以继续使用Streamlit创建我们的第一个Web应用程序。3.开发网络应用程序在这一部分,我们将部署经过训练的NLP模型来预测电影评论的情绪(正面或负面)。您可以在[此处](https://hackernoon.com/how-to-build-and-deploy-an-nlp-model-with-fastapi-part-1-n5w35cj?ref=hackernoon.com)访问源代码和数据集。数据科学Web应用程序将显示一个用于添加电影评论的文本字段和一个用于提交评论和进行预测的简单按钮。导入重要包第一步是创建一个名为app.py的python文件,然后导入streamlit和训练好的NLP模型所需的python包。#importpackagesimportstreamlitasstimportosimportnumpyasnpfromsklearn.feature_extraction.textimportTfidfVectorizer,CountVectorizer#textpreprocessingmodulesfromstringimportpunctuation#textpreprocessingmodulesfromnltk.tokenizeimportword_tokenizeimportnltkfromnltk.corpusimportstopwordsfromnltk.stemimportWordNetLemmatizerimportre#regularexpressionimportjoblibimportwarningswarnings.filterwarnings("ignore")#seedingnp.random.seed(123)#loadstopwordsstop_words=stopwords.words("english")清理评论的特征评论可能包含我们在进行预测时不需要的不必要的单词和字符。我们将通过删除停用词、数字和标点符号来清理评论。然后,我们将使用NLTK包中的词形还原过程将每个单词转换为其基本形式。**text_cleaning()**函数将在进行预测之前处理所有必要的步骤来清理我们的评论。#functiontocleanthetext@st.cachedeftext_cleaning(text,remove_stop_words=True,lemmatize_words=True):#Cleanthetext,withtheoptiontoremovestop_wordsandtolemmatizeword#Cleanthetexttext=re.sub(r"[^A-Za-z0-9]","",text)text=复制代码re.sub(r"\'s","",text)text=re.sub(r"http\S+","link",text)text=re.sub(r"\b\d+(?:\.\d+)?\s+","",text)#removenumbers#Removepunctuationfromtexttext="".join([cforcintextifcnotinpunctuation])#Optionally,removestopwordsifremove_stop_words:texttexttext=text.split()text=[wforwintextifnotwinstop_words]text=""...python函数make_prediction()将执行以下任务。1.接收评论并清理。2.加载训练好的NLP模型。3.做出预测。4.估计预测概率。5.最后返回预测的类及其概率。#functontomakeprediction@st.cachedefmake_prediction(回顾):#clearnthedataclean_review=text_cleaning(回顾)#loadthemodelandmakepredictionmodel=joblib.load(“sentiment_model_pipeline.pkl”)#makepredictionresult=model.predictcle([clean_review])#checkprobabilitiesprobacts=model])概率={:.2f}".format(float(probas[:,result]))returnresult,probability**注:**如果训练好的NLP模型预测为1,则表示Positive,如果预测为0则表示Negative。**创建应用程序标题和描述**您可以使用streamlit中的title()和write()方法来创建您的Web应用程序的标题及其描述。#Settheapptitlest.title("SentimentAnalyisisApp")st.write("Asimplemachinelaerningapptopredictthesentimentofamovie'sreview")要显示Web应用程序,您需要在终端中运行以下命令。streamlitrunapp.py,您将看到Web应用程序自动在您的Web浏览器中弹出,或者您可以使用创建的本地URLhttp://localhost:8501。创建一个表单来接收电影评论下一步是使用streamlit创建一个简单的表单。该表单将显示一个文本字段以添加您的评论,并且在文本字段下方它将显示一个简单的按钮以提交添加的评论然后进行预测。#Declareaformtoreceiveamovie'sreviewform=st.form(key="my_form")review=form.text_input(label="Enterthetextofyourmoviereview")submit=form.form_submit_button(label="MakePrediction")现在您可以在Web应用程序上看到该表单。进行预测并显示结果我们的最后一段代码是在用户添加电影评论并单击表单部分的“进行预测”按钮时进行预测并显示结果。单击按钮后,Web应用程序将运行**make_prediction()**函数并将结果显示在浏览器中的Web应用程序上。ifsubmit:#makepredictionfromtheinputtextresult,probability=make_prediction(review)#DisplayresultsoftheNLPtaskst.header("Results")ifint(result)==1:st.write("Thisispositivereviewwithaprobabiliyof",probability)else:st.write("Thisisapositivereviewwithaprobabiliyof",概率)else:st.write("Thisisapositivereviewyofaprobabiliyof"4.测试web应用程序用几行代码,我们创建了一个简单的数据科学web应用程序,它接受电影评论并预测它是正面的还是负面的。测试web应用程序,通过添加您选择的电影评论来填充文本字段。我在下面添加了**ZackSnyder**的正义联盟**电影2021年上映**的评论。>“我喜欢这部电影从头到尾。就像RayFisher说的,我希望这部电影不要结束。乞讨的场景很刺激,非常喜欢那个场景。不像电影《正义联盟》让我们通过展示每个英雄最擅长的东西来爱每个角色。谢谢,Zack和整个团队。”然后单击进行预测按钮并查看结果。正如您在我们创建的Web应用程序中看到的那样,经过训练的NLP模型预测添加的评论是**正面**,概率为**0.64。我建议您在我们创建的数据科学Web应用程序上添加另一个电影评论并再次测试。5.结论Streamlit提供了许多功能和组件,您可以使用它们以您想要的方式开发数据科学Web应用程序。您在这里学到的是来自streamlit的一些常见元素。【翻译稿件,合作网站转载请注明原译者和出处.com】
