加入更多的功能,我需要随便输入一个 我今天的工作 ,它能自动分类到 其中一个,例如 “编程” 它会自动分类到 工作

为了实现更智能的分类,我们需要改进分类器,使其能够处理用户输入的任意文本,并自动分类到相应的类别。可以通过增加训练数据并改进数据预处理和分类器训练来实现这一点。

改进步骤

  1. 增加训练数据:增加更多样化的训练数据,以提高分类器的准确性。
  2. 改进数据预处理:考虑更多的文本特征。
  3. 使用更高级的机器学习模型:可以考虑使用sklearn中的其他分类算法或者使用深度学习模型。
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 sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.metrics import accuracy_score
from flask import Flask, render_template, request, jsonify
import os
import pandas as pd
from datetime import datetime# 初始化nltk
nltk.download('punkt')
nltk.download('stopwords')
nltk.download('wordnet')# 初始化分类器和评分模型
classifier = None
scorer = None# 初始化分类和评分标准
categories = ['工作', '生活']
score_criteria = {'工作': {'完成任务': 10,'解决问题': 5,'编程': 8,'其他': 1},'生活': {'锻炼': 5,'学习': 3,'休息': 2,'其他': 1}
}# 初始化基础分数和等级
base_score = 0
level = '初级'# 初始化日志文件和评分记录
daily_log = []
scores = []# 初始化TF-IDF向量化器和词形还原器
vectorizer = TfidfVectorizer()
lemmatizer = WordNetLemmatizer()# 检查并创建示例数据文件
def create_example_files():example_data = {'工作': ['完成工作任务\n','解决问题\n','编写代码\n','参加会议\n','其他工作相关活动\n'],'生活': ['锻炼身体\n','学习新知识\n','看电影\n','休息\n','其他生活相关活动\n']}for category, data in example_data.items():filename = f'{category}_log.txt'if not os.path.exists(filename):with open(filename, 'w', encoding='utf-8') as file:file.writelines(data)# 训练分类器
def train_classifier():global classifiercreate_example_files()# 读取训练数据training_data = []training_labels = []for category in categories:with open(f'{category}_log.txt', 'r', encoding='utf-8') as file:activities = file.readlines()training_data.extend(activities)training_labels.extend([category] * len(activities))# 数据预处理processed_data = preprocess_text(training_data)# 特征提取和训练分类器classifier = make_pipeline(TfidfVectorizer(), MultinomialNB())classifier.fit(processed_data, training_labels)# 预处理文本数据
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])category = classifier.predict(processed_activity)[0]return category# 根据分类和评分标准计算活动得分
def score_activity(activity, category):score = 0for word, points in score_criteria[category].items():if word in activity:score += pointsreturn score# 记录每天的工作日常到Excel
def log_daily_activity(activity):global base_score, level# 智能分类category = classify_activity(activity)# 计算得分score = score_activity(activity, category)# 更新基础分数和等级base_score += scoreif base_score >= 100:level = '高级'elif base_score >= 50:level = '中级'# 记录日志daily_log.append((activity, category, score))# 更新评分记录scores.append(score)# 获取当前时间timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')# 记录到Excellog_to_excel(timestamp, activity, category, score)# 记录数据到Excel文件
def log_to_excel(timestamp, activity, category, score):filename = 'activity_log.xlsx'if os.path.exists(filename):df = pd.read_excel(filename)else:df = pd.DataFrame(columns=['Timestamp', 'Activity', 'Category', 'Score'])new_entry = pd.DataFrame([[timestamp, activity, category, score]], columns=['Timestamp', 'Activity', 'Category', 'Score'])df = pd.concat([df, new_entry], ignore_index=True)df.to_excel(filename, index=False)# 创建Flask应用
app = Flask(__name__)@app.route('/')
def index():return render_template('index.html')@app.route('/log_activity', methods=['POST'])
def log_activity():activity = request.form['activity']log_daily_activity(activity)return jsonify({'base_score': base_score, 'level': level})@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()# 启动Flask应用app.run(debug=True)

