streamlitは扱いやすくて楽しい。
<開発環境>
OS:Windows11
IDE:VSCode
言語:Python
パッケージ:Textblob,NLTK
streamlitの環境設定についてはこちら。
初期設定が済んだ前提で進めていきます。
NLP(自然言語処理)をやっていきたいので、NLTKをインストールします。
先ずはテキスト処理が必要なため、
pip install streamlit textblob
を記述してTextblobをインストールします。
ここからは注意点があります。NLTKをインストールするために
python -m textblob.download_corpora
を行うと最新バージョンがインストールされるのですが、2024/10/09時点では最新バージョン(NLTK3.9.1)でバグが発生しているようでして、正常に機能しません。その為、
pip install nltk==3.8.1
を追加で行う必要があります。これで分析が可能となります。
コードは下記の通りです。
import streamlit as st
import nltk
from nltk.sentiment import SentimentIntensityAnalyzer
#必要なデータをダウンロード
nltk.download('vader_lexicon')
#背景色を変更するためのCSSを追加
st.markdown(
"""
<style>
.stApp {
background-color: lightblue;
}
</style>
""",
unsafe_allow_html=True
)
#タイトル
st.title("Emotional analysis tool for text using NLP(感情分析ツール)")
#ユーザーからテキスト入力を受け取る
text = st.text_area("Please enter the text you wish to analyze(分析したいテキストを入力してください):")
if text:
#感情分析
sia = SentimentIntensityAnalyzer()
sentiment = sia.polarity_scores(text)
#結果の表示
st.subheader("Emotional Analysis Results(感情分析結果)")
st.write(f"positive(ポジティブ度): {sentiment['pos']}")
st.write(f"negative(ネガティブ度): {sentiment['neg']}")
st.write(f"neutrality(中立度): {sentiment['neu']}")
st.write(f"Total Score(合計スコア): {sentiment['compound']}") #総合的な感情スコア
#テキストの要約
st.subheader("summarization(要約)")
sentences = text.split('. ') #文の分割(文末のピリオドで)
summary = " ".join(sentences[:3]) #最初の3文を要約
st.write(summary)
※今回は要約機能には拘っていません。飾りです。
【 unsafe_allow_htmlについて 】
streamlitは簡単に記述ができる分、HTMLとCSSを直接埋め込む形となります。
unsafeとあるように、unsafe_allow_html=TrueはXSS攻撃等のリスクがあります。
現時点では強くおすすめできるプラットフォームとは言い難いですが、個人でPythonを扱う分には面白いツールです。Pythonやセキュリティの学習として活用してみてください(。・ω・。)ノシ