基于 word2vec 实现文本分类
目录
基于 word2vec 实现文本分类 1
实验目的及实验内容 1
实验目的: 1
实验内容: 1
原理分析: 1
实验环境 6
实验结果总结 17
实验环境
(本次实验所使用的器件、仪器设备等的情况)
处理器:Intel® Core™ i5-9300H CPU @ 2.40GHz 2.40 GHz
操作系统环境:Windows 10 家庭中文版 x64 19042.867
编程语言:Python 3.8
其他环境:16 GB 运行内存
IDE 及包管理器:JetBrains PyCharm 2020.1 x64, anaconda 3 for Windows(conda 4.9.0)
实验步骤及实验过程分析
(详细记录实验过程中发生的故障和问题,进行故障分析,说明故障排除的过程及方法。根据具体实验,记录、整理相应的数据表格、绘制曲线、波形等)
说明:
由于随机数种子设置等情况,本文转载自http://www.biyezuopin.vip/onews.asp?id=16705本篇实验报告所记录的内容仅为写报告时(2021/04/23)的情况,可能与实际实验时(2021/04/18)结果有出入。
一切以实际运行时所得到的结果为准。
基于 word2vec 实现文本分类
安装并导入工具包:本实验主要使用到的工具包有 gensim 包,jieba 包,numpy 包和 r e 包等。
# -*- coding: utf-8 -*-
from utils_w2v import TASK
import matplotlib.pyplot as plt
import numpy as np
import os
import torch
def main():
if not os.path.exists('../data'):
print('No source data file!')
print("Need folder named 'data' unzipped from 'data.zip'!")
return
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
np.random.seed(100)
torch.cuda.manual_seed(100)
rate = 0.7
keyword_num_list = [1, 3, 5, 10, 15, 20, 30, 50, 100]
tar = TASK()
tar.get_corpus()
tar.get_model()
tar.train_frequency(rate)
print('\n计算准确率')
acc_list = []
for keyword_num in keyword_num_list:
average_class_dic = tar.average_class_vector(keyword_num)
res = tar.acc(keyword_num, rate, average_class_dic)
acc_list.append(round(res, 3))
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.set_title('关键词个数与准确率间的关系')
ax.set_xlabel('关键词个数')
ax.set_ylabel('准确率')
plt.plot(keyword_num_list, acc_list, color='black', markerfacecolor='r', marker='o')
for a, b in zip(keyword_num_list, acc_list):
plt.text(a, b, (a, b), ha='center', va='bottom', fontsize=10)
plt.show()
if __name__ == '__main__':
main()