文本表示(一)神经网络语言模型

基于神经网络的文本特征提取——从词汇特征表示到文本向量 理解了基础的神经元模型,神经网络就很好理解了。神经元就像一块乐高积木,而神经网络就是搭的积木。如上图,xxx那一列,我们称为输入层,输出y\hat{y}y​那列称为输出层,中间那列称为隐藏层。隐藏层可以有多个,而且每个隐藏层有多少个神经元也都是可以自主调整的。经典的神经网络中,当前层的神经元会后后一层的各个神经元进行连接,这也称为全连接。 阅读详情

文本的表示

因为文本是由文字、标点组成的,但是计算机并不能高效的处理真实的文本;为了解决这种问题,就需要一种形式化的方法来表示真实文本。通常将文本转换为向量进行表示。

向量空间模型

向量空间模型(vector space model,VSM)是一种最简单的文本表示方法。

VSM假设文档符合:a、各特征项tit_iti​不重复;b、各特征项没有顺序关系。在这两个假设下可以把所有的特征项t1,...,tnt_1,...,t_nt1​,...,tn​看为一个正交的n维坐标系,那么一个文本就可以表示为这个n维坐标空间中的一个向量,例如坐标值为(w1,...,wn)(w_1,...,w_n)(w1​,...,wn​),则有d=(w1,...,wn)d=(w_1,...,w_n)d=(w1​,...,wn​),称为文本d在向量空间模型下的表示。其中几个概念:

  • 文本:如短语、句子、段落、篇章这样具有一定粒度的文档片段;
  • 特征项:VSM中不可再分的语言单元,可以是字、词、词组、短语等。一段文本可以看成是由特征项组成的集合,表示为(t1,...,tn)(t_1,...,t_n)(t1​,...,tn​),其中tit_iti​表示第i个特征项;
  • 特征项权重:对于含有n个特征项的文本,每个特征项t都依据一定的原则被赋予一个权重w,表示它们在文本中的重要性和相关性,表示为(t1:w1,...,tn:wn)(t_1:w_1,...,t_n:w_n)(t1​:w1​,...,tn​:wn​)简单记为(w1,...,wn)(w_1,...,w_n)(w1​,...,wn​)。

构建向量空间模型需要解决两个问题:如何构造特征项、如何计算特征项的权重。

特征项构造

在建立向量空间模型的文本表示之前,需要做一些预处理动作:分词、去停用词、词形规范化,之后转化为词项的序列。然后利用这些词项去重后构建特征词集合。

这些特征词的集合可以看作一个词表,这个词表可以从语料中产生,也可以从外部导入,所以形象的称为词袋。向量空间模型也被称为词袋模型(bag-of-word,BOW)。

特征项权重

对于词袋模型中的每个词赋于权重,一般有几种方式:

  • 布尔权重:如果特征项tit_iti​在文本d中出现,则tit_iti​的特征为1,否则为0;
  • 特征频率(term frequency,TF):即使用这个特征在文本中出现的次数,作为这个特征项的权重;
    • 计算公式:tfi=N(ti,d)tf_i=N(t_i,d)tfi​=N(ti​,d)
    • 为了避免使用绝对频率导致的权重远高于平均权重,可以使用对数词频权重:fi=log(tfi+1)f_i=log(tf_i+1)fi​=log(tfi​+1)
  • 逆文档词频(inverse document frequency,IDF):DF表示包含特征项的文档的数目,一个特征项的DF越高那么这个特征项的有效信息量一般约低。IDF是反映特征项在整个语料中的全局统计特征。
    • 计算公式:idfi=logNdfiidf_i=log \frac{N}{df_i}idfi​=logdfi​N​,N为文档总数
  • 特征频率-逆文档频率(TF-IDF):认为区别文本最有意义的特征应该是在当前的文本中出现频率足够高,但是在整个文档集合中出现频率足够小的词语,为TF与IDF的乘积:
    • 计算公式:tfidfi=tfi∗idfitfidf_i=tf_i*idf_itfidfi​=tfi​∗idfi​

