一、赛题信息
1.1 赛题描述
- 基于论文摘要进行文本分类与关键词提取任务
- 任务1:判断论文是否属于医学领域
- 任务2:从论文中提取关键词
1.2 数据格式
- 训练集和测试集为CSV格式
- 字段包括标题、作者、摘要、标签等
二、文本分类
2.1 传统方法
代码精读:
# 使用CountVectorizer进行BOW向量化
vector = CountVectorizer().fit(train['text'])
train_vector = vector.transform(train['text'])
# 逻辑回归分类模型
model = LogisticRegression()
model.fit(train_vector, train['label'])
# 对测试集预测
test['label'] = model.predict(test_vector)
- 使用CountVectorizer对文本进行词袋向量化
- 采用逻辑回归LogisticRegression作为分类模型
- 对测试集进行预测,获得预测标签
三、关键词提取
3.1 基于词频
代码精读:
def extract_keywords(title, abstract):
# 分词
words = tokenize(title + abstract)
# 统计词频
word_counts = Counter(words)
# 返回高频词
return word_counts.most_common(5)
- 对标题和摘要进行分词
- 使用Counter统计词频
- 返回词频最高的前5个词语作为关键词
3.2 基于BERT相似度
代码精读:
# 获取词向量
title_embedding = bert_model(title)
word_embeddings = bert_model(words)
# 计算相似度
similarities = cosine_similarity(title_embedding, word_embeddings)
# 返回最相似词语
keywords = [words[idx] for idx in similarities.argsort()[-5:]]
- 通过BERT模型获得标题和词语的词向量
- 计算向量间的余弦相似度
- 返回与标题向量最相似的5个词
三、关键词提取
3.1 基于词频
- 计算词频
- 设置停用词
- 返回高频词
3.2 基于BERT相似度
- 获取文档和标题的词向量
- 计算词向量的余弦相似度
- 返回与标题最相似的词
四、进阶技巧
- 尝试大模型微调,如ChatGLM
- 不断调参,结合规则提升效果
五、环境配置
- 视频和文档教程配套
- 按照步骤配置Python和Jupyter环境