【自然语言处理(NLP)】基于Word2Vec的语言模型实践

news2024/11/26 2:41:50

【自然语言处理(NLP)】基于Word2Vec的语言模型实践


在这里插入图片描述


作者简介:在校大学生一枚,华为云享专家,阿里云专家博主,腾云先锋(TDP)成员,云曦智划项目总负责人,全国高等学校计算机教学与产业实践资源建设专家委员会(TIPCC)志愿者,以及编程爱好者,期待和大家一起学习,一起进步~
.
博客主页ぃ灵彧が的学习日志
.
本文专栏人工智能
.
专栏寄语:若你决定灿烂,山无遮,海无拦
.
在这里插入图片描述

文章目录

  • 【自然语言处理(NLP)】基于Word2Vec的语言模型实践
  • 前言
    • (一)、任务描述
    • (二)、效果说明
  • 一、数据准备
    • (一)、数据集下载
    • (二)、模型调用
      • 训练或fine-tune
  • 二、进阶使用
    • (一)、任务定义与建模
    • (二)、模型原理介绍
    • (三)、数据格式说明
    • (四)、目录结构
  • 三、组建模型
    • (一)、自定义数据
    • (二)、网络结构更改
  • 四、相关代码
    • (一)、解压数据集
    • (二)、模型训练
    • (三)、模型预测
  • 总结


前言

(一)、任务描述

本文主要介绍基于lstm的语言的模型的实现,给定一个输入词序列(中文分词、英文tokenize),计算其ppl(语言模型困惑度,用户表示句子的流利程度),基于循环神经网络语言模型的介绍可以参阅论文。相对于传统的方法,基于循环神经网络的方法能够更好的解决稀疏词的问题。


(二)、效果说明

在small meidum large三个不同配置情况的ppl对比:

small configtrainvalidtest
paddle40.962118.111112.617
tensorflow40.492118.329113.788
medium configtrainvalidtest
paddle45.62087.39883.682
tensorflow45.59487.36384.015
large configtrainvalidtest
paddle37.22182.35878.137
tensorflow38.34282.31178.121

一、数据准备


(一)、数据集下载

此任务的数据集合是采用ptb dataset,下载地址为: http://www.fit.vutbr.cz/~imikolov/rnnlm/simple-examples.tgz


(二)、模型调用

训练或fine-tune

任务训练启动命令如下:

!python train.py --use_gpu True --data_path data/data11325/simple-examples/data --model_type small --rnn_model basic_lstm
  • 需要指定数据的目录,默认训练文件名为 ptb.train.txt,可用–train_file指定;默认验证文件名为 ptb.valid.txt,可用–eval_file指定;默认测试文件名为 ptb.test.txt,可用–test_file指定
  • 模型的大小(默认为small,用户可以选择medium, 或者large)
  • 模型的类型(默认为static,可选项static|padding|cudnn|basic_lstm)
  • batch大小默认和模型大小有关,可以通过–batch_size指定
  • 训练轮数默认和模型大小有关,可以通过–max_epoch指定
  • 默认将模型保存在当前目录的models目录下

二、进阶使用

(一)、任务定义与建模

此任务目的是给定一个输入的词序列,预测下一个词出现的概率。


(二)、模型原理介绍

此任务采用了序列任务常用的rnn网络,实现了一个两层的lstm网络,然后lstm的结果去预测下一个词出现的概率。计算的每一个概率和实际下一个词的交叉熵,然后求和,做e的次幂,得到困惑度ppl。当前计算方式和句子的长度有关,仍需要继续优化。

由于数据的特殊性,每一个batch的last hidden和last cell会被作为下一个batch 的init hidden 和 init cell,数据的特殊性下节会介绍。


(三)、数据格式说明

此任务的数据格式比较简单,每一行为一个已经分好词(英文的tokenize)的词序列。

目前的句子示例如下图所示:

aer banknote berlitz calloway centrust cluett fromstein gitano guterman hydro-quebec ipo kia memotec mlx nahb punts rake regatta rubens sim snack-food ssangyong swapo wachter
pierre <unk> N years old will join the board as a nonexecutive director nov. N
mr. <unk> is chairman of <unk> n.v. the dutch publishing group

