自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

山阴少年

微信公众号: Python爬虫与算法(微信号为:easy_web_scrape)

  • 博客(312)
  • 资源 (3)
  • 论坛 (1)
  • 收藏
  • 关注

原创 NLP(四十七)文本纠错之获取形近字

简介  笔者最近在从事文本纠错的相关工作,颇有收获,因此记录于此。  文本纠错很大一部分工作在于纠正同音字、形近字,所谓形近字,是指字形相近的汉字。本文将介绍如何获取形近字。  获取形近字的算法如下:获取汉字库,将所有汉字转化为黑白图片;获取每个汉字的向量表示(即将图片转化为向量);计算两个汉字的向量的余弦相似度,得到它们的字形相似度。  下面将详细演示如何获取形近字。获取形近字  我们从网上得到3500个汉字的txt文件(all_3500_chars.txt),通过pygame将汉字

2021-06-29 22:59:39 56 3

原创 NLP(四十六)常见的损失函数

  本文将给出NLP任务中一些常见的损失函数(Loss Function),并使用Keras、PyTorch给出具体例子,最后再介绍标签平滑技术(Label Smoothing)。  本文将介绍的损失函数如下:Mean Squared Error(均方差损失函数)Mean Absolute Error(绝对值损失函数)Binary Cross Entropy(二元交叉熵损失)...

2021-04-24 14:39:13 273

原创 NLP(四十六)对抗训练的一次尝试

  初次听说对抗训练是在一次实体识别比赛的赛后分享中,当时的一些概念,比如Focal Loss、对抗训练、模型融合、数据增强等都让我感到新奇,之后笔者自己也做了很多这方面的尝试。本文将分享笔者对于对抗训练(FGM)的一次尝试。什么是对抗训练?  提到“对抗”,相信大多数人的第一反应都是CV中的对抗生成网络 (GAN),殊不知,其实对抗也可以作为一种防御机制,并且经过简单的修改,便能用在NLP任务上,提高模型的泛化能力。GAN之父Ian Goodfellow在15年的ICLR论文《Explaining a

2021-04-14 22:17:32 181

原创 NLP(四十五)R-BERT在人物关系分类上的尝试及Keras代码复现

  本文将介绍关系分类模型R-BERT和该模型在人物关系数据集上的表现,以及该模型的Keras代码复现。关系分类任务  关系分类属于NLP任务中的文本分类,不同之处在于,关系分类提供了文本和实体。比如下面的例子:亲戚 1837年6月20日,威廉四世辞世,他的侄女维多利亚即位。其中两个实体在文本中用和包围着,人物关系为亲戚。  在关系分类中,我们要注重文本特征,更要留意实体特征。常见的英文关系分类的数据集为SemEval 2010 Task 8、New York Times Corpus、Wik

2021-04-01 15:59:46 267

原创 NLP(四十四)使用keras-bert加载BERT模型的两种方法

  keras-bert是Keras框架加载BERT模型的Python第三方模块,在之前的文章中,笔者介绍了如何使用keras-bret来实现不同的NLP任务,比如:NLP(三十四)使用keras-bert实现序列标注任务NLP(三十五)使用keras-bert实现文本多分类任务NLP(三十六)使用keras-bert实现文本多标签分类任务NLP(三十七)使用keras-bert实现英语序列标注任务NLP(三十九)使用keras-bert实现完形填空及简单的文本纠错功能NLP(四十二)人物关系

2021-03-31 21:51:36 461 2

原创 NLP(四十三)模型调参技巧之Warmup and Decay

  Warmup and Decay是深度学习中模型调参的常用trick。本文将简单介绍Warmup and Decay以及如何在keras_bert中使用它们。什么是warmup and decay?  Warmup and Decay是模型训练过程中,一种学习率(learning rate)的调整策略。  Warmup是在ResNet论文中提到的一种学习率预热的方法,它在训练开始的时候先选择使用一个较小的学习率,训练了一些epoches或者steps(比如4个epoches,10000steps)

2021-03-27 17:46:19 317