一般来说TFIDF应用的频率会高一些。在文本分类和情感分析中词袋模型也是很流行的文本表示方法,不过这种模型表示也有缺点:任意的两个词是相互独立的、容易造成数据的稀疏性。这对计算机理解语言是不利的。

词的分布式表示

传统的独热表示方法无法刻画词语的语法以及语意信息。针对这种情况,有研究人员提出了词语的分布式假说:一个词的语义由上下文决定,即上下文相似的词语,其语义也相似。核心思想是 利用低维连续的实数向量表示一个词语,使得语义相近的词在实数向量空间中也相近。 分布式假说表明词语表示的质量很大程度取决于对上下文信息的建模。

神经网络语言模型

神经网络模型中的训练数据都是以句子集合的形式表示:D={wimi}i=1MD=\{w^{m_i}_i\}^M_{i=1}D={wimi​​}i=1M​:

  • mim_imi​表示第i个句子包含的词数
  • wimiw^{m_i}_iwimi​​表示句子词序列:w1,...,wmiw_1,...,w_{m_i}w1​,...,wmi​​
  • 统计在训练集D中出现的词,可以得到一个词汇表V,若每个词都映射到一个d维的分布式向量中,则可以得到一个词向量矩阵L
  • 神经网络语言模型的目标在于怎么优化词向量矩阵
语言模型

语言模型计算一段文本的出现概率,度量改文本的流畅程度。给定m个词语构成的句子w1,...,wmw_1,...,w_mw1​,...,wm​;通过链式法则计算该句出现的可能性:

  • p(w1,...,wm)=p(w1)p(w2∣w1)p(w3∣w1w2)...p(wm∣w1...wm−1)p(w_1,...,w_m)=p(w_1)p(w_2|w_1)p(w_3|w_1w_2)...p(w_m|w_1...w_{m-1})p(w1​,...,wm​)=p(w1​)p(w2​∣w1​)p(w3​∣w1​w2​)...p(wm​∣w1​...wm−1​)
  • p(wm∣w1wm−1)=count(w1,...,wm)count(w1,...,wm−1)p(w_m|w_1w_{m-1})= \frac{count(w_1,...,w_m)}{count(w_1,...,w_{m-1})}p(wm​∣w1​wm−1​)=count(w1​,...,wm−1​)count(w1​,...,wm​)​

通过公式可以看出,当m越大时,w1,...,wmw_1,...,w_mw1​,...,wm​出现的可能性越小,最大似然越不准确。所以可以考虑使用n阶马尔科夫链来对语言模型进行建模:

  • p(wm∣w1...wm−1)~p(wm∣wm−n+1,...,wm−1)p(w_m|w_1...w_{m-1})~p(w_m|w_{m-n+1,...,w_{m-1}})p(wm​∣w1​...wm−1​)~p(wm​∣wm−n+1,...,wm−1​​)
  • 这样一个词只会与前几个词的出现相关,这样就可以进行建模了
  • 但是这种方法也具有一些缺点:依然具有严重的数据稀疏性;无法正确的捕捉到词之间的语义相似性。
基于前馈神经网络的语言模型

