文章目录

  • introduction
  • chp2: fmm分词&svg
  • chp3: 维基百科语料库处理
  • chp4: 情感分类
  • chp5: cbow, skipgram...
  • chp6: 动态词向量,ELMo
  • chp7: 预训练语言模型(Pre-trained Language Model, PLM)GPT & BERT

introduction

从github中下载代码包或从我的某度网盘链接中下载我处理好的代码包plm-nlp-code-main,其中有chp2~chp8的示例代码。
注意右下角的解释器,选择自己下载好pytorch的环境,笔者这里是名为python3.7的环境(可以起任意名)。

chp2: fmm分词&svg

Page23:最简单的分词算法:正向最大匹配(Forward Maximum Matching, FMM)
i.e. 从前向后扫描桔子中的字符串,尽量找到词典中较长的单词作为分词的结果。
fmm_word_seg.py

Page16:svd.py奇异值分解,这里正确显示需要添加字体,详见chp2代码调试

chp3: 维基百科语料库处理

下载的文本text文件夹、wikiextractor工具、语料库压缩包均放在chp3同级的chp3-src目录中。注意,如果要用pycharm打开项目,那么应当单独打开chp3,否则如果打开项目中包含了text语料库,则会消耗大量时间进行编制索引 indexing (笔者进行了一个下午都没搞完AA文件夹,所以大概是不可行)
page63:

  1. convert_t2s.py
    先根据chp3代码调试,对convert_t2s.py进行修改,对windows适配。
    在plm-nlp-code-main文件夹中打开Terminal
    在命令行工具中
python .\chp3\convert_t2s.py .\chp3-src\text\AA\wiki_00 > output_file

原先\text\AA\wiki_00中的繁体文本

变为了output_file中的简体文本

2. wikidata_cleaning.py
f_in = open(sys.argv[1], 'r')添加为f_in = open(sys.argv[1], 'r', encoding="utf-8")
对结尾print(line)添加为print(line.encode('GBK','ignore').decode('GBK'))

同样是在plm-nlp-code-main目录中写命令:

 python .\chp3\wikidata_cleaning.py .\chp3-src\text\AA\wiki_00 > output_file2

可以将wiki_00数据进行清洗,去掉wiki_00中的括号等,打开output_file2可以看到括号等被去除了。

chp4: 情感分类

这里需要nltk工具包和语料,参考这里nltk的安装或者里nltk的安装2
简而言之,就是下载好nltk_data,把它放到合适的目录中即可。有点大,3G,并且是零散的小文件组合而成,所以复制或下载的速度都比较慢。(打个预防针,usb2.0的U盘拷贝都要用半个小时)

然后将代码分别运行即可。
cnn_sent_polarity.py:

lstm_postag.py:

lstm_sent_polarity.py:

mlp_sent_polarity.py:

transformer_postag.py:

transformer_sent_polarity.py:

chp5: cbow, skipgram…

先运行cbow, glove, 产生.vec文件,再运行evaluate等。
cbow.py

glove.py

evaluate.py

ffnnlm.py

rnnlm.py 循环神经网络语言模型
这段代码绝了,用 机带RAM 64GB的工作站,还是out of memory,放弃。
RuntimeError: [enforce fail at ..\c10\core\CPUAllocator.cpp:72] data. DefaultCPUAllocator: not enough memory: you tried to allocate 26734632960 bytes. Buy new RAM!
like this:

sgns.py skip-gram with negative-sample

skipgram.py

chp6: 动态词向量,ELMo

算力受限,不用自己的预料训练了,试用AI2发布的AllenNLP 工具包。
在anaconda的prompt shell中pip install allennlp安装
如图:

之后项目中新建allen_nlp.py文件,放入代码:

from allennlp.modules.elmo import Elmo, batch_to_idsoptions_file = "https://allennlp.s3.amazonaws.com/models/elmo/2x4096_512_2048cnn_2xhighway/elmo_2x4096_512_2048cnn_2xhighway_options.json"
weights_file = "https://allennlp.s3.amazonaws.com/models/elmo/2x4096_512_2048cnn_2xhighway/elmo_2x4096_512_2048cnn_2xhighway_weights.hdf5"
elmo = Elmo(options_file, weights_file, num_output_representations=1, dropout=0)sentences = [['I', 'love', 'Elmo'], ['Hello', 'Elmo']]
character_ids = batch_to_ids(sentences)
print(character_ids)
embeddings = elmo(character_ids)
print(embeddings)

chp7: 预训练语言模型(Pre-trained Language Model, PLM)GPT & BERT

主流GPU均需要数小时的运行。普通笔记本还是别跑了。。。