原创 NLP(四十二)人物关系分类的再次尝试

  两周前的周末,笔者决定对人物关系分类进行再次尝试。  为什么说是再次尝试呢?因为笔者之前已经写过一篇文章NLP(二十一)人物关系抽取的一次实战,当时的标注数据大约2900条,使用的模型也比较简单,为BERT+Bi-GRU+Attention+FC结构,其中BERT用作特征提取,该模型在原有数据集上的F1为79%。  经过笔者一年断断续续的努力,现在的标注样本已经达到3900多条。鉴于笔者已做过BERT微调相关工作,当然希望在此数据集上进行再次尝试。  现有的人物关系数据集大约3900多条,分布如下

2021-03-25 22:36:23 222 2

原创 NLP(四十一)使用HuggingFace翻译模型的一次尝试

  本文将如何如何使用HuggingFace中的翻译模型。  HuggingFace是NLP领域中响当当的团体,它在预训练模型方面作出了很多接触的工作,并开源了许多预训练模型和已经针对具体某个NLP人物训练好的直接可以使用的模型。本文将使用HuggingFace提供的可直接使用的翻译模型。  HuggingFace的翻译模型可参考网址:https://huggingface.co/models?pipeline_tag=translation ,该部分模型中的绝大部分是由Helsinki-NLP(Lan

2021-03-10 22:15:06 678 4

