怎样看一个网站是哪个公司做的,昆明软件开发公司排名,创建软件网站,360网站怎么做链接越来越多的人选择参加算法赛事#xff0c;为了提升项目实践能力#xff0c;同时也希望能拿到好的成绩增加履历的丰富度。期望如此美好#xff0c;现实却是#xff1a;看完赛题#xff0c;一点思路都木有。那么#xff0c;当我们拿到一个算法赛题后#xff0c;如何破题为了提升项目实践能力同时也希望能拿到好的成绩增加履历的丰富度。期望如此美好现实却是看完赛题一点思路都木有。那么当我们拿到一个算法赛题后如何破题如何找到可能的解题思路呢。本文针对NLP项目给出了4种常见的解题思路其中包含1种基于机器学习的思路和3种基于深度学习的思路。一、数据及背景https://tianchi.aliyun.com/competition/entrance/531810/information阿里天池-零基础入门NLP赛事二、数据下载及分析2.1 获取数据我们直接打开数据下载地址看到的是这样一个页面接着就三步走注册报名下载数据查看数据前五行可以看到我们获得的数据如下其中左边的label是数据集文本对应的标签而右边的text则是编码后的文本文本对应的标签列举如下根据官方描述赛题以匿名处理后的新闻数据为赛题数据数据集报名后可见并可下载。赛题数据为新闻文本并按照字符级别进行匿名处理。整合划分出14个候选分类类别财经、彩票、房产、股票、家居、教育、科技、社会、时尚、时政、体育、星座、游戏、娱乐的文本数据。赛题数据由以下几个部分构成训练集20w条样本测试集A包括5w条样本测试集B包括5w条样本。为了预防选手人工标注测试集的情况我们将比赛数据的文本按照字符级别进行了匿名处理。同时我们还应该注意到官网有给出结果评价指标我们也需要根据这个评价指标衡量我们的验证集数据误差既然该拿到的我们都拿到了我们接下来就开始构思我们都应该使用哪些思路来完成我们的预测。2.2 常见思路赛题本质是一个文本分类问题需要根据每句的字符进行分类。但赛题给出的数据是匿名化的不能直接使用中文分词等操作这个是赛题的难点。因此本次赛题的难点是需要对匿名字符进行建模进而完成文本分类的过程。由于文本数据是一种典型的非结构化数据因此可能涉及到特征提取和分类模型两个部分。为了减低参赛难度我们提供了一些解题思路供大家参考思路1TF-IDF 机器学习分类器直接使用TF-IDF对文本提取特征并使用分类器进行分类。在分类器的选择上可以使用SVM、LR、或者XGBoost。思路2FastTextFastText是入门款的词向量利用Facebook提供的FastText工具可以快速构建出分类器。思路3WordVec 深度学习分类器WordVec是进阶款的词向量并通过构建深度学习分类完成分类。深度学习分类的网络结构可以选择TextCNN、TextRNN或者BiLSTM。思路4Bert词向量Bert是高配款的词向量具有强大的建模学习能力。三、基于机器学习的文本分类3.1 TF-IDF机器学习分类器(思路1)3.1.1. 什么是TF-IDFTF-IDF(term frequency–inverse document frequency)是一种用于信息检索与数据挖掘的常用加权技术常用于挖掘文章中的关键词而且算法简单高效常被工业用于最开始的文本数据清洗。TF-IDF有两层意思一层是词频Term Frequency缩写为TF另一层是逆文档频率Inverse Document Frequency缩写为IDF。当有TF(词频)和IDF(逆文档频率)后将这两个词相乘就能得到一个词的TF-IDF的值。某个词在文章中的TF-IDF越大那么一般而言这个词在这篇文章的重要性会越高所以通过计算文章中各个词的TF-IDF由大到小排序排在最前面的几个词就是该文章的关键词。3.2.2. TF-IDF算法步骤第一步计算词频考虑到文章有长短之分为了便于不同文章的比较进行词频标准化:第二步计算逆文档频率这时需要一个语料库corpus用来模拟语言的使用环境。如果一个词越常见那么分母就越大逆文档频率就越小越接近0。分母之所以要加1是为了避免分母为0即所有文档都不包含该词。log表示对得到的值取对数。第三步计算TF-IDF可以看到TF-IDF与一个词在文档中的出现次数成正比与该词在整个语言中的出现次数成反比。所以自动提取关键词的算法就很清楚了就是计算出文档的每个词的TF-IDF值然后按降序排列取排在最前面的几个词。3.3.3. 优缺点TF-IDF的优点是简单快速而且容易理解。缺点是有时候用词频来衡量文章中的一个词的重要性不够全面有时候重要的词出现的可能不够多而且这种计算无法体现位置信息无法体现词在上下文的重要性。如果要体现词的上下文结构那么你可能需要使用word2vec算法来支持。四、基于深度学习的文本分类4.1 FastText(思路2)4.1.1 FastText的核心思想将整篇文档的词及n-gram向量叠加平均得到文档向量然后使用文档向量做softmax多分类。这中间涉及到两个技巧字符级N-gram特征的引入以及分层Softmax分类。4.1.2 字符级N-gram特征N-gram是基于语言模型的算法基本思想是将文本内容按照子节顺序进行大小为N的窗口滑动操作最终形成窗口为N的字节片段序列。举个例子我来到达观数据参观相应的bigram特征为我来 来到 到达 达观 观数 数据 据参 参观相应的trigram特征为我来到 来到达 到达观 达观数 观数据 数据参 据参观注意一点n-gram中的gram根据粒度不同有不同的含义。它可以是字粒度也可以是词粒度的。上面所举的例子属于字粒度的n-gram词粒度的n-gram看下面例子我 来到 达观数据 参观相应的bigram特征为我/来到 来到/达观数据 达观数据/参观相应的trigram特征为我/来到/达观数据 来到/达观数据/参观n-gram产生的特征只是作为文本特征的候选集你后面可能会采用信息熵、卡方统计、IDF等文本特征选择方式筛选出比较重要特征。4.1.3 分层Softmax分类softmax函数常在神经网络输出层充当激活函数目的就是将输出层的值归一化到0-1区间将神经元输出构造成概率分布主要就是起到将神经元输出值进行归一化的作用。下图是一个分层Softmax示例通过分层的Softmax计算复杂度一下从|K|降低到log|K|。4.2 Word2Vec深度学习分类器(思路3)4.2.1 Word2VecWord2vec是一群用来产生词向量的相关模型。这些模型为浅而双层的神经网络用来训练以重新建构语言学之词文本。网络以词表现并且需猜测相邻位置的输入词在word2vec中词袋模型假设下词的顺序是不重要的。训练完成之后word2vec模型可用来映射每个词到一个向量可用来表示词对词之间的关系该向量为神经网络之隐藏层。【百度百科】Word2vec 是 Word Embedding 的方法之一。他是 2013 年由谷歌的 Mikolov 提出了一套新的词嵌入方法。4.2.2 优化方法为了提高速度Word2vec 经常采用 2 种加速方式1、Negative Sample负采样2、Hierarchical Softmax4.2.3 优缺点优点由于 Word2vec 会考虑上下文跟之前的 Embedding 方法相比效果要更好但不如 18 年之后的方法比之前的 Embedding方 法维度更少所以速度更快通用性很强可以用在各种 NLP 任务中缺点由于词和向量是一对一的关系所以多义词的问题无法解决。Word2vec 是一种静态的方式虽然通用性强但是无法针对特定任务做动态优化4.3 Bert词向量(思路4)BERTBidirectional Encoder Representations from Transformers词向量模型2018年10月在《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》这篇论文中被Google提出在11种不同nlp测试中创出最佳成绩包括将glue基准推至80.4%绝对改进7.6%multinli准确度达到86.7% 绝对改进率5.6%等。4.1.1 特征1、通过联合调节所有层中的左右上下文来预训练深度双向表示2、the first fine-tuning based representation model that achieves state-of-the-art performance on a large suite of sentence-level and token-level tasks, outperforming many systems with task-specific architectures3、所需计算量非常大。Jacob 说「OpenAI 的 Transformer 有 12 层、768 个隐藏单元他们使用 8 块 P100 在 8 亿词量的数据集上训练 40 个 Epoch 需要一个月而 BERT-Large 模型有 24 层、2014 个隐藏单元它们在有 33 亿词量的数据集上需要训练 40 个 Epoch因此在 8 块 P100 上可能需要 1 年16 Cloud TPU 已经是非常大的计算力了。4、预训练的BERT表示可以通过一个额外的输出层进行微调适用于广泛任务的state-of-the-art模型的构建比如问答任务和语言推理无需针对具体任务做大幅架构修改。5、一词多义问题温馨提醒主页置顶的有实用贴合集欢迎大家积极参与和分享你分享我赠书一起涨姿势文章转载自Datawhale如有侵权可私信联系删稿感谢关注和点赞 会定期分享你想了解的干货知识。