皮皮AI记
硕士,AI算法工程师。曾获华为杯中国研究生数学建模竞赛一等奖,省优秀毕业生等。写过几篇中文核心,发过几篇国际会议,还有几个授权专利。喜欢搞搞代码,写写博客,没事还会搞搞LaTeX。愿景:用数学和代码构建智能系统,用逻辑创造价值。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【NLP】一种基于联合方式的三元组抽取模型——CasRel
关系抽取是自然语言处理中一个比较基础的任务,除了关系抽取之外还有类似的任务如:属性抽取等。这些任务也都可看成三元组抽取,即(subject,predicate,object)。基于pipeline的分布抽取方式,在已知两个实体subject和object,去预测predicate。联合抽取方式,一个模型同时将subject,predicate和object抽取出来。现实的场景中还存在重叠关系情况,那么针对这种情况该如何解决呢?原创 2023-02-05 18:37:44 · 1738 阅读 · 1 评论 -
【NLP】基于BERT-BiLSTM-CRF的NER实现
背景NER任务毋庸多言,之前也是从HMM,BiLSTM-CRF,IDCNN-CRF一路实现,也看到各个模型的效果和性能。在BERT大行其道的时期,不用BERT做一下BERT那就有点out了,毕竟基于BERT的衍生语言模型也变得更加强悍。不过当前使用BERT+softmax既可以做到非常好的效果,接上BiLSTM以及再使用CRF解码,主要是为了充分理解各层直接的衔接关系等。除此之外,模型在训练过程中需要一些小tricks,如:lr_scheduler,warmup等都需要我们慢慢理解其在背后使用的意义和效果原创 2022-05-23 17:57:28 · 2737 阅读 · 0 评论 -
【NLP】基于Pytorch的IDCNN-CRF命名实体识别(NER)实现
背景前文介绍了【NLP】命名实体识别——IDCNN-CRF论文阅读与总结,【NLP】基于Pytorch lightning与BiLSTM-CRF的NER实现 也实现了相关模型。在GitHub看了一圈,IDCNN基本上都是Tensorflow实现了,现在我来实现一波,看看效果。源码已经上传到我的GitHub上:https://github.com/Htring/IDCNN-CRF_NER_PL,有兴趣的看以瞅瞅哦。数据来源本程序数据来源于:https://github.com/luopeixiang/n原创 2022-05-08 10:36:22 · 2013 阅读 · 1 评论 -
【NLP】文本匹配——Simple and Effective Text Matching with Richer Alignment Features(RE2)模型实现
背景前文:【NLP】文本匹配——Simple and Effective Text Matching with Richer Alignment Features阅读与总结(RE2)已经简要地介绍了RE2的原理,下面就参照着原文以及网上的开源代码进行该模型的复现。为了能够验证模型是否复现成功,并且我更偏向做中文的相关任务,对比开源项目:https://github.com/zhaogaofeng611/TextMatch在对应数据的复现结果,其在测试集上的ACC为:0.8391.原文整体来说介绍相对简单原创 2022-05-05 22:11:58 · 787 阅读 · 0 评论 -
【NLP】文本匹配——Enhanced LSTM for Natural Language Inference阅读与总结
背景这篇论文是来自于 ACL 2017,论文地址:https://arxiv.org/abs/1609.06038.首先了解一下什么是, Natural Language Inference,自然语言推理。根据Natural language inference上的介绍:Natural language inference is the task of determining whether a “hypothesis” is true (entailment), false (contradictio原创 2022-04-17 17:40:51 · 1144 阅读 · 0 评论 -
【NLP】文本匹配——Enhanced LSTM for Natural Language Inference算法实现
背景前文【NLP】文本匹配——Enhanced LSTM for Natural Language Inference阅读与总结已经介绍了ESIM的相关原理。下面我们来复现一下这篇文章的代码。代码已上传GitHub:https://github.com/Htring/ESIM_Text_Similarity_PL。有兴趣的可以看看源码。当然本代码也参考了:https://github.com/coetaur0/ESIM程序。该项目也为ESIM绘制了比较漂亮的图片,来看看模型架构,熟悉一下模型就开始书写模型原创 2022-05-01 11:37:26 · 1289 阅读 · 0 评论 -
【NLP】基于Pytorch lightning与BiLSTM-CRF的NER实现
背景前文已介绍了BiLSTM+CRF进行序列标注的理论内容,参见:【NLP】基于BiLSTM-CRF的序列标注,也做了:【NLP】基于隐马尔可夫模型(HMM)的命名实体识别(NER)实现。下面来看看如何使用Pytorch lightning书写BiLSTM-CRF来进行命名实体识别。本程序代码已上传github:https://github.com/Htring/BiLSTM-CRF_NER_PL。本程序使用的Python程序包,主要如下:python 3.7pytorch 1.10,pytor原创 2022-04-16 17:41:50 · 1740 阅读 · 3 评论 -
【NLP】基于BiLSTM-CRF的序列标注
背景命名实体识别(named entity recognition, NER)现在如今使用最多的算法当属深度学习。当Bert还没出现时,序列标注的天下则是BiLSTM-CRF的天下。使用BiLSTM-CRF比较早的论文是来自于百度的:Bidirectional LSTM-CRF Models for Sequence Tagging.除此之外还有:Neural Architectures for Named Entity Recognition等论文 。前文的基于HMM进行序列标注只是引入序列标注的基本原创 2022-04-10 17:13:32 · 1456 阅读 · 0 评论 -
【NLP】基于隐马尔可夫模型(HMM)的命名实体识别(NER)实现
背景上篇文章【NLP】再看隐马尔可夫模型(HMM)原理已经介绍了隐马尔可夫模型的基本理论和相关概念。命名实体识别(named entity recognition, NER)又是NLP领域一项非常基础的任务也是信息抽取,知识图谱等领域中非常基础的内容。下面我们来看看如何使用HMM进行NER任务。程序数据与源码已上传GitHub:https://github.com/Htring/HMM_NER.实验数据程序里使用的数据来源与项目:https://github.com/luopeixiang/named原创 2022-04-09 21:37:54 · 4088 阅读 · 0 评论 -
【NLP】再看隐马尔可夫模型(HMM)原理
背景隐马尔可夫模型在NLP领域算是举足轻重的存在。当然,在这个深度学习大行其道的背景下,这些经典的机器学习算法可能逐渐被人们忽视。隐马尔可夫模型是一个非常好的数学模型,虽然NLP领域中经常使用,但是根据这个模型的特征将其应用到其他相关问题也未尝不可。遇到一些问题了,也不一定总是想着有没有现成的深度学习解决方案,在实际工程中语料标注,模型落地等等都是一种考验。或许一些传统的机器学习算法也能够解决一些问题。以前想着把自己所学内容整理成册以便有时间再回看,于是就用LaTeX将隐马尔可夫模型生成了PDF文档,原创 2022-04-09 09:58:30 · 1614 阅读 · 0 评论 -
【NLP】序列标注评估工具seqeval使用
背景我们知道在分类任务中,评估模型效果的对象是以样本为单位的,一条样本要么预测错误,要么预测正确,然后就可以使用混淆矩阵,精确率,召回率,F1值计算公式计算相关类别预测情况或者整体的预测情况。但是对于序列标注任务就不一样了。当然也有研究人员针以每个字符预测的类别为一个样本按照分类任务进行评估。但是,序列标注中,以命名实体识别中的姓名为例,一个姓名实体可能由两个汉字、三个、四个汉字组成。在序列标注算法中,一般会有如下序列标注列表:['O', 'O', 'B-MISC', 'I-MISC', 'B-MIS原创 2022-04-07 23:50:16 · 1334 阅读 · 0 评论 -
【NLP】基于python fasttext的文本分类
背景文本分类中的深度学习算法比较多,各种算法也由于其复杂度适应不同的场景。这次介绍的fasttext也是一个结构比较简单模型。结构虽然简单,但效果不错,还快。并且除了python有相关实现的包外,在工程方面还有Java相关的实现以及还有C语言版本的等。总体来说,这个模型在工业上使用的也比较多。fasttext是由Facebook发表的出算法,该论文借鉴了Word2Vec的一些思想,总体也比较简单,但是效果好。对原文感兴趣的可以参见论文:Bag of Tricks for Efficient Text Cl原创 2022-04-05 22:31:04 · 1352 阅读 · 0 评论 -
【Pytorch Lightning】基于Pytorch Lighting和Bert的中文文本情感分析模型实现
上篇文章:【Pytorch Lightning】基于Pytorch Lighting和TextCNN的中文文本情感分析模型实现 介绍了基于textcnn模型效果。而基于Bert的效果有将如何呢?本文就介绍如何使用Bert构建一个中文文本情感分类模型。技术选型编程包python 3.7pytorch 1.10pytorch_lightning 1.5transformers 4.7.0本文选取的预训练模型是:roberta-wwm-ext模型选择Bert 微调。数据获取测试的数据来自于开原创 2022-03-25 00:30:00 · 1775 阅读 · 0 评论 -
【Pytorch Lightning】基于Pytorch Lighting和TextCNN的中文文本情感分析模型实现
技术选型编程包python 3.7pytorch 1.10pytorch_lightning 1.5torchtext 0.11模型选择textcnn,模型相关介绍可以参见:【深度学习】textCNN论文与原理数据获取测试的数据来自于开源项目:bigboNed3/chinese_text_cnn数据背景从数据来看,应该是对车的正向和负向评论。可以理解为一种情感分析任务。总体来说,数据样本长度不大,选择textcnn模型基本能够完成该文本分类任务。程序书写数据加载模块数据加载模原创 2022-03-13 21:36:37 · 2337 阅读 · 2 评论 -
【NLP】再看交叉熵损失函数
Focal Loss for Dense Object Detection交叉熵在深度学习领域出现交叉熵(cross entropy)的地方就是交叉熵损失函数了。通过交叉熵来衡量目标与预测值之间的差距。了解交叉熵还需要从信息论中的几个概念说起。信息量如何衡量一条信息包含的信息量?加入我们有以下的两个事件:事件1:年底昆明要下雪事件2:年底哈尔滨要下雪凭直觉来说,事件1的信息量比事件2的信息量大,因为昆明一年四季如春,下雪的几率非常小。所以当越不可能的事件发生了,我们获取到的信息量就越大。越可能原创 2022-01-06 22:36:08 · 1631 阅读 · 4 评论 -
【NLP】再看分类评估指标——宏平均,微平均
分类任务的宏平均与微平均原创 2022-01-05 20:47:10 · 1760 阅读 · 0 评论 -
【NLP】中文文本分类数据增强方法:EDA 与代码实现
中文文本分类数据增强方法原创 2021-12-30 17:40:20 · 2761 阅读 · 2 评论 -
【NLP】文本关键词提取的两种方法-TFIDF和TextRank
背景前两天看到论文《Chinese Poetry Generation with Planning based Neural Network》中使用TextRank进行关键词提取。在阅读文章时也想到了除了TextRank之外,经常还使用TFIDF进行关键词提取。一些算法的使用取决于业务场景和算法的特性。关键词提取是干什么的呢?关键词抽取的任务就是从一段给定的文本中自动抽取出若干有意义的词语或词组。 那么这个有意义的就会和算法的特性结合在一起了。补充一句:这两种方案是无监督的,当然也可以使用分类的方式进原创 2021-10-04 22:12:26 · 2529 阅读 · 0 评论 -
【NLP】《Chinese Poetry Generation with Planning based Neural Network》的阅读笔记
背景前段时间回顾和学习了基于RNN+Attention与基于CNN+Attention的seq2seq模型:【NLP】seq2seq 由浅入深——基于Rnn和Cnn的处理方式,于是现在想找一些案例练练手。seq2seq最常见的实践就是翻译,看看网上大多是什么英语到法语,到德语的一些案例。说实话,能不能整点能看懂的呢?或许大家都没有公开的语料吧,坦白讲我也没有,哈哈。那就去github上找找。除了机器翻译,seq2seq还是有一些比较有意思的落地场景。比如说,我们打电话到海底捞预定,一般情况下接电话的女原创 2021-10-03 23:54:32 · 616 阅读 · 0 评论 -
【NLP】seq2seq 由浅入深——基于Rnn和Cnn的处理方式
seq2seqseq2seq最初是google2014年在《Sequence to Sequence Learning with Neural Networks》提出的,简单的说就是一种序列到另一种序列的转换。在自然语言处理( Natural Language Processing, NLP)应用领域主要有翻译,摘要,作诗等等。自从seq2seq提出后,关于seq2seq的变体也有很多,但大多都是基于循环神经网络(Recurrent Neural Network,RNN)进行的处理,随后逐渐引入基于at原创 2021-10-01 09:23:48 · 1681 阅读 · 2 评论 -
【NLP】一种自写的分词算法-中文基于字,英文基于单词,支持自定义字典
背景import osimport stringclass SegWord(object): def __init__(self): self._dict_file_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "config/selfWords.txt") self._word_dict = {} def add_word(self, word):原创 2021-06-12 22:14:46 · 481 阅读 · 4 评论 -
【NLP】TorchText介绍与(搜狗语料)文本语料处理案例
文章目录背景背景自然语言处理领域包含很多任务,在日常的任务中序列标注的任务也特别。在pytorch中众所周知的数据处理包是处理图片的torchvision,而处理文本的少有提及,但是也是有的,那就是torchtext。废话不多说,来看看如何使用吧。ps:需要自己准备好相关的环境哦。...原创 2021-03-21 22:11:53 · 577 阅读 · 0 评论 -
【深度学习】textCNN论文与原理——短文本分类(基于pytorch和torchtext)
原创公众号(谢谢支持):AIAS编程有道前言之前书写了使用pytorch进行短文本分类,其中的数据处理方式比较简单粗暴。自然语言处理领域包含很多任务,很多的数据向之前那样处理的话未免有点繁琐和耗时。在pytorch中众所周知的数据处理包是处理图片的torchvision,而处理文本的少有提及,快速处理文本数据的包也是有的,那就是torchtext。下面还是结合上一个案例:【深度学习】textCNN论文与原理——短文本分类(基于pytorch),使用torchtext进行文本数据预处理,然后再使用to.原创 2020-12-27 20:01:56 · 750 阅读 · 0 评论 -
北京大学开源分词工具pkuseg 初试与使用感受
本部分内容部分来自:https://github.com/lancopku/PKUSeg-python1.前言最近看到一些博文介绍了北大的一个开源的中文分词工具包pkuseg。其中说到,它在多个分词数据集上都有非常高的分词准确率,我们所知道的,也经常使用的结巴分词误差率高达 18.55% 和 20.42,而北大的 pkuseg 只有 3.25% 与 4.32%。当然还有其他的分词工具,如:...原创 2019-01-09 21:42:25 · 26438 阅读 · 24 评论 -
使用Stanford Parser的PDFG算法进行句法分析
1 Stanford Parser简介与安装Stanford Parser顾名思义是由斯坦福大学自然语言小组开发的开源句法分析器,是基于概率统计句法分析的一个Java实现。该句法分析器目前提供了5个中文文法的实现。他的优点在于:既是一个高度优化的概率上下文无关文法和词汇化依存分析器,又是一个词汇化上下文无关文法分析器;以权威的并州树库作为分析器的训练数据,支持多语言。目前已经支持英文,...原创 2018-09-04 23:53:14 · 3202 阅读 · 0 评论 -
Viterbi-Algorithm(维特比)算法
Viterbi-Algorithm算法维特比算法是一个特殊但应用最广的动态规划算法。利用动态规划,可以解决任何一个图中的最短路径问题。而维特比算法是针对一个特殊的图-篱笆网了(Lattice)的有向图最短路径问题而提出来的。它之所以重要,是因为凡是使用隐马尔科夫模型描述的问题都可以用它解码,包括当前的数字通信、语音识别、机器翻译、拼音转汉字、分词等。背景假定用户(盲打时)输入的拼音...原创 2018-07-08 16:39:01 · 12982 阅读 · 1 评论 -
信息增益的计算
信息增益有的也成为信息获取量(Information Gain)。 这里主要介绍在决策树中的使用。 Gain(A)=Infor(D)−Infor_A(D)Gain(A)=Infor(D)−Infor_A(D)Gain(A) = Infor(D) - Infor\_A(D) 这里以特征A为例,特征A的信息增益计算方式如下:计算整个信息(就是计算是否买电脑)的熵: Infor(D)=...原创 2018-06-01 11:04:56 · 7911 阅读 · 0 评论 -
基于python的几种中文分词-词性获取
基于python的几种中文分词-词性获取1.测试环境2.安装与使用2.1 jieba分词2.2 清华大学的THULAC2.3 HanLP2.4 pynlpir基于python的几种中文分词-词性获取根据当前网络上关于中文分词的python包,先取以下四种方式:jieba分词;清华大学的THULAC;HanLP;pynlpir.1.测试环境...原创 2018-05-12 20:17:55 · 10705 阅读 · 0 评论 -
基于python中jieba包的中文分词中详细使用(二)
基于python中jieba包的中文分词中详细使用(二)01.前言02.关键词提取02.01基于TF-IDF算法的关键词提取02.02词性标注02.03并行分词02.04Tokenize:返回词语在原文的起止位置02.05ChineseAnalyzer for Whoosh 搜索引擎03.延迟加载04.其他词典写在最后基于python中jieba包的中文分词...原创 2018-05-07 15:13:13 · 22690 阅读 · 0 评论 -
基于python中jieba包的中文分词中详细使用(一)
基于python中jieba包的中文分词中详细使用(一)01.前言02.jieba的介绍02.1 What02.2特点02.3安装与使用02.4涉及到的算法03.主要功能03.01分词03.02添加自定义词典03.02调整词典04.结束语基于python中jieba包的中文分词中详细使用(一)01.前言之前的文章中也是用过一些jieba...原创 2018-05-06 12:43:21 · 73854 阅读 · 11 评论 -
基于python的词云(英文内容)生成
基于python的词云生成(一)1.背景 前段时间网络中出现很多关于很多文字组成的图片,生成的图片看起来还是挺有意思,这里使用python做出词云图片。其中需要解释的是:词云又叫文字云,是对文本数据中出现频率较高的“关键词”在视觉上的突出呈现,形成关键词的渲染形成类似云一样的彩色图片,从而一眼就可以领略文本数据的主要表达意思。;2.本博客主要目标 本篇博客主要介绍p...原创 2018-03-13 08:45:29 · 16338 阅读 · 0 评论 -
基于python的词云生成-中文词云(指定词云形状)
基于python的词云生成(二)1.简介 本文是在基于python的词云生成(一)的基础上,进一步对云词进行编写,本文还使用了jieba分词对中文进行分词处理,以做出更好的效果。 jieba分词包(https://pypi.python.org/pypi/jieba/):在自然语言处理过程中,为了能更好地处理句子,往往需要把句子拆开分成一个一个的词语,这样能更好的分析句子的...原创 2018-03-14 19:12:28 · 11806 阅读 · 6 评论 -
自然语言处理(信息论)-信息熵、联合熵、联合熵、条件熵、相对熵、互信息、交叉熵
自然语言处理中数学基础(信息论)01.熵(entropy)如果XXX是一个离散性随机变量,其概率分布为:P(x)=P(X=x)x∈XP(x)=P(X=x)x∈XP(x) = P(X = x){\rm{ }} x \in X,XXX的熵H(X)H(X)H(X)为: H(X)=−∑x∈XP(x)log2P(x)H(X)=−∑x∈XP(x)log2P(x)H(X) = - \s...原创 2018-04-22 10:57:01 · 2460 阅读 · 0 评论