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

1. 引言

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

1.1 表示方法分类

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

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

2. 分布表示算法

2.1 基于矩阵模型

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

  • 词 -上下文 矩阵构造
    给定一篇文章或者一个语料库,首先将其转换为为 term-document 或者是** term-context ** 矩阵
  • 矩阵元素值 表示
    矩阵中每个元素的value可以是该 term的TF-IDF值,通常此种方法简洁高效,工程中应用也最为广泛。
  • 降维
    对于文本数据来说,构造出来的矩阵是高维、稀疏矩阵,因此为便于后续的处理通常会采用降维方法对矩阵进行降维,保留更有意义的内容,常用的方式为SVD(Singular Value Decomposition)。为了更加直观的理解这个算法,通过一个具体的文本数据来感知基于矩阵建模的过程。
    首先给定文档内容如下:

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

1)构造 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隔开)
2) 采用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]]

3)采用SVD 降维
term-docMatrix = USigmaV

U^T = [[-0.31592434,  0.94651327, -0.06560826],
       [-0.66440088, -0.27006617, -0.6968757 ],
       [-0.67732067, -0.17656981,  0.71418472]]

Sigma^T = [ 1.18821321,  0.97769309,  0.79515131]

V^T = [[-0.16444274, -0.36655279, -0.31132663, -0.12111826, -0.20220269,
        -0.20220269, -0.39055228, -0.12111826, -0.20220269, -0.20220269,
        -0.15566331, -0.36655279, -0.15566331, -0.06055913, -0.12111826,
        -0.06055913, -0.12111826, -0.15566331, -0.39055228],
       [ 0.10921512,  0.00914312, -0.15379708,  0.4410066 , -0.06406206,
        -0.06406206, -0.16568749,  0.4410066 , -0.06406206, -0.06406206,
        -0.07689854,  0.00914312, -0.07689854,  0.2205033 ,  0.4410066 ,
         0.2205033 ,  0.4410066 , -0.07689854, -0.16568749],
       [-0.19984651,  0.22114366, -0.48796198, -0.03758631,  0.31860145,
         0.31860145, -0.12880305, -0.03758631,  0.31860145,  0.31860145,
        -0.24398099,  0.22114366, -0.24398099, -0.01879315, -0.03758631,
        -0.01879315, -0.03758631, -0.24398099, -0.12880305],
       [-0.44741306,  0.03857492,  0.08025905,  0.81630905, -0.00975885,
        -0.00975885,  0.03422628, -0.18369095, -0.00975885, -0.00975885,
         0.02738115, -0.04960114,  0.02738115, -0.09184548, -0.18369095,
        -0.09184548, -0.18369095,  0.02738115,  0.03422628],
       [ 0.01801602, -0.25523251,  0.25570126,  0.02316318,  0.89589932,
        -0.10410068, -0.09155289,  0.02316318, -0.10410068, -0.10410068,
        -0.00814018, -0.12093452, -0.00814018,  0.01158159,  0.02316318,
         0.01158159,  0.02316318, -0.00814018, -0.09155289],
       [ 0.01801602, -0.25523251,  0.25570126,  0.02316318, -0.10410068,
         0.89589932, -0.09155289,  0.02316318, -0.10410068, -0.10410068,
        -0.00814018, -0.12093452, -0.00814018,  0.01158159,  0.02316318,
         0.01158159,  0.02316318, -0.00814018, -0.09155289],
       [-0.02484861, -0.41515297, -0.22222725,  0.03237328,  0.00507016,
         0.00507016,  0.84492088,  0.03237328,  0.00507016,  0.00507016,
        -0.10449028, -0.04616452, -0.10449028,  0.01618664,  0.03237328,
         0.01618664,  0.03237328, -0.10449028, -0.15507912],
       [-0.44741306,  0.03857492,  0.08025905, -0.18369095, -0.00975885,
        -0.00975885,  0.03422628,  0.81630905, -0.00975885, -0.00975885,
         0.02738115, -0.04960114,  0.02738115, -0.09184548, -0.18369095,
        -0.09184548, -0.18369095,  0.02738115,  0.03422628],
       [ 0.01801602, -0.25523251,  0.25570126,  0.02316318, -0.10410068,
        -0.10410068, -0.09155289,  0.02316318,  0.89589932, -0.10410068,
        -0.00814018, -0.12093452, -0.00814018,  0.01158159,  0.02316318,
         0.01158159,  0.02316318, -0.00814018, -0.09155289],
       [ 0.01801602, -0.25523251,  0.25570126,  0.02316318, -0.10410068,
        -0.10410068, -0.09155289,  0.02316318, -0.10410068,  0.89589932,
        -0.00814018, -0.12093452, -0.00814018,  0.01158159,  0.02316318,
         0.01158159,  0.02316318, -0.00814018, -0.09155289],
       [-0.02534448, -0.14532188, -0.2739517 ,  0.0097019 ,  0.05538366,
         0.05538366, -0.05617876,  0.0097019 ,  0.05538366,  0.05538366,
         0.93537401,  0.03011687, -0.06462599,  0.00485095,  0.0097019 ,
         0.00485095,  0.0097019 , -0.06462599, -0.05617876],
       [-0.12581243, -0.37592682,  0.16394342, -0.02115422, -0.09313846,
        -0.09313846, -0.131218  , -0.02115422, -0.09313846, -0.09313846,
        -0.03969872,  0.86028813, -0.03969872, -0.01057711, -0.02115422,
        -0.01057711, -0.02115422, -0.03969872, -0.131218  ],
       [-0.02534448, -0.14532188, -0.2739517 ,  0.0097019 ,  0.05538366,
         0.05538366, -0.05617876,  0.0097019 ,  0.05538366,  0.05538366,
        -0.06462599,  0.03011687,  0.93537401,  0.00485095,  0.0097019 ,
         0.00485095,  0.0097019 , -0.06462599, -0.05617876],
       [-0.22370653,  0.01928746,  0.04012952, -0.09184548, -0.00487943,
        -0.00487943,  0.01711314, -0.09184548, -0.00487943, -0.00487943,
         0.01369058, -0.02480057,  0.01369058,  0.95407726, -0.09184548,
        -0.04592274, -0.09184548,  0.01369058,  0.01711314],
       [-0.44741306,  0.03857492,  0.08025905, -0.18369095, -0.00975885,
        -0.00975885,  0.03422628, -0.18369095, -0.00975885, -0.00975885,
         0.02738115, -0.04960114,  0.02738115, -0.09184548,  0.81630905,
        -0.09184548, -0.18369095,  0.02738115,  0.03422628],
       [-0.22370653,  0.01928746,  0.04012952, -0.09184548, -0.00487943,
        -0.00487943,  0.01711314, -0.09184548, -0.00487943, -0.00487943,
         0.01369058, -0.02480057,  0.01369058, -0.04592274, -0.09184548,
         0.95407726, -0.09184548,  0.01369058,  0.01711314],
       [-0.44741306,  0.03857492,  0.08025905, -0.18369095, -0.00975885,
        -0.00975885,  0.03422628, -0.18369095, -0.00975885, -0.00975885,
         0.02738115, -0.04960114,  0.02738115, -0.09184548, -0.18369095,
        -0.09184548,  0.81630905,  0.02738115,  0.03422628],
       [-0.02534448, -0.14532188, -0.2739517 ,  0.0097019 ,  0.05538366,
         0.05538366, -0.05617876,  0.0097019 ,  0.05538366,  0.05538366,
        -0.06462599,  0.03011687, -0.06462599,  0.00485095,  0.0097019 ,
         0.00485095,  0.0097019 ,  0.93537401, -0.05617876],
       [-0.02484861, -0.41515297, -0.22222725,  0.03237328,  0.00507016,
         0.00507016, -0.15507912,  0.03237328,  0.00507016,  0.00507016,
        -0.10449028, -0.04616452, -0.10449028,  0.01618664,  0.03237328,
         0.01618664,  0.03237328, -0.10449028,  0.84492088]]

