word2vec

【中文分词系列】 5. 基于语言模型的无监督分词

耗尽温柔 提交于 2020-10-01 00:02:16
转载:https://spaces.ac.cn/archives/3956/ 迄今为止,前四篇文章已经介绍了分词的若干思路,其中有基于最大概率的查词典方法、基于HMM或LSTM的字标注方法等。这些都是已有的研究方法了,笔者所做的就只是总结工作而已。查词典方法和字标注各有各的好处,我一直在想,能不能给出一种只需要大规模语料来训练的无监督分词模型呢?也就是说,怎么切分,应该是由语料来决定的,跟语言本身没关系。说白了,只要足够多语料,就可以告诉我们怎么分词。 看上去很完美,可是怎么做到呢? 《2.基于切分的新词发现》 中提供了一种思路,但是不够彻底。 那里居于切分的新词发现方法确实可以看成一种无监督分词思路,它就是用一个简单的凝固度来判断某处该不该切分。但从分词的角度来看,这样的分词系统未免太过粗糙了。因此,我一直想着怎么提高这个精度,前期得到了一些有意义的结果,但都没有得到一个完整的理论。而最近正好把这个思路补全了。因为没有查找到类似的工作,所以这算是笔者在分词方面的一点原创工作了。 语言模型 首先简单谈一下语言模型。 很多数据挖掘的读者都已经听说过Word2Vec,知道它是一个能够生成词向量的工具,很多人也知道将词向量作为模型的特征来进行输入。但相信不少读者不知道为什么会有词向量,为什么Word2Vec能生成词向量。Word2Vec本身的光芒(Google出品、速度快、效果也不错

阿里天池文本分类竞赛task1: 赛题理解

纵饮孤独 提交于 2020-08-20 08:20:04
一.比赛背景 在本次Datawhale的竞赛当中,我们有一个具有20w条训练集,5w条测试集的数据集。整个数据集里面包含了各种分类不同的文本,每一个文本在训练集里都进行了标注label,这个label能够让我们知道训练集里面的句子是属于哪一个类别的数据。本次竞赛的文本分类一共有14个类别的数据,分别是:财经,彩票,房产,家居,教育,科技,社会,时尚,时政,体育,星座,游戏和娱乐。那么我们来看看数据集长啥样: 其中,在数据集中标签的对应的关系如下:{'科技': 0, '股票': 1, '体育': 2, '娱乐': 3, '时政': 4, '社会': 5, '教育': 6, '财经': 7, '家居': 8, '游戏': 9, '房产': 10, '时尚': 11, '彩票': 12, '星座': 13}。这个数据集我们打开只会看到我们text的数据,而不会看到每一条text所对应的label,这是因为在csv文件当中标注的label是不会显示出来的,我们需要将其使用pandas进行读入,然后再通过dataframe来查看这个文件,就可以看到训练集数据的label了! 二.测评指标 在本次比赛当中我们使用了f1_score的测评指标,什么是f1_scrore呢?我们来看看它的定义: 相当于f1_score就是精确率和召回率的一个调和均值,这个算法和物理当中求解电阻的方法非常相似

写给程序员的机器学习入门 (七)

﹥>﹥吖頭↗ 提交于 2020-08-20 07:48:55
这一篇将会介绍什么是双向递归模型和如何使用双向递归模型实现根据上下文补全句子中的单词。 双向递归模型 到这里为止我们看到的例子都是按原有顺序把输入传给递归模型的,例如传递第一天股价会返回根据第一天股价预测的涨跌,再传递第二天股价会返回根据第一天股价和第二天股价预测的涨跌,以此类推,这样的模型也称单向递归模型。如果我们要根据句子的一部分预测下一个单词,可以像下图这样做,这时 天气 会根据 今天 计算, 很好 会根据 今天 和 天气 计算: 那么如果想要预测在句子中间的单词呢?例如给出 今天 和 很好 预测 天气 ,因为只能根据前面的单词预测,单向递归模型的效果会打折,这时候双向递归模型就派上用场了。双向递归模型 (BRNN, Bidirectional Recurrent Neural Network) 会先按原有顺序把输入传给递归模型,然后再按反向顺序把输入传给递归模型,然后合并正向输出和反向输出。如下图所示, hf 代表正向输出, hb 代表反向输出,把它们合并到一块就可以实现根据上下文预测中间的内容, 今天 会根据反向的 天气 和 很好 计算, 天气 会根据正向的 今天 和反向的 很好 计算, 很好 会根据正向的 今天 和 天气 计算。 在 pytorch 中使用双向递归模型非常简单,只要在创建的时候传入参数 bidirectional = True 即可: self.rnn

基于Bert和通用句子编码的Spark-NLP文本分类

