【NLP】通过罪犯在狱中表现的描述来预测罪犯可以被减刑的年份(DF原题)

2023-12-10 18:40

本文主要是介绍【NLP】通过罪犯在狱中表现的描述来预测罪犯可以被减刑的年份(DF原题),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目背景

        数据整理自全国减刑、假释、暂予监外执行信息网(http://jxjs.court.gov.cn)公开的减刑判决文书(已对罪犯个人信息脱敏处理),均为真实案件减刑信息,数据集中包含罪犯个人信息、犯罪信息、在狱表现等字段。

datasets文件夹包含训练集和A测试集,文件均是以逗号分隔的csv格式,文件信息分别如下:

文件类别文件名文件内容
训练集train.csv字段{id, fact, label}
测试集A榜testA.csv字段{id, fact}
提交样例submission.csv字段{id, label}

 其中字段说明如下:

字段名类型取值范围字段解释
idstring-案例唯一id标识
factstring-案例描述(罪犯个人信息、犯罪经历、在狱表现等)
labelint{0, 1, …}准许减刑的时长,单位为月

 数据引用

链接:https://pan.baidu.com/s/1WWZK1hQ9fw5xng3QNhwQ0g?pwd=1111 
提取码:1111

数据内容

import pandas as pddf = pd.read_csv("/content/drive/MyDrive/ds/train.csv",encoding="utf-8")
facts = df['fact']
labels = df['label']print(facts[0])
print(labels [0])""" 犯人描述
罪犯吴智信,男...执行机关所提请减刑的建议,符合法律规定,本院根据该犯未履行原判财产刑的事实及其改造表现事实酌情予以减刑 12 可减刑年份
"""

解题思路

        利用 Tokenizer 建立词库,对每一个罪犯描述进行编码,之后用 pad_sequences 统一矩阵大小,用Sequential模型进行求解。

数据预处理

import re new_facts = []for fact in facts:fact = re.sub(r"[,。、;‘’]"," ",fact)new_facts.append(fact)# 替换掉描述中的标点符号print(new_facts[0])"""
'罪犯陈中盛 男 1954年xx月xx日出生 汉族 湖南省永兴县人 文盲 现在河南省新郑监狱服刑 ... '
"""

词库构建

from tensorflow.keras.preprocessing.text import Tokenizer# 词库模型构建model = Tokenizer()         
model.fit_on_texts(new_facts)word_index = model.word_index # 返回的是字典print(word_index)
"""
{'确有悔改表现': 1,'本院认为': 2,'现已审理终结': 3,'经审理查明': 4,'男': 5,'汉族': 6,'文化': 7,'接受教育改造': 8,'报送本院审理': 9,'努力完成劳动任务': 10,'本院依法组成合议庭进行了审理': 11,'接受教育改造;积极参加思想': 12,'初中文化': 13,'职业技术教育;积极参加劳动': 14,'积极参加思想': 15,'判决发生法律效力后交付执行': 16,
}
"""print(len(word_index)) # 479374

数据转换

from sklearn.model_selection import train_test_split
from tensorflow.keras.preprocessing.sequence import pad_sequences# 划分训练和测试集
X_train,X_test,y_train,y_test = train_test_split(new_facts,labels)# 将每个描述转换成矩阵
X_train_fit = model.texts_to_sequences(X_train)
X_test_fit = model.texts_to_sequences(X_test)# 输出最大矩阵长度
i = []
for j in X_test_fit:i.append(len(j))print(max(i))# pad_sequences 填充 统一矩阵大小 padding="post" 表示在后方填充X_train_padd = pad_sequences(X_train_fit,maxlen=250,padding="post")
X_test_padd = pad_sequences(X_test_fit,maxlen=250,padding="post")

模型构建与训练

import tensorflow as tf
from tensorflow.keras.layers import Dense,Embedding,GlobalAveragePooling1D,Dropoutmodel1 = tf.keras.Sequential([Embedding(500000,64,input_length=250), # 嵌入层 (词库大小,嵌入向量的维度,输入大小)GlobalAveragePooling1D(),              # 平均池化层 返回平均值Dense(32,activation="relu"),Dropout(0.2),Dense(1)
])
model1.summary()model1.compile(optimizer="adam",loss="mse",metrics=['mean_absolute_error','accuracy'])history = model1.fit(X_train_padd , y_train, batch_size=512, epochs=20, validation_data=(X_test_padd,y_test),verbose=1)"""
Model: "sequential_2"
_________________________________________________________________Layer (type)                Output Shape              Param #   
=================================================================embedding_3 (Embedding)     (None, 250, 64)           32000000  global_average_pooling1d_3  (None, 64)                0         (GlobalAveragePooling1D)                                       dense_4 (Dense)             (None, 32)                2080      dropout_2 (Dropout)         (None, 32)                0         dense_5 (Dense)             (None, 1)                 33        =================================================================
Total params: 32002113 (122.08 MB)
Trainable params: 32002113 (122.08 MB)
Non-trainable params: 0 (0.00 Byte)
_________________________________________________________________
""""""
...
Epoch 100/100
74/74 - 1s - loss: 1.3636 - mean_absolute_error: 0.7654 - accuracy: 0.0255 - val_loss: 8.7319 - val_mean_absolute_error: 2.1841 - val_accuracy: 0.0136 - 1s/epoch - 20ms/step
"""

缺陷与不足

        验证集的损失值太大,准确度太低,这也是我迷惑的点,可能数据处理时没有处理完全,也有可能是模型构建方式不全面,麻烦大佬可以在评论区指点下!!!

原竞赛网址 欢迎各位来学习和挑战

罪犯减刑时长预测 Competitions - DataFountainDataFountain(简称DF平台)是国内领先的数据科学竞赛创新平台之一,提供数据竞赛/AI算法大赛、数据集、项目实训、在线编程等服务。icon-default.png?t=N7T8https://www.datafountain.cn/competitions/611

这篇关于【NLP】通过罪犯在狱中表现的描述来预测罪犯可以被减刑的年份(DF原题)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/477985

相关文章

zblog自定义关键词和描述,zblog做seo优化必备插件

zblog自定义关键词和描述,zblog做seo优化必备插件     首先说下用到的一款插件:CustomMeta自定义数据字段 ,我们这里用到的版本是1.1,1.1+版增加了列表页标签支持!     插件介绍:文章,分类等添加自定义数据字段。1.1+版适用于 Z-Blog 2.0 B2以上版本。     在zblog2.0beta1里面,这个插件是集成到了程序里面,beta2里面默认没有了

Tensorflow lstm实现的小说撰写预测

最近,在研究深度学习方面的知识,结合Tensorflow,完成了基于lstm的小说预测程序demo。 lstm是改进的RNN,具有长期记忆功能,相对于RNN,增加了多个门来控制输入与输出。原理方面的知识网上很多,在此,我只是将我短暂学习的tensorflow写一个预测小说的demo,如果有错误,还望大家指出。 1、将小说进行分词,去除空格,建立词汇表与id的字典,生成初始输入模型的x与y d

临床基础两手抓!这个12+神经网络模型太贪了,免疫治疗预测、通路重要性、基因重要性、通路交互作用性全部拿下!

生信碱移 IRnet介绍 用于预测病人免疫治疗反应类型的生物过程嵌入神经网络,提供通路、通路交互、基因重要性的多重可解释性评估。 临床实践中常常遇到许多复杂的问题,常见的两种是: 二分类或多分类:预测患者对治疗有无耐受(二分类)、判断患者的疾病分级(多分类); 连续数值的预测:预测癌症病人的风险、预测患者的白细胞数值水平; 尽管传统的机器学习提供了高效的建模预测与初步的特征重

结合Python与GUI实现比赛预测与游戏数据分析

在现代软件开发中,用户界面设计和数据处理紧密结合,以提升用户体验和功能性。本篇博客将基于Python代码和相关数据分析进行讨论,尤其是如何通过PyQt5等图形界面库实现交互式功能。同时,我们将探讨如何通过嵌入式预测模型为用户提供赛果预测服务。 本文的主要内容包括: 基于PyQt5的图形用户界面设计。结合数据进行比赛预测。文件处理和数据分析流程。 1. PyQt5 图形用户界面设计

CNN-LSTM模型中应用贝叶斯推断进行时间序列预测

这篇论文的标题是《在混合CNN-LSTM模型中应用贝叶斯推断进行时间序列预测》,作者是Thi-Lich Nghiem, Viet-Duc Le, Thi-Lan Le, Pierre Maréchal, Daniel Delahaye, Andrija Vidosavljevic。论文发表在2022年10月于越南富国岛举行的国际多媒体分析与模式识别会议(MAPR)上。 摘要部分提到,卷积

el-date-picker年份选择默认值为当前年,并且将获取时间转为年月日格式

<el-date-pickervalue-format="yyyy"v-model="leftQuery.year":disabled="timeArr && timeArr.length != 0 ? true : false"type="year"placeholder="选择年"@change=changeYear:picker-options="pickerOptions"></el-da

多维时序 | Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多变量时间序列预测

多维时序 | Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多变量时间序列预测 目录 多维时序 | Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多变量时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于SSA-SVR麻雀算法优化支持向量机的数据多变量时间序列预测(完整源码和数据) 2.SS

力扣 | 递归 | 区间上的动态规划 | 486. 预测赢家

文章目录 一、递归二、区间动态规划 LeetCode:486. 预测赢家 一、递归 注意到本题数据范围为 1 < = n < = 20 1<=n<=20 1<=n<=20,因此可以使用递归枚举选择方式,时间复杂度为 2 20 = 1024 ∗ 1024 = 1048576 = 1.05 × 1 0 6 2^{20} = 1024*1024=1048576=1.05 × 10^

回归预测 | MATLAB实现PSO-LSTM(粒子群优化长短期记忆神经网络)多输入单输出

回归预测 | MATLAB实现PSO-LSTM(粒子群优化长短期记忆神经网络)多输入单输出 目录 回归预测 | MATLAB实现PSO-LSTM(粒子群优化长短期记忆神经网络)多输入单输出预测效果基本介绍模型介绍PSO模型LSTM模型PSO-LSTM模型 程序设计参考资料致谢 预测效果 Matlab实现PSO-LSTM多变量回归预测 1.input和outpu

时序预测|变分模态分解-双向时域卷积-双向门控单元-注意力机制多变量时间序列预测VMD-BiTCN-BiGRU-Attention

时序预测|变分模态分解-双向时域卷积-双向门控单元-注意力机制多变量时间序列预测VMD-BiTCN-BiGRU-Attention 文章目录 一、基本原理1. 变分模态分解(VMD)2. 双向时域卷积(BiTCN)3. 双向门控单元(BiGRU)4. 注意力机制(Attention)总结流程 二、实验结果三、核心代码四、代码获取五、总结 时序预测|变分模态分解-双向时域卷积