4)根据SVD的分解结果,因为只有3个奇异值,我们可以根据分解之后的结果重构原来的term-docMatrix,此时,我们只需要U的前三列U[:,:3],V的前三行V[:3,:],重构结果:

term-DocMatrix^T = [[-0.11278275,  0.33070808, -0.30923603,  0.01264451,  0.35411661,
          0.35411661,  0.03413284,  0.01264451,  0.35411661,  0.35411661,
         -0.15461801,  0.33070808, -0.15461801,  0.00632225,  0.01264451,
          0.00632225,  0.01264451, -0.15461801,  0.03413284],
        [ 0.29332642,  0.1084434 ,  0.64500943,  0.12636854, -0.10103917,
         -0.10103917,  0.4137034 ,  0.12636854, -0.10103917, -0.10103917,
          0.32250471,  0.1084434 ,  0.32250471,  0.06318427,  0.12636854,
          0.06318427,  0.12636854,  0.32250471,  0.4137034 ],
        [ 0.05335364,  0.38241006,  0.05768725,  0.08262001,  0.28866144,
          0.28866144,  0.26340711,  0.08262001,  0.28866144,  0.28866144,
          0.02884362,  0.38241006,  0.02884362,  0.04131001,  0.08262001,
          0.04131001,  0.08262001,  0.02884362,  0.26340711]]

经过svd计算之后重新生成的term-docMatrix中的每个词的表示已经包含了部分语义了,因此可以直接用于后续NLP任务中。

2.1.1 基于矩阵模型的算法

  • LSA/LSI(Latent Semantic Analysis/ Indexing)
    前一节示例的过程其实就是LSA 算法的运行过程。LSI可以说是LSA在search场景下的一个应用,给定一个document collection和一个query,返回query对应的查询。首先将document collection 转换为term-document matrix,term通常来源于document的title,keywords list,abstract,同时也将query转换为一个vector,vector中元素的值为每个词的平均权重,可以用TF-IDF模型计算得出,从而可以根据向量计算出query对应的document。
    为什么LSA可以有效解词语同义和多义的问题:
    LSA/I 本质是挖掘词与词在文档层面共现模式,如果两个词经常同时出现,那么他们很容易被理解为具有相同的语义,同时如果两个词的背景上下文经常相同或相似,他们也被理解为具有相同语义。LSA通过捕获这些共现模式,使得在同一个主题中,具有高权重的词聚合在一起,也说明这些词语义相近。
    优点是能够避免简单语义鸿沟,解决此的歧义问题。缺点是对于大规模语料处理时会很耗费时间,因为文本通常维数较高,
  • HAL
  • GloVe
  • Jones & Mewhort

基于 聚类方式:

  • Brown Clustering

基于神经网络:

  • Skip-gram
  • CBOW
  • Order
  • LBL
  • NNLM
  • C&W

2. 每个词向量算法原理探究

3. 不同算法对比

4. 总结

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容