将每个词映射为一个低维连续的实数向量,并在连续向量空间中对n元语言模型的概率p(wm∣wm−n+1,...,wm−1)p(w_m|w_{m-n+1,...,w_{m-1}})p(wm​∣wm−n+1,...,wm−1​​)进行建模:
在这里插入图片描述

  • 首先,对于词向量矩阵L进行初始化,参数在后面的训练中进行优化
  • 然后,将历史信息,即前n-1个词映射为词向量,拼接后成为h0=[e(wi−n+1),...,e(wi)]h_0=[e(w_{i-n+1}),...,e(w_i)]h0​=[e(wi−n+1​),...,e(wi​)]层
  • 然后,通过两层的非线形隐藏层学习:h1=tanh(U1h0+b1),h2=tanh(U2h1+b2)h_1=tanh(U^1h_0+b^1),h2=tanh(U^2h_1+b^2)h1​=tanh(U1h0​+b1),h2=tanh(U2h1​+b2)
  • 最后,利用softmax函数计算词表中每个词的概率分布:
    • p(wm∣wm−n+1,...,wm−1)=exp{h2⋅e(wm)}∑k=1∣V∣exp{h2⋅e(wk)}p(w_m|w_{m-n+1,...,w_{m-1}}) = \frac{exp\{h_2·e(w_m)\}}{\sum^{|V|}_{k=1}exp\{h_2·e(w_k)\}}p(wm​∣wm−n+1,...,wm−1​​)=∑k=1∣V∣​exp{h2​⋅e(wk​)}exp{h2​⋅e(wm​)}​
  • 目标函数,最大化训练集的最大似然:
    • ∑m=1Mlog(p(wimi))\sum^M_{m=1}log(p(w^{m_i}_i))∑m=1M​log(p(wimi​​))
  • 通过对目标函数的优化,可以对词向量矩阵L进行参数优化,最终得到一个可用的词向量矩阵。
总结:
  • 神经语言模型的目标在于准确的估计条件概率p(wm∣wm−n+1,...,wm−1)p(w_m|w_{m-n+1,...,w_{m-1}})p(wm​∣wm−n+1,...,wm−1​​)
  • 所以每一个时刻都需要利用隐藏层到输出层的矩阵运算,以及利用softmax函数计算整个词汇表的概率分布。
  • 计算复杂度为:o(∣h∣⋅∣v∣)o(|h|·|v|)o(∣h∣⋅∣v∣),|h|是隐藏层的神经元节点数(几百到一千左右),|v|是词表的规模(几万到十万左右)。
文本表示简介 SIGAI特邀作者:徐国海 研究方向:自然语言处理和知识图谱 其它机器学习、深度学习算法的全面系统讲解可以阅读《机器学习-原理、算法与应用》,清华大学出版社,雷明著,由SIGAI公众号作者倾力打造。 书的购买链接 书的勘误,优化,源代码资源 一、引言 文本分类是自然语言处理中研究最为广泛的任务之一,通过构建模型实现对文本内容进行自动分类,有很多应用场景,比如新闻文章主题分类,产品评论... 阅读详情

相关推荐

基于神经网络语言模型的中文新闻文本聚类算法

一、新闻文本集       其中     通过TF-IDF排序 中的词(由大到小),选择其中的 t 个词作为关键字,,是对应关键字的TF-IDF值。 二、神经网络语言模型 输入:该词的上下文中相邻的几个词向量(词袋模型) 输出:p(wi | context) ,该词的词向量。 通过神经网络语言模型,可以得到新闻词集合 W 中每个词 的词向量;也就是得到了关键字集合 中的每个关键

perfectzq的博客 6058

nlp常用文本表示方式(BOG,W2V,FastText等)

nlp入门

weixin_43935986的博客 826

NLP自然语言处理:神经网络语言模型(NNLM)

目录 一、传统语言模型 1.1 稀疏性 1.2泛化能力差 二、神经网络语言模型 2.1 前馈神经网络模型(FFLM) 2.2 循环神经网络模型(RNNLM) 2.2.1循环神经网络模型示例 2.2.2RNN语言模型训练过程 2.2.3RNN语言模型反向传播 2.2.4语言模型评估 语言模型的构建目的是为了对语言中的各要素的分布进行估计,具有较长的研究历史和广泛...

陈宸的博客 1万+

【文本分类】文本表示 --- VSM

