代码调试全指南-自然语言处理-基于预训练模型的方法,车万翔
文章目录
- 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:
- 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.2 自然语言处理的难点 1.3 自然语言处理任务体系 1.2 自然语言处理的难点 1.2.1 抽象性 语言是由抽象符号构成的,每个符号背后都对应着现实世界或人们 ...
- 《自然语言处理:基于预训练模型的方法》读书笔记:第2章 自然语言处理基础
目录 第2章 自然语言处理基础 2.1 文本的表示 2.1.1 词的独热表示 2.1.2 词的分布式表示 2.1.3 词嵌入表示 2.1.4 文本的词袋表示 2.2 自然语言处理任务 2.2.1 语言 ...
- 《自然语言处理:基于预训练模型的方法》第七章 预训练语言模型
预训练模型并不是自然语言处理领域的"首创"技术. 在计算机视觉领域,通常会使用ImageNet进行一次预训练,让模型从海量图像中充分学习如何从图像中提取特征.然后,会根据具体的任务 ...
- 【自然语言处理(NLP)】基于预训练模型的机器阅读理解
[自然语言处理(NLP)]基于预训练模型的机器阅读理解 作者简介:在校大学生一枚,华为云享专家,阿里云专家博主,腾云先锋(TDP)成员,云曦智划项目总负责人,全国高等学校计算机教学与产业实践资源建设专 ...
- 基于预训练模型 ERNIE 实现语义匹配
基于预训练模型 ERNIE 实现语义匹配 本案例介绍 NLP 最基本的任务类型之一 -- 文本语义匹配,并且基于 PaddleNLP 使用百度开源的预训练模型 ERNIE1.0 为基础训练效果优异的语 ...
- 论文阅读:Pre-trained Models for Natural Language Processing: A Survey 综述:自然语言处理的预训练模型
Pre-trained Models for Natural Language Processing: A Survey 综述:自然语言处理的预训练模型 目录 Pre-trained Models f ...
- CV之NS之VGG16:基于预训练模型VGG16训练COCO的train2014数据集实现训练《神奈川冲浪里》风格配置yml文件
CV之NS之VGG16:基于预训练模型VGG16训练COCO的train2014数据集实现训练<神奈川冲浪里>风格配置yml文件 目录 一.训练 1.<神奈川冲浪里>风格 2. ...
- 基于预训练模型的军事领域命名实体识别研究
摘要 [目的]为了解决开源非结构化军事领域数据的命名实体识别问题.[方法]本文提出基于预训练模型(Bidirectional Encoder Representations from Transfor ...
- NeurIPS 2020 | MiniLM:通用预训练模型压缩方法
基本信息 机构: 微软研究院 作者: Wenhui Wang, Furu Wei, Li Dong, Hangbo Bao, Nan Yang, Ming Zhou 论文地址: https://arx ...
- Perturbed Masking:和参数无关的预训练模型分析方法
©PaperWeekly 原创 · 作者|蔡杰 学校|北京大学硕士生 研究方向|问答系统 论文标题: Perturbed Masking: Parameter-free Probing for Ana ...
最新文章
- VC env.Please set `DISTUTILS_USE_SDK=1`
- 51单片机多任务操作系统的原理与实现
- python中的@符号的作用
- 启动ubuntu无反应_推荐一款优秀的Python IDE以及在Ubuntu下的安装
- 2020 ICPC亚洲区域赛(沈阳)F-Kobolds and Catacombs(思维+模拟)
- .jdeveloper_在JDeveloper 12.1.3中为WebSocket使用Java API
- 用来做 favicon 的站点
- 详解数据治理相关的7个术语和名词
- 求解两个经纬点之间的距离和角度(mm级精度)
- crypto在web的使用
- bzoj1724[Usaco2006 Nov]Fence Repair 切割木板*
- java通过证书获取CN_java – 从证书DN解析CN [重复]
- 怎么用计算机画图工具,使用电脑自带画图工具(画图软件怎样操作的方法
- 微商引流脚本,微商怎样选择正确的引流脚本?
- 含有一个量词的命题的否命题_高一 | 数学必修一全称量词与存在量词知识点总结...
- 微信表情的字符编号完整版【图文并茂哦!】
- PyTorch搭建卷积神经网络(CNN)进行视频行为识别(附源码和数据集)
- php微信卡券接口,核销卡券
- matlab绘图:将图导出在ppt上使用的三维矢量图
- 摸爬滚打大半年,我是如何从零基础进阶到渗透测试工程师