自然语言处理
文章平均质量分 79
Icoding_F2014
相信代码可以变化世界
展开
-
tf.contrib.seq2seq.dynamic_decode 返回值的shape 巨坑
tf.contrib.seq2seq.dynamic_decode 这个函数真的是巨坑啊,每一个batch,他的rnn_output的形状居然会是:[batch_size, max_efficient_sentence across entire batch, num_classes] ,而不是我们想要的每个序列应该有的最大长度,尽管我们在TrainingHelper里面指定了Sequence_...原创 2019-12-21 18:37:20 · 1398 阅读 · 0 评论 -
ccmt2019——sgm文件解析
ccmt2019的开发集和测试集使用sgm文件给出的,它其实就是一个xml文件,使用python的lxml解析即可。坑点:官方给的xml有毒,有些特殊符号需要自己转换,例如:&。需要先手动把所有的&替换为&注意要核对docid和seg id,存在源语中有 而目标语没有的情况。这一点比较坑。__author__ = 'jmh081701'from xm...原创 2019-05-13 00:52:21 · 2212 阅读 · 0 评论 -
ccmt2019-0512-使用bpe+word2vec 进行语料的预处理
接下来就是使用bpe对语料进行编码,以解决部分的登录词。首先,把所有的英文语料汇总起来放在同一个文件en.txt,把所有对应的中文平行语料也放在一起得到cn.txt。注意合并后需要检查下这两个文件各个句子之间是否对齐。然后使用subword-nmt工具进行bpe的编码。__author__ = 'jmh081701'import osdirectory=".//corpus//"...原创 2019-05-12 07:25:55 · 1386 阅读 · 0 评论 -
ccmt2019-0511-语料的预处理
今天主要就是使用moses把英文语料做一些预处理,主要是做tokenize。tokenize的作用:在语料的单词和单词之间或者单词和标点之间插入空白,然后进行后续操作。moses的安装:安装基础库sudo apt-get install build-essential git-core pkg-config automake libtool wget zlib1g-dev pytho...原创 2019-05-11 12:05:03 · 1015 阅读 · 3 评论 -
机器翻译 bpe——bytes-pair-encoding以及开源项目subword-nmt快速入门
subword-nmt干啥用的解决未登录词问题的一种方法。在做nlp的时候,很多时候我们会对语料做一个预处理,生成语料的一个字典。为了不让字典太大,我们通常只会把出现频次大于某个阈值的词丢到字典里边,剩下所有的词都统一编码成#UNK 。这是很经典 很朴素的做法,这种方法不能解决未登录词的问题。未登录词是指 在验证集或测试集出现了训练集从来没见到过的单词。这种未登录词对分词,机器翻译性能影响很大...原创 2019-04-13 18:47:21 · 12768 阅读 · 20 评论 -
transformer模型核心图解
三图解万言!!!模型图:动画:首先输入源语:“I arrived at the ”第一层 self-attention然后第二层 self-attention,输入是上一层attention的结果然后第三层 self-attention,输入是上一层的attention结果。这样 见过三次多头attention后,得到输入句子的句法树。完了Decoder是< start...原创 2019-01-10 11:01:59 · 1872 阅读 · 0 评论 -
基于注意力机制的 中 英机器翻译
数据处理模块__author__ = 'jmh081701'import jsonimport copyimport numpy as npimport randomclass DATAPROCESS: def __init__(self,source_ling_path,dest_ling_path,source_word_embedings_path,sourc...原创 2019-01-08 09:42:55 · 3034 阅读 · 10 评论 -
BiLSTM+CRF(三)命名实体识别 实践与总结
本博文是对上一篇博客(https://blog.csdn.net/jmh1996/article/details/84779680 BiLSTM+CRF(二)命名实体识别 )的完善。数据处理功能模块语料库数据格式:训练集:source_data.txt :文本每一行为一个句子,每个句子用“\n”隔开,句子内部词之间用空格分开。精 品 、 专 题 、 系 列 、 稀 见 程 度 才 是...原创 2018-12-10 01:31:02 · 6742 阅读 · 22 评论 -
BiLSTM+CRF(二)命名实体识别
前言前一篇博客里面,我们已经提到了如何构建一个双向的LSTM网络,并在原来单层的RNN的基础上,修改少数几行代码即可实现。Bi-LSTM其实就是两个LSTM,只不过反向的LSTM是把输入的数据先reverse 首尾转置一下,然后跑一个正常的LSTM,然后再把输出结果reverse一次使得与正向的LSTM的输入对应起来。这篇博客,我们就来看看如何通过BiLSTM+CRF来进行命名实体识别的任务...原创 2019-12-09 11:04:49 · 11739 阅读 · 2 评论 -
Attention机制学习(二)使用
前言前一篇博客简要的介绍了一下传统的attention机制的基本思想,本篇博客解读使用attention机制做机器翻译的第一篇论文,通过这篇论文看attention的使用方法。论文:NEURAL MACHINE TRANSLATIONBY JOINTLY LEARNING TO ALIGN AND TRANSLATE论文地址:https://arxiv.org/pdf/1409.047...原创 2018-12-05 09:57:36 · 777 阅读 · 0 评论 -
Attention机制学习(一)传统Attention机制
前言纵观神经网络的发展历程,从最原始的MLP,到CNN,到RNN,到LSTM,GRU,再到现在的Attention机制,人们不断的在网络里面加入一些先验知识,使得网络不过于“发散”,能够朝着人们希望的方向去发展。这些先验知识是指:局部视野知识、序列递归知识、结构递归知识,已经长短时的记忆。现在,人们加入了注意力这种先验知识。本文将介绍应用在NLP领域的attention机制,包括传统的att...原创 2018-12-05 01:08:12 · 4151 阅读 · 0 评论 -
为什么使用神经网络训练得到的语言模型不需要做数据平滑
我们都知道,在自然语言处理的语言模型里面,最核心的就是计算得到一个句子的概率,为了得到这个概率,我们需要计算得到一系列的条件概率。这些条件概率就是整个语言模型的参数。为了得到条件概率,我们可以有两种不同的方法。第一种就是使用统计概率方法,通过统计的方法得到不同的词对的条件概率。这种方式简单易行,但是此类方式很容易因为语料库的稀疏,而导致某些词对并没有出现在语料库而导致某些条件概率为0。举个栗...原创 2018-10-10 18:50:40 · 1196 阅读 · 0 评论 -
自然语言处理——CBOW模型
CBOW一个用于快速训练得到词向量的神经网络模型,它的核心原理是中心词的前R个词和后R个词来预测中心词。它的网络模型相比NNLM模型来说,最大的变化是直接去除隐层的非线性激活过程,以此来加速网络的训练速度。CBOW的输入:假设中心词wiw_{i}wi的上下文C(wi)={wj∣j∈[i−R,i)∩[i+1,i+R)}C(w_{i})=\{w_{j}|j \in [i-R,i) \cap [...原创 2018-10-14 17:15:10 · 5987 阅读 · 0 评论 -
自然语言处理——(一)语言模型
#引入语言模型的提出:原创 2018-09-21 23:21:48 · 754 阅读 · 0 评论