要使得计算机能高效的处理真实文本,就必须找到一种理想的形式化表示方法,这种表示一方面能真实的反映文档内容(主题、领域或结构等),另一方面也要有对不同文档的区分能力。   目前文本表示通常采用向量空间模型(vector space model, VSM) 。VSM是20世纪60年代末期由G. Salton等人提出的,是当前自然语言处理中常用的主流模型。   下面首先给出VSM设计的基本概念...

ccnunlp的专栏 1237

VSM向量空间模型对文本的分类以及简单实现

VSM向量空间模型对文本的分类以及简单实现

VS2022+Qt6保姆级配置指南:从插件安装到项目互通全流程(附常见错误解决)

本文提供了一份详细的Visual Studio 2022与Qt6集成开发环境配置指南。从插件安装、环境搭建到项目创建与互通,涵盖了全流程操作步骤,并针对常见的配置错误和调试问题提供了实用的解决方案,帮助开发者高效构建企业级桌面应用。

nginx7reverse的博客 1207

ElasticSearch探索之路(二)权重计算与文本分析:布尔模型、TF/IDF、向量空间模型、分析与分析器

ElasticSearch的权重计算与文本分析原理

凌桓丶的博客 1659

SECS/GEM协议中的关键指令详解:从S1F1到S9F9的完整指南

本文详细解析了SECS/GEM协议中从S1F1到S9F9的关键指令,涵盖设备状态管理、控制诊断、报警处理等核心功能。通过实际案例和调试技巧,帮助开发者掌握半导体制造设备通信标准,解决SECS/GEM协议在实际工程应用中的通讯难题,提升生产线智能化水平。

weixin_26899659的博客 397

NLP --- 文本分类(向量空间模型(Vector Space Model)VSM)

本节主要介绍文本分类中的一种算法即向量空间模型,这个算法很经典,包含文本预处理、特征选择、特征权值计算、分类算法、这是VSM的几个主要步骤,在宗老师的书里都有详细的讲解,这里也会进行深入的讲解,浅显易懂的是目的,深入理解是目标,下面给出这个VSM模型的方框流程图: 其中分词和词袋的建立我们在前两节进行解释了,这一节将主要介绍特征词选择、文本模型表示(VSM),分类算法的建立。下面就系统的进行...

进击的菜鸟 4万+

从Canny到深度学习:边缘检测指标进化史(含ODS/OIS/AP的数学推导)

本文系统梳理了边缘检测评估指标的演进历程,从经典的Canny算子到深度学习时代,重点解析了ODS、OIS和AP三大核心指标的设计哲学与数学推导。文章深入探讨了基于PR曲线的评估体系,揭示了不同指标(如ODS与OIS)在阈值优化上的差异,并分析了AP指标在边缘检测任务中的优势与局限,为算法研究和模型评估提供了实用指南。

b9c0d的博客 199

定制PYNQ的overlay

一、用HLS生成一个定制IP(加速器)(1)首先打开vivado hls,本人的版本是2017.2,点击创建一个新工程。(2)设置工程名和路径,顶层函数设置为add,创建一个新的C++程序,名字叫做adder.cpp,不用在testbench中添加文件。选择板子的时候搜索xc7z020clg400-1,这是PYNQ的板子号,选择完成。             (3)在左侧的菜单栏里选择Sourc...

bramblewalls的博客 1万+

文本表示(一)—— word2vec(skip-gram CBOW) glove, transformer, BERT

