运行 python程序的时候 就可以有创建了一个简单的升级动画,显示用户的当前等级,并在升级时更新显示_python
import nltk
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
from nltk.stem import WordNetLemmatizer
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from flask import Flask, render_template, jsonify
import json
# 初始化nltk
nltk.download('punkt')
nltk.download('stopwords')
nltk.download('wordnet')
# 初始化分类器和评分模型
classifier = None
scorer = None
# 初始化分类和评分标准
categories = ['工作', '生活']
score_criteria = {
'工作': {
'完成任务': 10,
'解决问题': 5,
'其他': 1
},
'生活': {
'锻炼': 5,
'学习': 3,
'其他': 1
}
}
# 初始化基础分数和等级
base_score = 0
level = '初级'
# 初始化日志文件和评分记录
daily_log = []
scores = []
# 初始化TF-IDF向量化器
vectorizer = TfidfVectorizer()
# 初始化词形还原器
lemmatizer = WordNetLemmatizer()
# 训练分类器
def train_classifier():
global classifier
# 读取训练数据
training_data = []
training_labels = []
for category in categories:
with open(f'{category}_log.txt', 'r') as file:
activities = file.readlines()
training_data.extend(activities)
training_labels.extend([category] * len(activities))
# 数据预处理
processed_data = preprocess_text(training_data)
# 特征提取
features = vectorizer.fit_transform(processed_data).toarray()
# 训练分类器
classifier = MultinomialNB()
classifier.fit(features, training_labels)
# 训练评分模型
def train_scorer():
global scorer
# 读取训练数据
training_data = []
training_scores = []
for category in categories:
with open(f'{category}_log.txt', 'r') as file:
activities = file.readlines()
for activity in activities:
training_data.append(activity)
training_scores.append(score_activity(activity, category))
# 数据预处理
processed_data = preprocess_text(training_data)
# 特征提取
features = vectorizer.fit_transform(processed_data).toarray()
# 训练评分模型
scorer = MultinomialNB()
scorer.fit(features, training_scores)
# 预处理文本数据
def preprocess_text(data):
processed_data = []
for text in data:
# 分词
tokens = word_tokenize(text.lower())
# 去除停用词和标点符号
stop_words = set(stopwords.words('english'))
filtered_tokens = [token for token in tokens if token.isalnum() and token not in stop_words]
# 词形还原
lemmatized_tokens = [lemmatizer.lemmatize(token) for token in filtered_tokens]
# 重新组合为文本
processed_text = ' '.join(lemmatized_tokens)
processed_data.append(processed_text)
return processed_data
# 智能分类工作日常
def classify_activity(activity):
processed_activity = preprocess_text([activity])
features = vectorizer.transform(processed_activity).toarray()
category = classifier.predict(features)[0]
return category
# 根据分类和评分标准计算活动得分
def score_activity(activity, category):
score = 0
for word, points in score_criteria[category].items():
if word in activity:
score += points
return score
# 记录每天的工作日常
def log_daily_activity(activity):
global base_score, level
# 智能分类
category = classify_activity(activity)
# 计算得分
score = score_activity(activity, category)
# 更新基础分数和等级
base_score += score
if base_score >= 100:
level = '高级'
elif base_score >= 50:
level = '中级'
# 记录日志
daily_log.append((activity, category, score))
# 更新评分记录
scores.append(score)
# 创建Flask应用
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/simulate')
def simulate():
global base_score, level
# 模拟每天的活动记录
activities = [
'完成工作任务',
'锻炼身体',
'解决问题',
'学习新知识',
'其他活动'
]
for activity in activities:
log_daily_activity(activity)
# 返回当前分数和等级
return jsonify({'base_score': base_score, 'level': level})
if __name__ == '__main__':
# 训练分类器和评分模型
train_classifier()
train_scorer()
# 启动Flask应用
app.run(debug=True)
原文地址:https://blog.csdn.net/m0_57411304/article/details/140613654
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!