原创 NLP(四十)利用seqeval模块获取序列实体识别结果

  在文章NLP(二十三)序列标注算法评估模块seqeval的使用中,笔者首次介绍了seqeval模块,它可以帮助我们很好地完成序列标注算法的模型效果评估,并且能在Keras模型训练过程中引入。  其实,在seqeval模块中还有一个get_entities函数,它能帮助我们迅速地从一个标注序列中获取完整实体,支持常规的BIO、BMESO等标注方式。让我们来看下该函数的源代码:def get_entities(seq, suffix=False): """Gets entities from s

2021-03-05 12:01:32 153

原创 NLP(三十九)使用keras-bert实现完形填空及简单的文本纠错功能

  在之前的系列文章中,笔者介绍了如何使用keras-bert来调用BERT模型,实现文本多分类,文本多标签分类以及序列标注任务,文章如下:NLP(三十四)使用keras-bert实现序列标注任务NLP(三十五)使用keras-bert实现文本多分类任务NLP(三十六)使用keras-bert实现文本多标签分类任务在本文中,笔者将介绍如何使用keras-bert来调用BERT模型使用完形填空及简单的文本纠错功能。完形填空  首先,我们来了解下什么是完形填空。所谓完形填空,指的是将句子中缺失的

2021-01-24 16:35:23 899 4

原创 NLP(三十八)使用keras-bert调用ALBERT模型实现文本分类、文本多标签分类、序列标注任务

  在系列文章NLP(三十四)使用keras-bert实现序列标注任务、NLP(三十五)使用keras-bert实现文本多分类任务、NLP(三十六)使用keras-bert实现文本多标签分类任务中,笔者介绍了如何使用keras-bert模块来调用BERT等模型来实现文本分类、文本多标签分类、序列标注任务。  在系列文章NLP(二十二)利用ALBERT实现文本二分类、NLP(二十五)实现ALBERT+Bi-LSTM+CRF模型、NLP(二十八)多标签文本分类中,笔者将ALBERT模型作为特征向量提取工具,实

2021-01-05 22:41:09 1392

原创 NLP(三十七)使用keras-bert实现英语序列标注任务

  在文章NLP(三十四)使用keras-bert实现序列标注任务中,我们已经用keras-bert模块实现了中文序列标注任务,其中对BERT进行微调。当前,我们也可以顺便实现下英语序列标注任务。  本文将介绍如何使用keras-bert实现英语序列标注任务。一个小测试  使用keras-bert实现英语序列标注任务的代码,大体上与文章NLP(三十四)使用keras-bert实现序列标注任务中的相似,但英语序列标注有其特殊之处。其特殊之处在于,BERT会将复杂的英语单词拆分成多个简单英语单词,进行to

2021-01-05 10:45:14 500 1

原创 NLP(三十六)使用keras-bert实现文本多标签分类任务

本文将会介绍如何使用keras-bert实现文本多标签分类任务,其中对BERT进行微调。项目结构数据集介绍模型训练模型评估模型预测总结

2020-12-27 14:32:23 1907 3

原创 NLP(三十五)使用keras-bert实现文本多分类任务

  本文将会介绍如何使用keras-bert实现文本多分类任务,其中对BERT进行微调。项目结构其中依赖的Python第三方模块如下:pandas==0.23.4Keras==2.3.1keras_bert==0.83.0numpy==1.16.4数据集  本文采用的多分类数据集为sougou小分类数据集和THUCNews数据集,简介如下:sougou小分类数据集共有5个类别,分别为体育、健康、军事、教育、汽车。划分为训练集和测试集,其中训练集每个分类800条样本,测试集每个分类

2020-12-26 15:11:19 1610 40

原创 NLP(三十四)使用keras-bert实现序列标注任务

  对于不同的NLP任务,使用BERT等预训练模型进行微调无疑是使用它们的最佳方式。在网上已经有不少的项目,或者使用TensorFlow,或者使用Keras,或者使用PyTorch对BERT进行微调。本系列文章将致力于应用keras-bert对BERT进行微调,完成基础的NLP任务,比如文本多分类、文本多标签分类以及序列标注等。  keras-bert是Python的第三方模块,它方便我们使用Keras来调用BERT,借助几行代码就可以轻松地完成模型构建,能依据不同的文本任务进行模型训练,获得不错的效果。

2020-12-26 14:04:32 1555 8

原创 NLP(三十三)利用CRF实现中文分词

  本文将会讲述如何利用CRF模型来实现中文分词。  所谓中文分词,就是将连续的中文汉字序列按照一定的规范重新组合成词序列的过程。关于CRF模型的介绍以及CRF实现工具CRF++的使用方法,读者可以参考文章NLP入门(八)使用CRF++实现命名实体识别(NER) 。  以下将详细讲述如何使用CRF++来实现中文分词。语料选择  中分分词的语料,这里选择人民日报分词语料和微软中文分词语料,语料的下载方式可以参看文章最后给出的Github地址。  我们将语料加工成CRF++支持的格式,以句子迈向充满希

2020-10-20 14:20:51 563 1

原创 NLP(三十二)利用doccano进行文档标注

  doccano是一个开源的文本标注工具,适合于机器学习和深度学习的使用者,提供了文档分类、序列标注和sequence to sequence任务的标注,操作简单,上手也快,界面友好,能够让你在几个小时内建立一个可实际训练的数据集。  doccano的Github访问网址为:https://github.com/doccano/doccano 。安装方式  doccano的安装也比较简单,我们可以通过Docker很方便地完成安装。  首先,先从Github上下载该项目,命令如下:$ git cl

2020-07-24 22:02:02 980

原创 NLP(三十一)短语的语序问题

  所谓的短语的语序问题,即给定一个打乱顺序的短语,我们要按照语义信息将其重新组合,新的语序通顺的短语。  举个简单例子,比如我们在识别验证码中的文字的时候,识别出来的文字分别为“哲”,“思”,“学”,“想”,那么重合调整语序后形成的短语应该为“哲学思想”。  这样的问题也会经常出现,除了验证码识别,还有语音识别等。解决这类的语序问题,我们通常会用到统计方面的语言模型(Language Model,LM),常见的有N-gram问题等。  下面将讲述n-gram问题的解决办法。原理篇  N-gram

2020-05-18 21:27:00 651 2

原创 NLP(二十九)一步一步,理解Self-Attention

  本文大部分内容翻译自Illustrated Self-Attention, Step-by-step guide to self-attention with illustrations and code,仅用于学习,如有翻译不当之处,敬请谅解!什么是Self-Attention(自注意力机制)?  如果你在想Self-Attention(自注意力机制)是否和Attention(注意力机制...

2020-05-08 00:03:47 624 1

原创 NLP(二十八)多标签文本分类

多标签文本分类之从电影简介预测影片类型

2020-04-10 10:49:43 3639 11

原创 NLP(二十七)开放领域的三元组抽取的一次尝试

  当我写下这篇文章的时候,我的内心是激动的,这是因为,自从去年6月份写了文章利用关系抽取构建知识图谱的一次尝试 后,我就一直在试图寻找一种在开放领域能够进行三元组抽取的办法,也有很多读者问过我这方面的问题,今天,笔者将给出答复,虽然不是正确答案(现在也没有正确答案),但至少,我写下了自己的答案。  离我想出这个抽取系统虽然才过去不久,但我的心情,已经由开始的激动狂喜,转化为后来的平淡,直到现在...

2020-03-21 20:08:57 2824 8

原创 NLP(二十六)限定领域的三元组抽取的一次尝试

  本文将会介绍笔者在2019语言与智能技术竞赛的三元组抽取比赛方面的一次尝试。由于该比赛早已结束,笔者当时也没有参加这个比赛,因此没有测评成绩,我们也只能拿到训练集和验证集。但是,这并不耽误我们在这方面做实验。比赛介绍  该比赛的网址为:http://lic2019.ccf.org.cn/kg ,该比赛主要是从给定的句子中提取三元组,给定schema约束集合及句子sent,其中schema定...

2020-03-15 18:39:14 4526 23

原创 NLP(二十五)实现ALBERT+Bi-LSTM+CRF模型

  在文章NLP(二十四)利用ALBERT实现命名实体识别中,笔者介绍了ALBERT+Bi-LSTM模型在命名实体识别方面的应用。  在本文中,笔者将介绍如何实现ALBERT+Bi-LSTM+CRF模型,以及在人民日报NER数据集和CLUENER数据集上的表现。  功能项目方面的介绍里面不再多介绍,笔者只介绍模型训练和模型预测部分的代码。项目方面的代码可以参考文章NLP(二十四)利用ALBER...

2020-03-12 21:49:02 6068 13

原创 NLP(二十四)利用ALBERT实现命名实体识别

  本文将会介绍如何利用ALBERT来实现命名实体识别。如果有对命名实体识别不清楚的读者,请参考笔者的文章NLP入门(四)命名实体识别(NER) 。  本文的项目结构如下:  其中,albert_zh为ALBERT提取文本特征模块,这方面的代码已经由别人开源,我们只需要拿来使用即可。data目录下为我们本次讲解所需要的数据,图中只有example开头的数据集,这是人民日报的标注语料,实体为人...

2020-03-11 22:56:44 4761 27

原创 NLP(二十三)序列标注算法评估模块seqeval的使用

  在NLP中,序列标注算法是常见的深度学习模型,但是,对于序列标注算法的评估,我们真的熟悉吗?  在本文中,笔者将会序列标注算法的模型效果评估方法和seqeval的使用。序列标注算法的模型效果评估  在序列标注算法中,一般我们会形成如下的序列列表,如下:['O', 'O', 'B-MISC', 'I-MISC', 'B-MISC', 'I-MISC', 'O', 'B-PER', 'I-...

2020-03-10 23:32:41 2057 1

原创 知识图谱构建举例

  笔者在去年的时候,给出了利用深度学习来构建知识图谱的一次尝试,文章为:利用关系抽取构建知识图谱的一次尝试 ,本文将会更出更多的例子,也是笔者近一个星期的忙碌结果。  下面为知识图谱构建的例子,由笔者原创,是从新闻或者小说中直接抽取而来,加上大量时间的人工整理而得到,下面的图片是从Neo4J导出并截图。  例子1:《平凡的世界》实体关系图(局部):  例子2:《白鹿原》实体关系图(局部)...

2020-03-05 22:20:04 2487 2

原创 NLP(二十二)利用ALBERT实现文本二分类

  在文章NLP(二十)利用BERT实现文本二分类中,笔者介绍了如何使用BERT来实现文本二分类功能,以判别是否属于出访类事件为例子。但是呢,利用BERT在做模型预测的时候存在预测时间较长的问题。因此,我们考虑用新出来的预训练模型来加快模型预测速度。  本文将介绍如何利用ALBERT来实现文本二分类。关于ALBERT  ALBERT的提出时间大约是在2019年10月,其第一作者为谷歌科学家蓝...

2020-03-05 16:01:31 3417

原创 NLP(二十一)人物关系抽取的一次实战

  去年,笔者写过一篇文章利用关系抽取构建知识图谱的一次尝试,试图用现在的深度学习办法去做开放领域的关系抽取,但是遗憾的是,目前在开放领域的关系抽取,还没有成熟的解决方案和模型。当时的文章仅作为笔者的一次尝试,在实际使用过程中,效果有限。  本文将讲述如何利用深度学习模型来进行人物关系抽取。人物关系抽取可以理解为是关系抽取,这是我们构建知识图谱的重要一步。本文人物关系抽取的主要思想是关系抽取的p...

2020-02-18 21:46:20 10547 7

原创 NLP(二十)利用BERT实现文本二分类

  如您需要阅读该文章,请访问博客园网址:https://www.cnblogs.com/jclian91/p/12301056.html ,或者微信公众号网址: https://mp.weixin.qq.com/s?__biz=MzU2NTYyMDk5MQ==&mid=2247484497&idx=1&sn=14fc94307991a392cabcf7ddf10ea9a1...

2020-02-13 11:36:12 2128 2

原创 NLP(十九)首次使用BERT的可视化指导

  本文翻译自文章A Visual Guide to Using BERT for the First Time,作者为Jay Alammar,访问网址为:http://jalammar.github.io/a-visual-guide-to-using-bert-for-the-first-time/ ,可以作为那些不熟悉BERT的读者首次阅读。文章中如有翻译不当之处,还请批评指正。  本文...

2020-02-11 18:14:26 2345

原创 利用关系抽取构建知识图谱的一次尝试

关系抽取  信息抽取(Information Extraction, IE)旨在从大规模非结构或半结构的自然语言文本中抽取结构化信息。关系抽取(Relation Extraction, RE)是其中的重要子任务之一,主要目的是从文本中识别实体并抽取实体之间的语义关系,是自然语言处理(NLP)中的一项基本任务。比如,我们可以从下面的一段话中,鸿海集团董事长郭台铭25日表示,阿里巴巴集团董事局主...

2020-01-13 22:59:45 3252 5

原创 NLP(十八)利用ALBERT提升模型预测速度的一次尝试

前沿  在文章NLP(十七)利用tensorflow-serving部署kashgari模型中,笔者介绍了如何利用tensorflow-serving部署来部署深度模型模型,在那篇文章中,笔者利用kashgari模块实现了经典的BERT+Bi-LSTM+CRF模型结构,在标注了时间的文本语料(大约2000多个训练句子)中也达到了很好的识别效果,但是也存在着不足之处,那就是模型的预测时间过长,平均...

2019-10-18 23:45:05 5233 27

原创 NLP(十五)让模型来告诉你文本中的时间

背景介绍  在文章NLP入门(十一)从文本中提取时间 中,笔者演示了如何利用分词、词性标注的方法从文本中获取时间。当时的想法比较简单快捷,只是利用了词性标注这个功能而已,因此,在某些地方,时间的识别效果并不太好。比如以下的两个例子:原文1:苏北大量农村住房建于上世纪80年代之前。去年9月,江苏省决定全面改善苏北农民住房条件,计划3年内改善30万户,作为决胜全面建成小康社会补短板的重要举措。...

2019-10-18 20:43:55 2080 1

原创 NLP(十七)利用tensorflow-serving部署kashgari模型

  在文章NLP(十五)让模型来告诉你文本中的时间中,我们已经学会了如何利用kashgari模块来完成序列标注模型的训练与预测,在本文中,我们将会了解如何tensorflow-serving来部署模型。  在kashgari的官方文档中,已经有如何利用tensorflow-serving来部署模型的说明了,网址为:https://kashgari.bmio.net/advance-use/ten...

2019-10-18 20:43:19 2103 2

原创 NLP(十六)轻松上手文本分类

背景介绍  文本分类是NLP中的常见的重要任务之一,它的主要功能就是将输入的文本以及文本的类别训练出一个模型,使之具有一定的泛化能力,能够对新文本进行较好地预测。它的应用很广泛,在很多领域发挥着重要作用,例如垃圾邮件过滤、舆情分析以及新闻分类等。  现阶段的文本分类模型频出,种类繁多,花样百变,既有机器学习中的朴素贝叶斯模型、SVM等,也有深度学习中的各种模型,比如经典的CNN, RNN,以及...

2019-08-14 01:31:22 1984 8

原创 NLP(十四)自制序列标注平台

背景介绍  在平时的NLP任务中,我们经常用到命名实体识别(NER),常用的识别实体类型为人名、地名、组织机构名,但是我们往往也会有识别其它实体的需求,比如时间、品牌名等。在利用算法做实体识别的时候,我们一般采用序列标注算法,这就对标注的文本格式有一定的要求,因此,一个好的序列标注的平台必不可少,将会大大减少我们标注的工作量,有效提升算法的更新迭代速度。  本文将介绍笔者的一个工作:自制的序列...

2019-08-09 00:07:08 1583

原创 NLP(十三)中文分词工具的使用尝试

  本文将对三种中文分词工具进行使用尝试,这三种工具分别为哈工大的LTP,结巴分词以及北大的pkuseg。  首先我们先准备好环境,即需要安装三个模块:pyltp, jieba, pkuseg以及LTP的分型模型cws.model。在用户字典中添加以下5个词语:经少安贺凤英F-35战斗机埃达尔·阿勒坎  测试的Python代码如下:# -*- coding: utf-8 -*-...

2019-08-03 17:22:20 1123

原创 NLP(十二)依存句法分析的可视化及图分析

  依存句法分析的效果虽然没有像分词、NER的效果来的好,但也有其使用价值,在日常的工作中,我们免不了要和其打交道。笔者这几天一直在想如何分析依存句法分析的结果,一个重要的方面便是其可视化和它的图分析。  我们使用的NLP工具为jieba和LTP,其中jieba用于分词,LTP用于词性标注和句法分析,需要事件下载pos.model和parser.model文件。  本文使用的示例句子为:2...

2019-07-29 23:05:34 5289 4

原创 NLP入门(十一)从文本中提取时间

  在我们的日常生活和工作中,从文本中提取时间是一项非常基础却重要的工作,因此,本文将介绍如何从文本中有效地提取时间。  举个简单的例子,我们需要从下面的文本中提取时间:6月28日,杭州市统计局权威公布《2019年5月月报》,杭州市医保参保人数达到1006万,相比于2月份的989万,三个月暴涨16万人参保,傲视新一线城市。我们可以从文本有提取6月28日,2019年5月, 2月份这三个有效...

2019-07-14 19:43:13 4912 3

原创 BERT的几个可能的应用

  BERT是谷歌公司于2018年11月发布的一款新模型,它一种预训练语言表示的方法,在大量文本语料(维基百科)上训练了一个通用的“语言理解”模型,然后用这个模型去执行想做的NLP任务。一经公布,它便引爆了整个NLP界,其在11个主流NLP任务中都取得优异的结果,因此成为NLP领域最吸引人的一个模型。简单来说,BERT就是在训练了大量的文本语料(无监督)之后,能够在对英语中的单词(或中文的汉字)给...

2019-06-07 11:12:40 2063

Advanced model deployments with TensorFlow Serving Presentation.pdf

tensorflow/serving模型部署PDF

2021-02-25

Python 数据结构

Python 数据结构

2017-08-21

Python爬虫系列之PhantomJS+Selenium+AutoIt.pptx

该PPT介绍了Python爬虫在爬取动态网页方面会用到的软件PhantomJS, Selenium, 以及AutoIt. 欢迎对爬虫有兴趣的童鞋进行下载哈,本人亲自制作的PPT~~

2018-03-04

山阴少年的留言板

发表于 2020-01-02 最后回复 2020-01-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除