【PyTorch深度学习项目实战100例】—— 基于TF-IDF与逻辑回归模型实现文本实体关系抽取任务 | 第24例

770 阅读3分钟

前言

大家好,我是阿光。

本专栏整理了《PyTorch深度学习项目实战100例》,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集。

正在更新中~ ✨

🚨 我的项目环境:

  • 平台:Windows10
  • 语言环境:python3.7
  • 编译器:PyCharm
  • PyTorch版本:1.8.1

💥 项目专栏:【PyTorch深度学习项目实战100例】


一、基于TF-IDF与逻辑回归模型实现文本实体关系抽取任务

本项目实现一个简单的文本实体关系抽取的方法,通过一个英文文本实体关系抽取的实例来介绍关系抽取的整个流程,包括文本数据的加载以及预处理,之后通过特征工程提取文本的特征,构建机器学习模型并对模型进行训练,最后通过训练好的模型对测试数据进行预测。此实例的目标是通过文本来判断已知实体对的关系,实体对之间的关系分为10个类别,每个类别使用一个数字编码表示。 在这里插入图片描述

二、数据集介绍

「简述」

训练集中有8000个句子,测试集中有2717个句子。

「数据介绍」

FULL_TRAIN.txt train.txt train_result.txt train_result_full.txt

「内容范围」

FULL_TEST.txt test.txt test_result.txt test_result_full.txt

「数据来源」

来自官方网站semeval2.fbk.eu/semeval2.ph…

「探索方向」

SemEval-2010 Task#8的两个工具 官方输出文件格式检查器:semeval2010_task8_format_checker.pl SemEval-2010任务8的官方得分手:semeval2010_task8_scorer-v1.2.pl

四、加载数据

# 加载数据
def read_data(filepath):
    labels_dict = {'Cause-Effect''0''Instrument-Agency''1''Product-Producer''2',
                   'Content-Container''3''Entity-Origin''4''Entity-Destination''5',
                   'Component-Whole''6''Member-Collection''7''Message-Topic''8',
                   'Other''9'}

    label_list, text_list = [], []
    with open(filepath, 'r', encoding='utf-8') as f:
        for line in f:
            text = line.strip().split('\t')
            label_list.append(labels_dict[text[2]])
            text_list.append(text[3])

    return text_list, label_list

五、构建tfidf模型

在这里插入图片描述

在这里插入图片描述

「1.tf-idf的物理意义」 tf-idf通过词频统计的方法得到某个词对一篇文档的重要性大小(没有考虑语义信息)。

「2.tf值(term frequency)」 n表示某个词在文档中出现的次数,N表示文档中所有词出现的次数总和,这是一个归一化的过程,目的是消除文档篇幅长短上的差异。

「3.idf值(inverse document frequency)」 D表示语料中所有的文档总数,d表示语料中出现某个词的文档数量,公式中的1是为了防止分母为0的情况,lg是以10为底的对数,具有类似于增强区分度的作用(拥挤的值尽可能散开,离群的值尽可能合拢)。

「4.tfidf值」 最终tfidf值为两者的乘积

在这里插入图片描述

在这里插入图片描述

# 3.定义tfidf模型
tfidf_model = TfidfVectorizer(stop_words='english').fit(x_train)
print("词典大小 {}".format(len(tfidf_model.vocabulary_)))

# 4.将数据集转成数值向量
x_train_vec = tfidf_model.transform(x_train)
x_val_vec = tfidf_model.transform(x_val)

六、定义回归模型

5.定义线性模型
model = LogisticRegression(solver='lbfgs')
model.fit(x_train_vec, y_train)
print('Finished Training')

七、模型预测

7.模型测试
y_pred = model.predict(x_train_vec)
acc = accuracy_score(y_train, y_pred)
print("训练集准确率: {}".format(acc))
y_pred = model.predict(x_val_vec)
acc = accuracy_score(y_val, y_pred)
print("验证集准确率: {}".format(acc))

完整源码

【PyTorch深度学习项目实战100例】—— 基于TF-IDF与逻辑回归模型实现文本实体关系抽取任务 | 第24例_Bi 8 Bo的博客-CSDN博客_pytorch tfidf + lr模型