文本离散表示 1.one-hot 简单说,就是用一个词典维度的向量来表示词语,当前词语位置为1,其余位置为0.例如vocabulary = ['胡萝卜’ , ‘兔子’, ‘猕猴桃’],采用三维数组表示,胡萝卜 = [1, 0, 0],兔子= [0, 1, 0],猕猴桃= [0, 0, 1] 维度太大 2.词袋模型与TF-IDF 词袋模型:将字符串视为一个“装满字符(词)的袋子”,袋子里的词语是随便摆放的。而两个词袋子的相似程度就以它们重合的词及其相关分布进行判断 优点:简单...

2925

从‘眼花缭乱’到‘心中有数’:rs-fMRI统计分析全流程避坑指南(附DPABI操作截图)

本文详细解析了rs-fMRI统计分析的全流程,从质量控制到统计模型选择,再到多重比较校正和结果解读。特别针对DPABI软件操作中的常见陷阱提供实用指南,帮助研究者避免FDR和GRF校正等关键环节的错误,实现从数据混乱到清晰分析的转变。

weixin_33686714的博客 398

论文读书笔记-improving word representations via global context and multiple word prototypes

这篇论文提出了一种获取词向量的方法,该方法不仅考虑词的局部段落(local context)信息,也考虑了全局文本(global context)信息,这样得到的词向量不仅能表示语义信息,也能表示句法信息。同时,本文还提出了一种识别一词多义的方法,在聚类时同一个词的不同意思能划分到不同的类别之中。   下面是本文的一些要点: 1、  常见VSM(vector-spacemodel)的问题

无知的我 3495

基于ESP32的智能健康监测系统开发

本文介绍了如何基于ESP32开发智能健康监测系统,从硬件选型、系统架构到软件实现的每一个环节。通过ESP32的Wi-Fi功能、传感器模块和云平台的结合,我们实现了实时健康数据监测、远程查看、报警等功能。系统的低功耗特性使得其适用于长期健康监测,能够为用户提供更便捷的健康管理方案。随着技术的不断发展,未来智能健康监测系统将进一步发展。例如,增加更多的传感器,提升数据分析能力,甚至通过人工智能算法来预测用户的健康趋势,为用户提供个性化的健康建议。

2201_76125393的博客 1104

LeetCode 热题 100 回顾

力扣最受刷题发烧友欢迎的 100 道题 LeetCode 热题 100 : 题目回顾、解题思路、复杂度分析、代码实现、验证算法

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 9万+

语言模型和词向量的发展史及其原理

语言模型和词向量的发展史及其原理

qq_44707928的博客 608

【基础-多选】HarmonyOS鸿蒙应用开发

1、HarmonyOS提供了基础的应用加固安全能力,包括混淆、加密和代码签名能力。正确2、可以通过ohpm uninstall 指令下载指定的三方库。错误3、支持模块化开发是指一个应用通常会包含多种功能,将不同的功能特性按模块来划分和管理是一种良好的设计方式。在开发过程中,我们可以将每个功能模块作为一个独立的Module进行开发,Module中可以包含源代码、资源文件、第三方库、配置文件等,每一个Module可以独立编译,实现特定的功能。这种模块化、松耦合的应用管理方式有助于应用的开发、维护与扩展。正确。

江拥羡橙的博客 1万+

Task6 基于深度学习的文本分类3

学习目标 了解Transformer的原理和基于预训练语言模型(Bert)的词表示 学会Bert的使用,具体包括pretrain和finetune Transformer原理 Transformer是在"Attention is All You Need"中提出的,模型的编码部分是一组编码器的堆叠(论文中依次堆叠六个编码器),模型的解码部分是由相同数量的解码器的堆叠。 我们重点关注编码部分。他们结构完全相同,但是并不共享参数,每一个编码器都可以拆解成两部分。在对输入序列做词的向量化之后,它们首先流过一个s

T_RNA75的博客 202

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

职场竞争你必须知道的Transformer,让你无惧未来

前言自从ChatGPT出现以来,大家都对危机意识感觉是越来越强了,只要你给它指令,它可以帮助你写一篇10万+的文章,帮你画一幅画,帮你生成想要的视频。它强大创造力让人感到惧怕。ChatGPT的强大是因为背靠一位大佬叫做Transformer,翻译为变压器或者是变换器。它用于自然语言处理(NLP)的神经网络架构。也就是说,谁...

weixin_36845026的博客 85

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

NLP中面向文本表示的模型梳理

引言 语言表示是将自然语言表示为计算机或者模型能够处理的数据特征,是解决例如情感分析、命名实体识别、机器翻译、文本生成等这些高级任务的基础。本文作为NLP基础知识的入门,梳理了相关文本表征的模型与方法。 在语音处理技术中,语音信息被解析成为用音频频谱序列向量所构成的matrix,喂入神经网络或者统计学习模型进行处理; 在图像处理技术中,图像信息被解析成由众多像素点构成的matrix,喂入神经网...

weikai_w的博客 2590

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

[一]文本表示

文章目录离散表示独热编码(One-hot)词袋模型(Bag of Words)词频-逆向文件频率(TF-IDF)N-Gram模型(统计语言模型)离散表示的问题分布式表示共现矩阵(Cocurrence matrix)神经网络语言模型(NNLM)Word2VecGlove 文本表示目的:将文本数据表示成计算机能够运算的数字或向量 离散表示 独热编码(One-hot) 思想: 将语料库中所有的词拉成一个向量,给每个词一个下标,就得到对应的词典。每个分词的文本表示为该分词的比特位为1,其余位为0的矩阵表示。

知亦行 508

神经网络语言模型(Neural Network Language Model,NNLM)

NNLM 通过学习文本序列中的词汇之间的概率关系,能够捕捉到语言的结构和语境,从而能够生成自然语言文本或进行其他与语言相关的任务。嵌入层用于将输入的单词转换为连续向量表示,隐藏层用于学习输入序列的语言结构,而输出层则输出下一个单词的概率分布。具体而言,NNLM 试图最大化给定前文单词的条件下,下一个单词出现的概率。NNLM 的输入是一个固定长度的前文单词序列,用于预测下一个单词。每个单词通常由其词嵌入(word embedding)表示,这是一个固定维度的实数向量,它将单词映射到连续的向量空间中。

金石软件 2565

NLP—2.语言模型及文本表示

文章目录一、语言模型1. 如何评价语言模型的好坏?2. 语言模型的平滑概念3.语言模型在拼写纠错中的应用3.1 如何解决错别字错误?二、文本表示1. 词集模型—onthot编码2.词袋模型—Bag of Words3.Word2Vec—词嵌入模型 一、语言模型   语言模型可以说是自然语言处理中最重要的模型。语言模型可以看做是一个函数,用于计算一个句子出现的概率,即语言模型可以判断某一句话从语法上是否通顺(是不是人话),从语义上是否有歧义。在很多时候,我们都要度量一句话的出现概率,一句话的出现概率等同于一句

柳杰的博客 1220

文本表示

导言 文本分类是自然语言处理中研究最为广泛的任务之一,通过构建模型实现对文本内容进行自动分类,有很多应用场景,比如新闻文章主题分类,产品评论情感分类,检索中用户查询的意图分类等等。文本分类的大致流程:文本预处理,抽取文本特征,构造分类器。其中研究最多的就是文本特征抽取,更广义上说是文本表示。 关于文本表示,研究者从不同的角度出发,提出大量的文本表示模型。本文重点梳理现有模型,大致分为三类,即基...

Yasin的博客 2251

pytorch NLP自然语言处理入门一:文本表示

开始编辑:2024/2/16;最后编辑2024/2/16教程出自:https://learn.microsoft.com/en-sg/training/modules/intro-natural-language-processing-pytorch/本博客旨在探讨处理自然语言文本的不同神经网络架构。近年来,自然语言处理(Natural Language Processing,NLP)经历了快速发展,主要是由于语言模型能够在大型文本语料库上使用无监督训练时更快地准确“理解”人类语言。

青椒的学习笔记 1604
上一篇: tensorflow-模型持久化(ckpt)
下一篇: 文本表示(二)c&w模型
JustMo_
博客等级 码龄10年 6粉丝 14原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值