NLP | Klassifizierung abstrakter Papiertexte

Herausforderung zur Textklassifizierung und Schlüsselwortextraktion basierend auf Paper Abstracts
2023 iFLYTEK AI Developer Contest – Xunfei Open Platform

Umgebungsanforderungen: Anaconda-JupyterNotebook oder Baidu AIStudio

Analyse von Wettbewerbsfragen:

[Aufgabe zur binären Textklassifizierung] Entsprechend dem Verständnis von Informationen wie der Zusammenfassung des Papiers wird das Papier in eine der beiden Kategorien 0-1 unterteilt.
[Aufgabe zur Erkennung von Textschlüsselwörtern] Identifizieren und extrahieren Sie Schlüsselwörter, die sich auf den Inhalt des Artikels beziehen, aus einem bestimmten Artikel.

Datenbeispiel: Titel, Autor, Zusammenfassung, Schlüsselwörter, [Beschriftung] 0-1

Wenn Sie mit einem Schlüssel arbeiten, löschen Sie zuerst die CSV-Datei (dies ist das Ergebnis des Vorgangs).

Installieren Sie nltk [Ersetzen Sie die Spiegelquelle, um Installationsfehler zu vermeiden]

!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)

ndarray.finalall()-Methode : Füllen leerer Werte

Allgemeine Befehle für Pandas Data processing_ndarray fillna_hellosc01s Blog-CSDN-Blog

Methode von Basedline : BOW-Wortbeutelextraktionsfunktion – LR logistische Regressionsvorhersage

Verbesserungsmethoden : TF-IDF, SVM, Epochen

# 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)

durch Licht

おすすめ

転載: blog.csdn.net/qq_51314244/article/details/132368153
おすすめ