Added a feature to select the emotion analysis model, supporting switching between the basic and improved models.
This commit is contained in:
+33
-13
@@ -167,24 +167,44 @@ def getYuQingCharDataOne():
|
||||
biedata = [{'name': x, 'value': y} for x, y in zip(X, Y)]
|
||||
return X, Y, biedata
|
||||
|
||||
def getYuQingCharDataTwo():
|
||||
# 分析评论和文章的情感
|
||||
def getYuQingCharDataTwo(model_type='pro'):
|
||||
"""
|
||||
分析评论和文章的情感
|
||||
:param model_type: 使用的模型类型,'basic' 为基础模型,'pro' 为改进模型
|
||||
"""
|
||||
comment_texts = [comment[4] for comment in commentList]
|
||||
article_texts = [article[5] for article in articleList]
|
||||
|
||||
# 预测评论情感
|
||||
comment_predictions = predict_sentiment(comment_texts)
|
||||
if comment_predictions is not None:
|
||||
comment_sentiments = ['良好' if pred == 0 else '不良' for pred in comment_predictions]
|
||||
else:
|
||||
if model_type == 'basic':
|
||||
# 使用基础模型(SnowNLP)
|
||||
comment_sentiments = []
|
||||
|
||||
# 预测文章情感
|
||||
article_predictions = predict_sentiment(article_texts)
|
||||
if article_predictions is not None:
|
||||
article_sentiments = ['良好' if pred == 0 else '不良' for pred in article_predictions]
|
||||
else:
|
||||
for text in comment_texts:
|
||||
value = SnowNLP(text).sentiments
|
||||
if value > 0.6:
|
||||
comment_sentiments.append('良好')
|
||||
else:
|
||||
comment_sentiments.append('不良')
|
||||
|
||||
article_sentiments = []
|
||||
for text in article_texts:
|
||||
value = SnowNLP(text).sentiments
|
||||
if value > 0.6:
|
||||
article_sentiments.append('良好')
|
||||
else:
|
||||
article_sentiments.append('不良')
|
||||
else:
|
||||
# 使用改进模型
|
||||
comment_predictions = predict_sentiment(comment_texts)
|
||||
if comment_predictions is not None:
|
||||
comment_sentiments = ['良好' if pred == 0 else '不良' for pred in comment_predictions]
|
||||
else:
|
||||
comment_sentiments = []
|
||||
|
||||
article_predictions = predict_sentiment(article_texts)
|
||||
if article_predictions is not None:
|
||||
article_sentiments = ['良好' if pred == 0 else '不良' for pred in article_predictions]
|
||||
else:
|
||||
article_sentiments = []
|
||||
|
||||
# 统计结果
|
||||
comment_counts = Counter(comment_sentiments)
|
||||
|
||||
+27
-9
@@ -199,8 +199,11 @@ def commentChar():
|
||||
@pb.route('/yuqingChar')
|
||||
def yuqingChar():
|
||||
username = session.get('username')
|
||||
# 获取模型选择参数
|
||||
model_type = request.args.get('model', 'pro') # 默认使用改进模型
|
||||
|
||||
X, Y, biedata = getYuQingCharDataOne()
|
||||
biedata1, biedata2 = getYuQingCharDataTwo()
|
||||
biedata1, biedata2 = getYuQingCharDataTwo(model_type)
|
||||
x1Data, y1Data = getYuQingCharDataThree()
|
||||
return render_template('yuqingChar.html',
|
||||
username=username,
|
||||
@@ -210,7 +213,8 @@ def yuqingChar():
|
||||
biedata1=biedata1,
|
||||
biedata2=biedata2,
|
||||
x1Data=x1Data,
|
||||
y1Data=y1Data)
|
||||
y1Data=y1Data,
|
||||
model_type=model_type)
|
||||
|
||||
@pb.route('/yuqingpredict')
|
||||
def yuqingpredict():
|
||||
@@ -222,13 +226,26 @@ def yuqingpredict():
|
||||
TopicLen = getTopicLen(defaultTopic)
|
||||
X, Y = getTopicCreatedAtandpredictData(defaultTopic)
|
||||
|
||||
# 使用改进版模型进行情感预测
|
||||
predicted_label, confidence = predict_sentiment(defaultTopic)
|
||||
if predicted_label is not None:
|
||||
sentences = '良好' if predicted_label == 0 else '不良'
|
||||
sentences = f"{sentences} (置信度: {confidence:.2f})"
|
||||
# 获取模型选择参数
|
||||
model_type = request.args.get('model', 'pro') # 默认使用改进模型
|
||||
|
||||
if model_type == 'basic':
|
||||
# 使用基础模型(SnowNLP)
|
||||
value = SnowNLP(defaultTopic).sentiments
|
||||
if value == 0.5:
|
||||
sentences = '中性'
|
||||
elif value > 0.5:
|
||||
sentences = '正面'
|
||||
elif value < 0.5:
|
||||
sentences = '负面'
|
||||
else:
|
||||
sentences = '预测失败'
|
||||
# 使用改进模型
|
||||
predicted_label, confidence = predict_sentiment(defaultTopic)
|
||||
if predicted_label is not None:
|
||||
sentences = '良好' if predicted_label == 0 else '不良'
|
||||
sentences = f"{sentences} (置信度: {confidence:.2f})"
|
||||
else:
|
||||
sentences = '预测失败'
|
||||
|
||||
comments = getCommentFilterDataTopic(defaultTopic)
|
||||
return render_template('yuqingpredict.html',
|
||||
@@ -239,7 +256,8 @@ def yuqingpredict():
|
||||
sentences=sentences,
|
||||
xData=X,
|
||||
yData=Y,
|
||||
comments=comments)
|
||||
comments=comments,
|
||||
model_type=model_type)
|
||||
|
||||
|
||||
@pb.route('/articleCloud')
|
||||
|
||||
@@ -155,18 +155,35 @@
|
||||
<select onchange="hotWordChange(event)" class="form-control mb-3">
|
||||
{% for i in hotWordList %}
|
||||
{% if defaultHotWord == i[0] %}
|
||||
<option selected value="{{ i[0] }}">{{ i[0] }}</option>
|
||||
<option selected value="{{ i[0] }}">{{ i[0] }}</option>
|
||||
{% else %}
|
||||
<option value="{{ i[0] }}">{{ i[0] }}</option>
|
||||
<option value="{{ i[0] }}">{{ i[0] }}</option>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label>模型选择</label>
|
||||
<select onchange="modelChange(event)" class="form-control mb-3">
|
||||
{% if model_type == 'basic' %}
|
||||
<option selected value="basic">基础模型</option>
|
||||
<option value="pro">改进模型</option>
|
||||
{% else %}
|
||||
<option value="basic">基础模型</option>
|
||||
<option selected value="pro">改进模型</option>
|
||||
{% endif %}
|
||||
</select>
|
||||
</div>
|
||||
<script>
|
||||
function hotWordChange(e){
|
||||
window.location.href = 'http://127.0.0.1:5000/page/yuqingpredict?Topic=' + e.target.value
|
||||
const model = document.querySelector('select[onchange="modelChange(event)"]').value;
|
||||
window.location.href = 'http://127.0.0.1:5000/page/yuqingpredict?Topic=' + e.target.value + '&model=' + model;
|
||||
}
|
||||
function modelChange(e){
|
||||
const topic = document.querySelector('select[onchange="hotWordChange(event)"]').value;
|
||||
window.location.href = 'http://127.0.0.1:5000/page/yuqingpredict?Topic=' + topic + '&model=' + e.target.value;
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user