前言
大家好,我是阿光。
本专栏整理了《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模型