自然语言处理--文本表示

自然语言处理–文本表示

引言

所谓文本表示既是通过某种形式将文本字符串表示成计算机所能处理的数值向量。那么为什么要进行文本表示,根本原因是计算机不能直接对文本字符串进行处理,因此需要进行数值化或者向量化。不仅传统的机器学习算法需要这个过程,深度学习也需要这个过程,只不过这个过程可能直接包含在了深度学习网络中;同时,良好的文本表示形式也可以极大的提升算法效果。

表示方法分类

文本表示一直以来都是自然语言处理研究领域中的一个热点问题,总体来讲主要分为二大类,

  • One-hot Representation ,直译是独热编码,但笔者不建议去强硬翻译,因为有些时候中文并不一定有确切的词与其对应,这样会有失偏颇。这种编码格式首先建立一个全局的完备的词典,该词典包含所有文本中的词,因此该方式表示后的形式为一个很大的vector,vector中只在该词出现的位置设置为1,表示该词出现,其余全部为0.这种形式的弊端,未考虑词序信息,未考虑词的上下文信息,造成维数灾难,出现语义鸿沟现象,仅从向量上无法表示两个词之间是否相近。
  • Distributional Representation, 分布式表示。该算法的思想主要基于1954年Harris提出的分布式假说,“上下文相似的词,其语义也相似”,后来又经过Firth对该假说进行阐述和论证,“词的语义由其上下文确定”。该方法的思路是选择一种方式描述词的上下文,通过某种模型找出词(目标词)与上下文之间的关系。根据建模方式的不同,将分布式算法归纳为三大类,基于矩阵模型,基于聚类模型,基于神经网络模型。下文会对各模型中设计到的算法进行简单解释。

分布表示算法

基于矩阵模型

该模型的思路主要是,根据文本内容构建一个词-上下文矩阵,每一行代表一个词,每一列代表一个文本或者上下文,那么每行就可以作为一个term的表示。

  • 词 -上下文 矩阵构造
    给定一篇文章或者一个语料库,首先将其转换为为 term-document矩阵

  • 矩阵元素值 表示

    矩阵中每个元素的value可以是该 term的TF-IDF值,通常此种方法简洁高效,工程中应用也最为广泛。

  • 降维
    对于文本数据来说,构造出来的矩阵是高维、稀疏矩阵,因此为便于后续的处理通常会采用降维方法对矩阵进行降维,保留更有意义的内容,常用的方式为SVD(Singular Value Decomposition)。为了更加直观的理解这个算法,通过一个具体的文本数据来感知基于矩阵建模的过程。
    首先给定文档内容如下:

    doc1 : “NBA2K16 视频 设置 存储 位置 _NBA 视频 设置 存储 位置 解析 攻略 玩游戏”
    doc2 : “NBA2K16 ncaa 豪门 大学 选择 推荐 NBA ncaa 大学 选择 游戏网 攻略”
    doc3 : “NBA2K16 学好 NBA2K16 大学 名校 选择 攻略 攻略 心得 单机”

    • 构造 term-document matrix,矩阵的元素为该词在不同doc里出现的次数
    term-DocMatrix ^T= [[1, 1, 0, 2, 0, 0, 0, 2, 0, 0, 0, 1, 0, 1, 2, 1, 2, 0, 0],
                        [1, 1, 2, 0, 0, 0, 2, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 2],
                        [0, 2, 0, 0, 1, 1, 1, 0, 1, 1, 0, 2, 0, 0, 0, 0, 0, 0, 1]] 
    term^T = [ nba , nba2k16 , ncaa , 位置 , 单机 ,名校 , 大学 , 存储 , 
    学好 , 心得 , 推荐 , 攻略 , 游戏网 , 玩游戏 , 视频 , 解析 , 设置 , 豪门 , 选择]
    

    如上图所示,term-DocMatrix 是词-文档矩阵,每一列是一个doc,每一行代表每个词在不同doc中的词频。(本示例中采用的是分好词的文本,token之间用space隔开)

    • 采用TF-IDF 模型填充term-docMatrix中每个元素值。

      term-docValueMatrix^T = [
             [ 0.17322273,  0.1345229 ,  0.        ,  0.45553413,  0.        ,
               0.        ,  0.        ,  0.45553413,  0.        ,  0.        ,
               0.        ,  0.1345229 ,  0.        ,  0.22776707,  0.45553413,
               0.22776707,  0.45553413,  0.        ,  0.        ],
             [ 0.21172122,  0.16442041,  0.55677592,  0.        ,  0.        ,
               0.        ,  0.42344244,  0.        ,  0.        ,  0.        ,
               0.27838796,  0.16442041,  0.27838796,  0.        ,  0.        ,
               0.        ,  0.        ,  0.27838796,  0.42344244],
             [ 0.        ,  0.41900794,  0.        ,  0.        ,  0.35472106,
               0.35472106,  0.26977451,  0.        ,  0.35472106,  0.35472106,
               0.        ,  0.41900794,  0.        ,  0.        ,  0.        ,
               0.        ,  0.        ,  0.        ,  0.26977451]]
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值