文本的表示方法 -(one-hot representation) - 单词表示方法“one-hot encoding”、句子的表示方法“Boolean、count、Tf-idf” 应用举例
一、文本的表示方法简介
由于文字是人类认知过程中产生的高层认知抽象实体,计算机无法直接识别,我们需要将其转换为 “ 数字向量或矩阵 ” 这种计算机可识别的形式。比如:对单词的意思进行编码以便我们可以计算语义它们之间的相似性(例:比较篮球和足球相似,还是足球和菜谱相似)、文档检索(例:检索与查询(web搜索))、在文本数据上应用机器学习(例:聚类/分类算法对向量进行操作)。
文本的表示方法可以分为 “ 通过向量的方式去表达一个单词 ” 与 “ 通过向量的方式去表达一个句子 ” 。
其中, “ 通过向量的方式去表达一个单词 ” 我们此次介绍 one-hot encoding 的方法,“ 通过向量的方式去表达一个句子 ” 我们此次介绍 Boolean 、 count 、Tf-idf 。
由于 “ 通过向量的方式去表达一个句子 ” 时,使用 count词频统计 的方法存在一个问题,即 “ 并不是该单词出现的次数越多就越重要,也不是出现次数越少就越不重要 ”,Tf-idf 则考虑了单词的重要性,如下:
二、应用举例
2.1、通过向量的方式去表达一个单词
词典为:[我们,又,去,爬山,今天,你们,昨天,跑步]
每个单词的表示 ( 使用one-hot encoding,即 “对应词典” 将“该单词”出现的位置标为1,其它位置全标为0,“向量维度”=“词典维度” ) :
- 我们:[1,0,0,0,0,0,0,0]
- 爬山:[0,0,0,1,0,0,0,0]
- 跑步:[0,0,0,0,0,0,0,1]
2.2、通过向量的方式去表达一个句子(句子已经过分词处理)
词典为:[我们,又,去,爬山,今天,你们,昨天,跑步]
- 每个句子的表示 ( 使用boolean,即 “对应词典” 将“句子中单词”出现的位置标为1,其它位置全标为0,“向量维度”=“词典维度” ) :
- 我们 今天 去 爬山:[1,0,1,1,1,0,0,0]
- 你们 昨天 跑步:[0,0,0,0,0,1,1,1]
- 你们 又 去 爬山 又 去 跑步:[0,1,1,1,0,1,0,1]
- 每个句子的表示 ( 使用count,即 “对应词典” 将“句子中单词”出现的位置标为“该单词在句子中出现的次数”,其它位置全标为0,“向量维度”=“词典维度” ) :
- 我们 今天 去 爬山:[1,0,1,1,1,0,0,0]
- 你们 昨天 跑步:[0,0,0,0,0,1,1,1]
- 你们 又 去 爬山 又 去 跑步:[0,2,2,1,0,1,0,1]
- 每个句子的表示 ( 使用Tf-idf,即 “对应词典” 将“句子中单词”出现的位置标为“Tfidf(w)值”,其它位置全标为0,“向量维度”=“词典维度”。我们假设以下每一个句子为一个单独的文档 ) :
- 我们 今天 去 爬山:[1log(3),0,1log(3/2),1log(3/2),1log(3),0,0,0]
- 你们 昨天 跑步:[0,0,0,0,0,1log(3/2),1log(3),1log(3/2)]
- 你们 又 去 爬山 又 去 跑步:[0,2log(3),2log(3/2),1log(3/2),0,1log(3/2),0,1log(3/2)]
|