特殊说明:ptb的数据比较特殊,ptb的数据来源于一些文章,相邻的句子可能来源于一个段落或者相邻的段落,ptb 数据不能做shuffle


(四)、目录结构

.
├── train.py             # 训练代码
├── reader.py            # 数据读取
├── args.py              # 参数读取
├── config.py              # 训练配置
├── data                # 数据下载
├── language_model.py  		  # 模型定义文件

三、组建模型

(一)、自定义数据

关于数据,如果可以把自己的数据先进行分词(或者tokenize),然后放入到data目录下,并修改reader.py中文件的名称,如果句子之间没有关联,用户可以将train.py中更新的代码注释掉。

   init_hidden = np.array(fetch_outs[1])
   init_cell = np.array(fetch_outs[2])

(二)、网络结构更改

网络只实现了基于lstm的语言模型,用户可以自己的需求更换为gru或者self等网络结构,这些实现都是在language_model.py 中定义


四、相关代码

(一)、解压数据集

# 解压数据集
!cd data/data11325 && unzip -qo simple-examples.zip


(二)、模型训练

# 运行训练,使用GPU,并且使用小模型
# 训练轮数也限制到3轮,以避免日志过多
# 最终可以通过提高训练轮数达到比较好的效果
!echo "training"
!python train.py --use_gpu True --data_path data/data11325/simple-examples/data --model_type small --rnn_model basic_lstm --max_epoch=3

部分输出结果如下图1所示:

在这里插入图片描述


(三)、模型预测

# 加模型进行预测
!python infer.py --rnn_model basic_lstm

输出结果如下图2所示:

在这里插入图片描述


总结

本系列文章内容为根据清华社出版的《自然语言处理实践》所作的相关笔记和感悟,其中代码均为基于百度飞桨开发,若有任何侵权和不妥之处,请私信于我,定积极配合处理,看到必回!!!

最后,引用本次活动的一句话,来作为文章的结语~( ̄▽ ̄~)~:

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。

ps:更多精彩内容还请进入本文专栏人工智能,进行查看,欢迎大家支持与指教啊~( ̄▽ ̄~)~

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/52178.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

jenkins学习-安装配置

1.下载安装 打开地址jenkins.io,进入页面&#xff0c;点击download按钮&#xff0c;计入下载页面&#xff0c;选择war架包下载 2.下载地址2&#xff1a;https://get.jenkins.io/war/ 下载版本&#xff1a;2.346.3 3控制台切换到架包路径&#xff0c;执行&#xff1a;Java -…

Java学习之super关键字

目录 一、super的作用 二、基本语法 第一条 第二条 第三条 三、super便利/细节 第一条 第二条 第一种&#xff1a;直接调用 第二种&#xff1a;this 第三种&#xff1a;super 第三条 四、this和super的比较 一、super的作用 super 代表父类的引用&#xff0c; 用于访…

Vue3表单输入绑定生命周期

官网&#xff1a;https://cn.vuejs.org/guide/essentials/forms.html#checkbox 复选框 在这个例子中&#xff0c;checkedNames 数组将始终包含所有当前被选中的框的值。 const checkedNames ref([])<div>Checked names: {{ checkedNames }}</div><input type…

docker镜像打包上传阿里云镜像仓库

阿里云镜像仓库说明&#xff1a; 将镜像推送到Registry $ docker login --usernamealiyun0398513152 rz-dt-image-server-registry.cn-shanghai.cr.aliyuncs.com $ docker tag [ImageId] rz-dt-image-server-registry.cn-shanghai.cr.aliyuncs.com/rz-dt/k8s-springboot-demo:[…

澜起科技发布业界首款DDR5第三子代寄存时钟驱动器工程样片

上海—2022年12月1日&#xff0c;澜起科技宣布在业界率先推出DDR5第三子代寄存时钟驱动器&#xff08;简称RCD或DDR5 RCD03&#xff09;工程样片&#xff0c;并已向业界主流内存厂商送样&#xff0c;该产品将用于新一代服务器内存模组。 澜起科技DDR5第三子代寄存时钟驱动器 D…

堆排序和Top-K问题(C语言实现)