代码调试全指南-自然语言处理-基于预训练模型的方法,车万翔相关推荐

  1. 自然语言处理:基于预训练模型的方法(一)

    自然语言处理:基于预训练模型的方法 1.2 自然语言处理的难点 1.3 自然语言处理任务体系 1.2 自然语言处理的难点 1.2.1 抽象性 语言是由抽象符号构成的,每个符号背后都对应着现实世界或人们 ...

  2. 《自然语言处理:基于预训练模型的方法》读书笔记:第2章 自然语言处理基础

    目录 第2章 自然语言处理基础 2.1 文本的表示 2.1.1 词的独热表示 2.1.2 词的分布式表示 2.1.3 词嵌入表示 2.1.4 文本的词袋表示 2.2 自然语言处理任务 2.2.1 语言 ...

  3. 《自然语言处理:基于预训练模型的方法》第七章 预训练语言模型

    预训练模型并不是自然语言处理领域的"首创"技术. 在计算机视觉领域,通常会使用ImageNet进行一次预训练,让模型从海量图像中充分学习如何从图像中提取特征.然后,会根据具体的任务 ...

  4. 【自然语言处理(NLP)】基于预训练模型的机器阅读理解

    [自然语言处理(NLP)]基于预训练模型的机器阅读理解 作者简介:在校大学生一枚,华为云享专家,阿里云专家博主,腾云先锋(TDP)成员,云曦智划项目总负责人,全国高等学校计算机教学与产业实践资源建设专 ...

  5. 基于预训练模型 ERNIE 实现语义匹配

    基于预训练模型 ERNIE 实现语义匹配 本案例介绍 NLP 最基本的任务类型之一 -- 文本语义匹配,并且基于 PaddleNLP 使用百度开源的预训练模型 ERNIE1.0 为基础训练效果优异的语 ...

  6. 论文阅读:Pre-trained Models for Natural Language Processing: A Survey 综述:自然语言处理的预训练模型

    Pre-trained Models for Natural Language Processing: A Survey 综述:自然语言处理的预训练模型 目录 Pre-trained Models f ...

  7. CV之NS之VGG16:基于预训练模型VGG16训练COCO的train2014数据集实现训练《神奈川冲浪里》风格配置yml文件

    CV之NS之VGG16:基于预训练模型VGG16训练COCO的train2014数据集实现训练<神奈川冲浪里>风格配置yml文件 目录 一.训练 1.<神奈川冲浪里>风格 2. ...

  8. 基于预训练模型的军事领域命名实体识别研究

    摘要 [目的]为了解决开源非结构化军事领域数据的命名实体识别问题.[方法]本文提出基于预训练模型(Bidirectional Encoder Representations from Transfor ...

  9. NeurIPS 2020 | MiniLM:通用预训练模型压缩方法

    基本信息 机构: 微软研究院 作者: Wenhui Wang, Furu Wei, Li Dong, Hangbo Bao, Nan Yang, Ming Zhou 论文地址: https://arx ...

  10. Perturbed Masking:和参数无关的预训练模型分析方法

    ©PaperWeekly 原创 · 作者|蔡杰 学校|北京大学硕士生 研究方向|问答系统 论文标题: Perturbed Masking: Parameter-free Probing for Ana ...

最新文章

  1. VC env.Please set `DISTUTILS_USE_SDK=1`
  2. 51单片机多任务操作系统的原理与实现
  3. python中的@符号的作用
  4. 启动ubuntu无反应_推荐一款优秀的Python IDE以及在Ubuntu下的安装
  5. 2020 ICPC亚洲区域赛(沈阳)F-Kobolds and Catacombs(思维+模拟)
  6. .jdeveloper_在JDeveloper 12.1.3中为WebSocket使用Java API
  7. 用来做 favicon 的站点
  8. 详解数据治理相关的7个术语和名词
  9. 求解两个经纬点之间的距离和角度(mm级精度)
  10. crypto在web的使用
  11. bzoj1724[Usaco2006 Nov]Fence Repair 切割木板*
  12. java通过证书获取CN_java – 从证书DN解析CN [重复]
  13. 怎么用计算机画图工具,使用电脑自带画图工具(画图软件怎样操作的方法
  14. 微商引流脚本,微商怎样选择正确的引流脚本?
  15. 含有一个量词的命题的否命题_高一 | 数学必修一全称量词与存在量词知识点总结...
  16. 微信表情的字符编号完整版【图文并茂哦!】
  17. PyTorch搭建卷积神经网络(CNN)进行视频行为识别(附源码和数据集)
  18. php微信卡券接口,核销卡券
  19. matlab绘图:将图导出在ppt上使用的三维矢量图
  20. 摸爬滚打大半年,我是如何从零基础进阶到渗透测试工程师

热门文章

  1. 【燕秀工具箱】模具辅助下载安装使用手册
  2. 图解项目管理详细流程全景图
  3. 阿里云上做二级、三级等保的基础概念、方案以及价格
  4. iOS GPS定位减小精度误差的几种处理方法
  5. Reflex WMS入门系列三十:不使用RF功能做上架
  6. Windows如何对硬盘进行分区?
  7. php 获取货币符号,如何通过货币符号CURRENCY 获取对应的 LOCALE 信息。
  8. 【线性代数】矩阵的特征值分解(对角化、谱分解)
  9. 基于codebook背景建模的运动目标检测
  10. 2000份简历模板 唯美时尚简约个人简历模板 英文简历模板 简历封面 自荐信下载