PNL | Clasificación de textos abstractos en papel

Desafío de clasificación de texto y extracción de palabras clave basado en resúmenes en papel
2023 Concurso de desarrolladores de IA iFLYTEK: plataforma abierta Xunfei

Requisitos ambientales: Anaconda-JupyterNotebook o Baidu AIStudio

Análisis de las preguntas de la competencia:

[Tarea de clasificación binaria de texto] Según la comprensión de información como el resumen del artículo, el artículo se divide en una de las dos categorías de 0-1.
[Tarea de reconocimiento de palabras clave de texto] Identificar y extraer palabras clave relacionadas con el contenido del artículo de un artículo determinado.

Muestra de datos: título, autor, resumen, palabras clave, [etiqueta] 0-1

Cuando se ejecuta con una clave, elimine primero el csv (es el resultado de la operación)

Instale nltk [Reemplace la fuente espejo para evitar errores de instalación]

!pip install nltk -i http://mirrors.aliyun.com/pypi/simple/  --trusted-host mirrors.aliyun.com
# 导入pandas用于读取表格数据
import pandas as pd

# 导入BOW(词袋模型)
from sklearn.feature_extraction.text import CountVectorizer
#可以替换为TfidfVectorizer(TF-IDF(词频-逆文档频率))
#注意上下文要同时修改,亲测后者效果更佳

# 导入LogisticRegression回归模型
from sklearn.linear_model import LogisticRegression

# 过滤警告消息
from warnings import simplefilter
from sklearn.exceptions import ConvergenceWarning
simplefilter("ignore", category=ConvergenceWarning)


# 读取数据集
train = pd.read_csv('/home/aistudio/data/data231041/train.csv')
train['title'] = train['title'].fillna('')
train['abstract'] = train['abstract'].fillna('')

test = pd.read_csv('/home/aistudio/data/data231041/testB.csv')
test['title'] = test['title'].fillna('')
test['abstract'] = test['abstract'].fillna('')


# 提取文本特征,生成训练集与测试集
train['text'] = train['title'].fillna('') + ' ' +  train['author'].fillna('') + ' ' + train['abstract'].fillna('')+ ' ' + train['Keywords'].fillna('')
test['text'] = test['title'].fillna('') + ' ' +  test['author'].fillna('') + ' ' + test['abstract'].fillna('')

vector = CountVectorizer().fit(train['text'])
train_vector = vector.transform(train['text'])
test_vector = vector.transform(test['text'])


# 引入模型
model = LogisticRegression()

# 开始训练,这里可以考虑修改默认的batch_size与epoch来取得更好的效果
model.fit(train_vector, train['label'])

# 利用模型对测试集label标签进行预测
test['label'] = model.predict(test_vector)
test['Keywords'] = test['title'].fillna('')
test[['uuid','Keywords','label']].to_csv('submit_task1.csv', index=None)

Método ndarray.finalall() : llenar valores vacíos

Comandos comunes para el procesamiento de datos de pandas_ndarray fillna_hellosc01's Blog-CSDN Blog

Método de base : función de extracción de bolsa de palabras BOW-predicción de regresión logística LR

Métodos de mejora : TF-IDF, SVM, épocas

# TfidfVectorizer(TF-IDF(词频-逆文档频率))
from sklearn.feature_extraction.text import TfidfVectorizer
# 导入支持向量机分类器
from sklearn.svm import SVC

#创建SVM训练模型 
model = SVC(kernel='linear', C=1)

# 利用模型对测试集label标签进行预测
test['label'] = model.predict(test_vector)
test['Keywords'] = test['title'].fillna('')
test[['uuid','Keywords','label']].to_csv('submit_task2.csv', index=None)

por la luz

Supongo que te gusta

Origin blog.csdn.net/qq_51314244/article/details/132368153
Recomendado
Clasificación