文章目录&#xff1a;1.堆排序1.1向上调整和向下调整建堆对比1.2堆排序实现1.2.1升序1.2.2降序2.Top-K问题2.1解决思路2.2代码实现前面的文章讲了堆的结构和基础接口实现&#xff0c;不熟的友友们可以去看看堆&#xff08;C语言实现&#xff09;&#xff0c;点击跳转 1.堆排序 …

Jenkins pipeline stash实现文件跨节点共享

概述 stas unstash 函数允许在流水线的节点间和/或阶段间保存和获取&#xff08;分别地&#xff09;文件。它们的格式&#xff1a; stash(name: "<name>",includes: "<pattern>",excludes: "<pattern>") unstash("<…

狂神说Go语言学习笔记(四)

狂神说Go语言学习笔记&#xff08;一&#xff09; 狂神说Go语言学习笔记&#xff08;二&#xff09; 狂神说Go语言学习笔记&#xff08;三&#xff09; 一、什么是函数 func main() {//调用函数 函数名()fmt.Println(add(1, 2)) //3 }func add(a, b int) int {c : a breturn …

[附源码]JAVA毕业设计高校在线办公系统(系统+LW)

[附源码]JAVA毕业设计高校在线办公系统&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术…

【配电网重构】基于粒子群算法的配电网重构问题研究附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

Nacos config 配置相关

Nacos config 相关关于配置文件bootstrap和application异同点加载顺序优先级注意事项关于.properties和.yml比较加载顺序优先级别区别关于Nacos配置官方文档注意关于配置文件bootstrap和application SpringCloud项目中存在bootstrap和application两种配置&#xff0c;下面分别…

[附源码]计算机毕业设计springboot社区住户信息管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

【正版软件】Navicat Monitor 实时数据库监控工具,一套安全、简单而且无代理的远程服务器监控工具。

简言 Navicat Monitor 是一套安全、简单而且无代理的远程服务器监控工具。它具有强大的功能使你的监控发挥最大效用。受监控的服务器包括 MySQL、MariaDB 和 SQL Server&#xff0c;并与 Amazon RDS、Amazon Aurora、Oracle Cloud、Microsoft Azure、阿里云、腾讯云和华为云等…

[附源码]Python计算机毕业设计Django高校商铺管理系统论文

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

Java+JSP+MySQL基于SSM的雷锋车队管理系统的设计与实现-计算机毕业设计

项目介绍 随着我国国民经济的发展和人文素质的不断提高&#xff0c;越来越多的爱心人士出现在了社会的各种角落之中&#xff0c;其中的哥和爱心人士&#xff0c;组织了一种基于交通和车辆之间的互助的民间组织&#xff0c;这种组织叫做雷锋爱心车队&#xff0c;而且雷锋爱心车…

【lambda表达式】变量作用域和lambda 表达式的处理

变量作用域 通常&#xff0c; 你可能希望能够在 lambda 表达式中访问外围方法或类中的变量。 public static void repeatMessage(String text, int delay){ActionListener listener event ->{ System.out.println(text);Toolkit.getDefaultToolkitO.beep();}new Timer(de…

PowerShell 打开十六进制文件

1&#xff0c;打开PowerShell 2&#xff0c;进入文件所在路径 3&#xff0c;Format-Hex -Path ./bootloader.bin 4&#xff0c;效果

selenium UI使用小技巧集合

selenium这个工具就不用我多介绍了吧&#xff0c;咱们已经说过很多很多次咯&#xff0c;所以就直接上主题&#xff1a; 窗口截图 webdriver 提供了 get_screenshot_as_file()函数来截取当前窗口 from selenium import webdriver from time import sleepdriver webdriver.Ch…

超详细的Python实现MySQL数据库基本操作,今天小编给大家整理好了

一、SQL语句 (mysql 数据库中的语言) show databases;查看数据库 use "database_ name" ;进入数据库 show tables; 查看当前数据库中有哪些表 select * from "table_ name";查询数据表中的所有内容 describe "table_ name"; 查看表结构 desc &q…

外包干了2年,彻底废了...

先说一下自己的情况。大专生&#xff0c;17年通过校招进入湖南某软件公司&#xff0c;干了接近2年的点点点&#xff0c;今年年上旬&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落&#xff01;而我已经在一个企业干了五年的功能测试…