HTML代码(templates/index.html

我们将创建一个表单,让用户输入他们的活动,并通过Ajax发送到服务器:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>升级动画</title><style>body {text-align: center;font-family: Arial, sans-serif;}.character {width: 200px;height: 200px;margin: 50px auto;border: 2px solid #000;border-radius: 10px;background-color: #f0f0f0;position: relative;}.character img {width: 100%;height: 100%;display: none;}.character img.active {display: block;}.level {font-size: 1.5em;margin-top: 20px;}.upgrade {font-size: 1.2em;color: green;}.form-container {margin: 20px auto;}</style>
</head>
<body><div class="character"><img src="/static/character_level1.png" id="level1" class="active"><img src="/static/character_level2.png" id="level2"><img src="/static/character_level3.png" id="level3"></div><div class="level" id="level">当前等级: 初级</div><div class="upgrade" id="upgrade"></div><div class="form-container"><form id="activity-form"><input type="text" id="activity" name="activity" placeholder="输入今天的活动" required><button type="submit">记录活动</button></form></div><script>function updateLevel(newLevel) {const levelImages = {'初级': document.getElementById('level1'),'中级': document.getElementById('level2'),'高级': document.getElementById('level3')};for (let level in levelImages) {if (level === newLevel) {levelImages[level].classList.add('active');document.getElementById('level').textContent = `当前等级: ${level}`;document.getElementById('upgrade').textContent = `升级到${level}!`;} else {levelImages[level].classList.remove('active');}}}function logActivity(event) {event.preventDefault();const activity = document.getElementById('activity').value;fetch('/log_activity', {method: 'POST',headers: {'Content-Type': 'application/x-www-form-urlencoded'},body: `activity=${encodeURIComponent(activity)}`}).then(response => response.json()).then(data => {updateLevel(data.level);document.getElementById('activity').value = '';});}document.getElementById('activity-form').addEventListener('submit', logActivity);</script>
</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/48896.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法——双指针(day4)

15.三数之和 15. 三数之和 - 力扣&#xff08;LeetCode&#xff09; 题目解析&#xff1a; 这道题目说是三数之和&#xff0c;其实这和我们之前做过的两数之和是一个规律的~无非就是我们需要实时改动target的值。先排好序&#xff0c;然后固定一个数取其负值作target&#xf…

【MySQL进阶之路 | 高级篇】GROUP BY优化,分页查询优化

1. GROUP BY优化 group by使用的索引的原则几乎跟order by一致&#xff0c;即使没有过滤条件用到索引&#xff0c;也可以直接使用索引。 group by先排序再分组&#xff0c;遵循索引建立的最佳左前缀原则 当无法使用索引列&#xff0c;增大max_length_for_sort_data和sort_buf…

【Linux 驱动】IMX6ULL eLCDIF驱动

1. eLCDIF设备树 lcdif: lcdif021c8000 {compatible "fsl,imx6ul-lcdif", "fsl,imx28-lcdif"; //属性reg <0x021c8000 0x4000>; //起始地址 地址大小interrupts <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>; …

Linux存储管理-逻辑卷管理(LVM)

逻辑卷管理&#xff08;LVM&#xff09;流程 物理磁盘/分区 -> 物理卷&#xff08;PV&#xff09;-> 加入卷组&#xff08;VG&#xff09;-> 卷组调配空间&#xff0c;制作逻辑卷&#xff08;LV&#xff09;-> 格式化 -> 挂载 -> 使用 为什么需要逻辑卷管理…

Web 性能入门指南-3.5 优化单页应用程序 (SPA)

&#x1f338; 欢迎来到前端后花园&#xff01;这里是一个温馨的小角落&#xff0c;专为热爱前端技术的你打造。没有华丽的辞藻&#xff0c;只有真诚的分享。希望你能在这里找到实用的内容&#xff0c;学到新知识&#xff0c;同时也欢迎你畅所欲言&#xff0c;分享你的思考和见…

【Linux 13】文件系统

文章目录 &#x1f308; 一、前言&#x1f308; 二、文件操作的系统接口⭐ 1. 打开文件 open⭐ 2. 关闭文件 close⭐ 3. 写入文件 write⭐ 4. 读取文件 read &#x1f308; 三、文件描述符⭐ 1. 文件描述符介绍⭐ 2. 提前被分配的文件描述符 0 1 2⭐ 3. 文件描述符的分配规则 &…

浏览器插件利器--allWebPluginV2.0.0.16-beta版发布

allWebPlugin简介 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品&#xff0c;致力于将浏览器插件重新应用到所有浏览器。它将现有ActiveX控件直接嵌入浏览器&#xff0c;实现插件加载、界面显示、接口调用、事件回调等。支持Chrome、Firefo…

minio安装小计一则

安装minio并且使用api方式对文件进行操作 本文使用docker安装 docker pull minio/minio docker pull minio/mc &#xff08;mc为minio文件运行命令行工具&#xff09; 使用如下命令运行Minio服务器容器&#xff1a; docker run -p 9000:9000 -p 9001:9001 --name minio-…

【深度学习】大模型GLM-4-9B Chat ,微调与部署

下载好东西&#xff1a; 启动容器环境: docker run -it --gpus all --net host --shm-size8g -v /ssd/xiedong/glm-4-9b-xd:/ssd/xiedong/glm-4-9b-xd kevinchina/deeplearning:pytorch2.3.0-cuda12.1-cudnn8-devel-yolov8train bashpip install typer tiktoken numpy1.2…

Web开发:ASP.NET CORE使用Ajax定时获取后端数据

一、低难度&#xff08;刷新a标签&#xff09; 1、需求 给a标签每15s刷新一次&#xff0c;显示最新的时间&#xff08;时间必须由后端获取&#xff09; 应该如何操作呢 2、代码 后端 using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Mi…

解决mysql5.0,Navicat for MySQL,IntelliJ IDEA之间中文乱码

使用软件版本 jdk-8u171-windows-x64 ideaIU-2021.1.3 mysql-essential-5.0.87-win32 navicat8_mysql_cs 这个问题我调试了好久&#xff0c;网上的方法基本上都试过了&#xff0c;终于是解决了。 三个地方结果都不一样。 方法一 首先大家可以尝试下面这种方法&#xff1a…

记录 cocos 开发问题 ,微信 wx.xxx函数 报找不到名称“wx”

今天写微信排行榜遇到 问题分享一下。 目前&#xff0c;微信、百度 和 抖音 小游戏这些平台为了保护其社交关系链数据&#xff0c;增加了 开放数据域 的概念&#xff0c;这是一个单独的游戏执行环境。开放数据域中的资源、引擎、程序&#xff0c;都和主游戏&#xff08;主域&a…

Vue-Plugin-HiPrint 打印设计

Vue-Plugin-HiPrint 是一个Vue.js的插件&#xff0c;旨在提供一个简单而强大的打印解决方案。通过 Vue-Plugin-HiPrint&#xff0c;您可以轻松地在Vue.js应用程序中实现高度定制的打印vue-plugin-hiprinthiprint.io

(秋招复习)自动驾驶与机器人中的SLAM技术(二)

秋招复习之--自动驾驶与机器人中的SLAM技术2 第五章 基础点云处理激光传感器与点云的数学模型最近邻问题准确率和召回率暴力最近邻栅格和体素方法二分树与K-d树四叉树和八叉树 拟合问题平面拟合直线拟合 第六章 2D激光定位与建图扫描匹配算法点到点的scan matching点到线的scan…

99:PostgreSQL开启SQL语句日志收集

为了开启连接PostgreSQL的各个客户端执行SQL语句的情况&#xff0c;开启SQL语句日志收集&#xff08;或者称SQL审计&#xff09;。 对postgresql.conf配置文件中下面项进行配置&#xff0c;示例如下&#xff1a; #是否开启日志收集&#xff08;包括系统日志、错误日志等&…

Sqlmap中文使用手册 - Detection模块参数使用

目录 1. Detection模块的帮助文档2. 各个参数的介绍2.1 --levelLEVEL2.2 --riskRISK2.3 页面对比 1. Detection模块的帮助文档 Detection:These options can be used to customize the detection phase--levelLEVEL Level of tests to perform (1-5, default 1)--riskRIS…

linux中不设置堆栈大小,默认大小是多少,怎么调用的

在Linux中&#xff0c;使用POSIX线程&#xff08;pthread&#xff09;库创建线程时&#xff0c;如果不显式设置堆栈大小&#xff0c;线程将使用系统默认的堆栈大小。这个默认大小可以因系统、发行版、甚至内核版本而异&#xff0c;但通常对于大多数现代Linux系统来说&#xff0…

C语言相关知识点(不定期更新内容)

coutinue只能在循环当中使用 关键字不能用作变量的 typedef是用来给类型取别名的变量 一条语句结束的时候后面要有分号 函数后面不写分号 int main( )是函数&#xff0c;大括号和里面的是函数体&#xff0c;函数和函数体之间不能有分号 void是无、空的意思&#xff0c;后面没有…

mybatis-plus模板引擎代码生成

网盘代码&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1jwuVGiA97dc1KVnGKc0c4g?pwd6666 提取码&#xff1a;6666 Gradle依赖&#xff1a; dependencies {// https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starterimplementation org.…

android audio 相机按键音:(一)资源加载与替换

按键音&#xff0c;声音资源路径&#xff1a; frameworks\base\data\sounds\effects\ogg 对应路径&#xff0c;可见对应声音资源&#xff1a; camera_click.ogg camera_click_48k.ogg 编译加载声音资源mk&#xff1a; base/data/sounds/AllAudio.mk 加载资源规则: $(LOCAL_P…