南笙酒味 提交于 2020-08-19 22:59:36
作者|Veysel Kocaman 编译|VK 来源|Towards Data Science 自然语言处理(NLP)是许多数据科学系统中必须理解或推理文本的关键组成部分。常见的用例包括文本分类、问答、释义或总结、情感分析、自然语言BI、语言建模和消歧。 NLP在越来越多的人工智能应用中是越来越重要。如果你正在构建聊天机器人、搜索专利数据库、将患者与临床试验相匹配、对客户服务或销售电话进行分级、从财务报告中提取摘要,你必须从文本中提取准确的信息。 文本分类 是现代自然语言处理的主要任务之一,它是为句子或文档指定一个合适的类别的任务。类别取决于所选的数据集,并且可以从主题开始。 每一个文本分类问题都遵循相似的步骤,并用不同的算法来解决。更不用说经典和流行的机器学习分类器,如随机森林或Logistic回归,有150多个深度学习框架提出了各种文本分类问题。 文本分类问题中使用了几个基准数据集,可以在nlpprogress.com上跟踪最新的基准。以下是关于这些数据集的基本统计数据。 简单的文本分类应用程序通常遵循以下步骤: 文本预处理和清理 特征工程(手动从文本创建特征) 特征向量化(TfIDF、频数、编码)或嵌入(word2vec、doc2vec、Bert、Elmo、句子嵌入等) 用ML和DL算法训练模型。 Spark-NLP中的文本分类 在本文中,我们将使用通用句子嵌入

一文总结词向量的计算、评估与优化

穿精又带淫゛_ 提交于 2020-08-19 05:36:10
作者:芙蕖, Datawhale优秀学习者 ,东北石油大学 为了处理语言,需要将文本信息用向量的形式表达。词向量(Word Vector)或称为词嵌入(Word Embedding)就是将词语向量化。常见的生成词向量的神经网络模型有NNLM模型,C&W模型,CBOW模型和Skip-gram模型。 本文目录: 1. 词向量计算方法 1.1 Word2Vec的计算 1.2 Word2Vec中计算方法详解 1.3 高频词(the)引起的问题 2. 优化基础 2.1 梯度下降 2.2 随机梯度下降 3. Word Vector优化过程 3.1 SGD引起的稀疏数据 3.2 两种词向量建模方案 3.3 训练效率提升方案 4. 基于统计的单词向量表示 4.1 共现矩阵 4.2 改进思路 5. GloVe模型 5.1 原理 5.2 与Skip-Gram、CBOW模型比较 5.3 步骤 5.4 如何评估词向量的质量 一、词向量计算方法 1.1 word2vec的计算 对一个中心词,与窗口内的context词出现的概率: 通过极大似然方法最大化整个文本出现的概率: 损失函数: 1.2 word2vec中计算方法详解 假设vocabulary包含m个词,每个词向量长度为n, 对于每一个词,作为中心词(center)和非中心词(outside)时分别使用v和u两个向量表示

AI终将砸掉程序员的饭碗,动动手就能自动写代码的GPT-3来了

北城余情 提交于 2020-08-18 05:44:37
近日 OpenAI 发布其最新的NLP模型-GPT-3(论文地址: https://arxiv.org/abs/2005.14165 ),并成功登顶了Github的趋势榜( https://github.com/openai/gpt-3 ) ,这个模型的出现再次证明了,在AI领域大力就是能够出奇迹,GPT3 使用的数据集容量达到了45TB, 参数个数 1750亿,一个 训练好的 模型 就 要 700G的硬盘空间来存储。 而且近日GPT-3模型再度爆红Github,主要还是有网友根据GPT-3模型,上线了一个能够自动生成代码的网站debuid( https://debuild.co/ ) 只要在这个网站注册以后,用户只要用英语描述你的需求,相关前端的代码就会被自动生成出来了,笔者这种在IT界摸爬滚打十几年的老程序,在试用了debuild网站之后,也惊得说不出话来。 初识Open AI 说起Open AI这个公司,在业界抱得大名,首先是因为其在去年DOTA2的顶级赛事T I8 之后,与 世界冠军OG战队 举行了一场表演赛 , 当时Open AI的强化学习模型, 在英雄阵容限定17个,部分道具和功能禁用 的条件下, 以2:0完胜了人类冠军 , 尤其是在第二场比赛中 AI 在 15分钟就解决 了 战斗,展现的强大实力比较令人信服。 这也使人类在对战游戏中的最后一道防线

无所不能的Embedding 1

强颜欢笑 提交于 2020-08-17 20:09:17
word2vec是google 2013年提出的,从大规模语料中训练词向量的模型,在许多场景中都有应用,信息提取相似度计算等等。也是从word2vec开始,embedding在各个领域的应用开始流行,所以拿word2vec来作为开篇再合适不过了。本文希望可以较全面的给出Word2vec从模型结构概述,推导,训练,和基于tf.estimator实现的具体细节。完整代码戳这里https://github.com/DSXiangLi/Embedding 模型概述 word2vec模型结构比较简单,是为了能够在大规模数据上训练,降低了模型复杂度,移除了非线性隐藏层。根据不同的输入输出形式又分成CBOW和SG两种方法。 让我们先把问题简化成1v1的bigram问题,单词i作为context,单词j是target。V是单词总数,N是词向量长度,D是训练词对,输入 \(x_i \in R ^{1*V}\) 是one-hot向量。 模型训练两个权重矩阵, \(W \in R ^{V*N}\) 是输入矩阵,每一行对应输入单词的词向量, \(W^{'} \in R ^{V*N}\) 是输出矩阵,每一行对应输出单词的词向量。词i和词j的共现信息用词向量的内积来表达,通过softmax得到每个单词的概率如下 \[\begin{align} h =v_{wI} &= W^T x_i \\ v_{w^{'}j