Commit 77b29670 authored by zhouwei's avatar zhouwei

Merge branch 'dev' into 'master'

修改和新增新闻标签

See merge request !6
parents 36a6440c 561080e6
......@@ -155,43 +155,12 @@
<version>1.19.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
<version>8.0.30</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.6</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>s3</artifactId>
<version>2.20.0</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.1</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
......
package com.nanyan.securitylink.config;
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;
@Configuration
public class DatasourceConfig {
@Bean
@ConfigurationProperties(prefix = "spring.datasource.druid")
public DataSource druidDataSource() {
return new DruidDataSource();
}
}
package com.nanyan.securitylink.config;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@MapperScan("com.nanyan.securitylink.mapper")
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 添加分页插件
interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return interceptor;
}
}
package com.nanyan.securitylink.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.nanyan.securitylink.model.WechatMsgDO;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface WechatMsgMapper extends BaseMapper<WechatMsgDO> {
}
package com.nanyan.securitylink.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
@Data
@TableName("wechat_msg")
public class WechatMsgDO {
@TableId(type = IdType.AUTO)
Integer id;
String msg;
//状态 0:未发送 1:发送
Integer status;
Date createTime;
Date updateTime;
}
......@@ -40,39 +40,68 @@ public class AIServiceImpl implements AIService {
private static final Map<String, String> NATURAL_DISASTER_LABEL_MAP = new HashMap<>();
static {
NEWS_LABEL_MAP.put("枪击", "TagShooting");
NEWS_LABEL_MAP.put("抢劫", "TagRobbery");
NEWS_LABEL_MAP.put("爆炸", "TagExplosion");
NEWS_LABEL_MAP.put("恐怖袭击", "TagTerroristAttack");
NEWS_LABEL_MAP.put("纵火", "TagArson");
NEWS_LABEL_MAP.put("大规模伤亡事件", "TagMassCasualtyIncident");
NEWS_LABEL_MAP.put("人质事件", "TagHostageSituation");
NEWS_LABEL_MAP.put("毒气泄漏", "TagToxicGasLeak");
NEWS_LABEL_MAP.put("生物危害", "TagBiologicalHazard");
NEWS_LABEL_MAP.put("交通意外", "TagTrafficAccident");
NEWS_LABEL_MAP.put("建筑物倒塌", "TagBuildingCollapse");
NEWS_LABEL_MAP.put("食品安全", "TagFoodSafety");
NEWS_LABEL_MAP.put("社会冲突", "TagSocialConflict");
NEWS_LABEL_MAP.put("群体性事件", "TagMassGatheringIncident");
NEWS_LABEL_MAP.put("环境污染", "TagEnvironmentalPollution");
NEWS_LABEL_MAP.put("重大事故", "TagMajorAccident");
NEWS_LABEL_MAP.put("抗议示威", "TagProtestDemonstration");
NEWS_LABEL_MAP.put("集体维权", "TagCollectiveAdvocacy");
NEWS_LABEL_MAP.put("活动失控骚乱", "TagUncontrolledEventRiot");
NEWS_LABEL_MAP.put("地域冲突", "TagTerritorialConflict");
NEWS_LABEL_MAP.put("性别冲突", "TagGenderConflict");
NEWS_LABEL_MAP.put("宗教冲突", "TagReligiousConflict");
NEWS_LABEL_MAP.put("民族冲突", "TagEthnicConflict");
NEWS_LABEL_MAP.put("阶级冲突", "TagClassConflict");
NEWS_LABEL_MAP.put("食物中毒", "TagFoodPoisoning");
NEWS_LABEL_MAP.put("公共卫生事件", "PublicHealthEmergency");
NEWS_LABEL_MAP.put("工业事故", "IndustriaAccident");
NEWS_LABEL_MAP.put("核事故", "NuclearAccident");
NEWS_LABEL_MAP.put("矿难", "MiningAccident");
NEWS_LABEL_MAP.put("游行抗议", "Protest");
NEWS_LABEL_MAP.put("水坝溃坝", "DamBurst");
NEWS_LABEL_MAP.put("油轮泄漏", "OilSpill");
NEWS_LABEL_MAP.put("火灾", "Fire");
NEWS_LABEL_MAP.put("枪击","TagShooting");
NEWS_LABEL_MAP.put("抢劫","TagRobbery");
NEWS_LABEL_MAP.put("事故爆炸","TagExplosion");
NEWS_LABEL_MAP.put("恐怖袭击","TagTerroristAttack");
NEWS_LABEL_MAP.put("纵火","TagArson");
NEWS_LABEL_MAP.put("大规模伤亡事件","TagMassCasualtyIncident");
NEWS_LABEL_MAP.put("人质事件","TagHostageSituation");
NEWS_LABEL_MAP.put("毒气泄漏","TagToxicGasLeak");
NEWS_LABEL_MAP.put("生物危害","TagBiologicalHazard");
NEWS_LABEL_MAP.put("交通事故","TagTrafficAccident");
NEWS_LABEL_MAP.put("建筑物倒塌","TagBuildingCollapse");
NEWS_LABEL_MAP.put("食品安全事件","TagFoodSafety");
NEWS_LABEL_MAP.put("社会冲突","TagSocialConflict");
NEWS_LABEL_MAP.put("群体性事件","TagMassGatheringIncident");
NEWS_LABEL_MAP.put("环境污染","TagEnvironmentalPollution");
NEWS_LABEL_MAP.put("抗议示威","TagProtestDemonstration");
NEWS_LABEL_MAP.put("集体维权","TagCollectiveAdvocacy");
NEWS_LABEL_MAP.put("活动失控骚乱","TagUncontrolledEventRiot");
NEWS_LABEL_MAP.put("地域冲突","TagTerritorialConflict");
NEWS_LABEL_MAP.put("性别冲突","TagGenderConflict");
NEWS_LABEL_MAP.put("宗教冲突","TagReligiousConflict");
NEWS_LABEL_MAP.put("民族冲突","TagEthnicConflict");
NEWS_LABEL_MAP.put("阶级冲突","TagClassConflict");
NEWS_LABEL_MAP.put("食物中毒","TagFoodPoisoning");
NEWS_LABEL_MAP.put("地震","TagEarthquake");
NEWS_LABEL_MAP.put("火山爆发","TagVolcanicEruption");
NEWS_LABEL_MAP.put("山体滑坡","TagLandslide");
NEWS_LABEL_MAP.put("泥石流","TagMudslide");
NEWS_LABEL_MAP.put("雪崩","TagAvalanche");
NEWS_LABEL_MAP.put("水坝决口","TagDamBreach");
NEWS_LABEL_MAP.put("水坝溃坝","TagDamBurst");
NEWS_LABEL_MAP.put("台风/飓风","TagTyphoonHurricane");
NEWS_LABEL_MAP.put("龙卷风","TagTornadoWarning");
NEWS_LABEL_MAP.put("暴雨","TagRainstorm");
NEWS_LABEL_MAP.put("洪水","TagFlood");
NEWS_LABEL_MAP.put("寒潮","TagColdWave");
NEWS_LABEL_MAP.put("高温热浪","TagHeatWave");
NEWS_LABEL_MAP.put("干旱","TagDrought");
NEWS_LABEL_MAP.put("沙尘暴","TagDustStorm");
NEWS_LABEL_MAP.put("冻雨","TagFreezingRain");
NEWS_LABEL_MAP.put("冰雹","TagHail");
NEWS_LABEL_MAP.put("雷暴","TagThunderstormWarning");
NEWS_LABEL_MAP.put("大风","TagHighWind");
NEWS_LABEL_MAP.put("山林火灾","TagForestFire");
NEWS_LABEL_MAP.put("冰川融化","TagGlacialMelting");
NEWS_LABEL_MAP.put("海啸","TagTsunami");
NEWS_LABEL_MAP.put("霾","TagHazeWarning");
NEWS_LABEL_MAP.put("化学品泄漏","TagChemicalSpill");
NEWS_LABEL_MAP.put("核事故","TagNuclearAccident");
NEWS_LABEL_MAP.put("矿难","TagMiningAccident");
NEWS_LABEL_MAP.put("油轮泄漏","TagOilSpill");
NEWS_LABEL_MAP.put("火灾","TagFire");
NEWS_LABEL_MAP.put("工业污染","TagIndustrialPollution");
NEWS_LABEL_MAP.put("工业事故","TagIndustriaAccident");
NEWS_LABEL_MAP.put("传染病爆发","TagDiseaseOutbreak");
NEWS_LABEL_MAP.put("公共卫生事件","TagPublicHealthEmergency");
NEWS_LABEL_MAP.put("持刀伤人","TagKnifeAttack");
NEWS_LABEL_MAP.put("恐怖爆炸","TerroristBombing");
NEWS_LABEL_MAP.put("暴力冲突","TagViolentClashes");
NEWS_LABEL_MAP.put("战争","TagWar");
NEWS_LABEL_MAP.put("游行抗议","TagProtest");
NATURAL_DISASTER_LABEL_MAP.put("地震","earthquake");
NATURAL_DISASTER_LABEL_MAP.put("火山爆发","volcanicEruption");
......@@ -339,44 +368,38 @@ public class AIServiceImpl implements AIService {
systemRole.setRole("system");
systemRole.setContent("```xml\n" +
"<instruction>\n" +
"对多条新闻内容进行打标签,标签分别为枪击、抢劫、爆炸、恐怖袭击、纵火、大规模伤亡事件、人质事件、毒气泄漏、自然灾害、生物危害、交通意外、建筑物倒塌、食品安全、社会冲突、群体性事件等。请按照以下步骤完成任务:\n" +
"对新闻内容进行标签分类,仅当标签评分达到或超过80分时才应用该标签。可选的标签包括:枪击,抢劫,事故爆炸,恐怖袭击,纵火,大规模伤亡事件,人质事件,毒气泄漏,生物危害,交通事故,建筑物倒塌,食品安全事件,社会冲突,群体性事件,环境污染,抗议示威,集体维权,活动失控骚乱,地域冲突,性别冲突,宗教冲突,民族冲突,阶级冲突,食物中毒,地震,火山爆发,山体滑坡,泥石流,雪崩,水坝决口,水坝溃坝,台风/飓风,龙卷风,暴雨,洪水,寒潮,高温热浪,干旱,沙尘暴,冻雨,冰雹,雷暴,大风,山林火灾,冰川融化,海啸,霾,化学品泄漏,核事故,矿难,油轮泄漏,火灾,工业污染,工业事故,传染病爆发,公共卫生事件,持刀伤人,恐怖爆炸,暴力冲突,战争,游行抗议,其他。\n" +
"\n" +
"1. 仔细阅读每条新闻内容,理解其核心事件。\n" +
"2. 根据新闻描述的事件类型,从给定的标签列表中选择最匹配的一个或多个标签。\n" +
"3. 确保标签与新闻内容高度相关,避免主观臆断。\n" +
"4. 如果新闻内容涉及多个事件类型,可以分配多个标签,但需确保每个标签都准确反映新闻内容。\n" +
"5. 输出结果时,仅列出标签名称,不要包含任何XML标签或其他无关内容。\n" +
"<instructions>\n" +
"1. 仔细阅读新闻内容,理解其核心事件和背景。\n" +
"2. 根据新闻内容,评估每个标签的适用性,并为每个标签打分(0-100分)。\n" +
"3. 仅选择评分达到或超过80分的标签作为最终标签。\n" +
"4. 如果新闻内容与任何标签的匹配度均低于80分,则输出“其他”。\n" +
"5. 确保输出结果不包含任何XML标签,仅列出适用的标签名称,多个标签用逗号分隔。\n" +
"6. 如果新闻内容涉及多个高评分标签,则按相关性从高到低排序。\n" +
"\n" +
"<examples>\n" +
"<example>\n" +
"<输入>\n" +
"\"昨日凌晨,某市一家银行发生持枪抢劫案,歹徒与警方交火后逃离现场,造成两名保安受伤。\"\n" +
"<输出>\n" +
"枪击, 抢劫\n" +
"输入:某市发生一起持枪抢劫银行事件,造成3人死亡,5人受伤。\n" +
"输出:枪击, 抢劫, 大规模伤亡事件\n" +
"</example>\n" +
"\n" +
"<example>\n" +
"<输入>\n" +
"\"今日上午,某化工厂发生毒气泄漏事故,附近居民已被紧急疏散,暂无人员伤亡报告。\"\n" +
"<输出>\n" +
"毒气泄漏\n" +
"输入:某工厂发生化学气体泄漏,导致附近居民出现中毒症状。\n" +
"输出:毒气泄漏\n" +
"</example>\n" +
"\n" +
"<example>\n" +
"<输入>\n" +
"\"近日,某地因征地问题引发大规模抗议活动,数百名民众与警方发生冲突,导致多人受伤。\"\n" +
"<输出>\n" +
"社会冲突, 群体性事件\n" +
"输入:某地区因土地纠纷引发大规模抗议活动,警方与示威者发生冲突。\n" +
"输出:社会冲突, 群体性事件\n" +
"</example>\n" +
"</examples>\n" +
"\n" +
"注意事项:\n" +
"- 标签必须严格从给定的列表中选择,不得自行添加或修改标签名称。\n" +
"- 如果新闻内容与任何标签都不匹配,则输出\"\"。\n" +
"- 输出时标签之间用逗号分隔,不要使用编号或项目符号。\n" +
"- 确保标签的准确性和一致性,避免歧义或模糊分类。\n" +
"\n" +
"请严格按照上述要求完成任务,确保输出结果简洁、准确且符合规范。\n" +
"<note>\n" +
"1. 标签评分必须严格遵循80分的阈值,低于80分的标签不得使用。\n" +
"2. 确保标签的准确性和相关性,避免过度标记或遗漏重要标签。\n" +
"3. 对于模糊或不确定的内容,优先选择最相关的标签,避免猜测。\n" +
"4. 输出结果必须简洁明了,仅包含适用的标签名称。\n" +
"</note>\n" +
"</instruction>\n" +
"```"
);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment