赞
踩
在分词之后,如果想要做一些有意思的事情(比如文本分类和句子相似度分析等)就需要文本的表示。
文本的表示就是通过向量来表示单词、句子以及文章。
首先来看下单词的表示,有很多种方法。今天我们先来介绍一个最简单的方法。
单词的表示首先需要有一个词典,这里假设我们的词典是这样的:
word_dic = ['我们','去','爬山','今天','你们','昨天','跑步']
这里只是为了更好的理解,实际上的词典库是很大的,比如有10万个单词。
假设我们现在有“我们”、“爬山”、“跑步”、“昨天”这几个单词,要怎么表示呢。
我们要构造一个维度为词典大小的向量,首先来看“我们”,它出现在词典的第1个位置,索引0的位置置1,其他位置置0。
#我们 (1,0,0,0,0,0,0)
然后剩下的单词也这么表示:
#爬山 (0,0,1,0,0,0)
#跑步 (0,0,0,0,0,1)
#昨天 (0,0,0,0,1,0)
有了单词的表示,那么如何表示句子呢。
假设有以下三个句子:
首先要做的便是分词,如何分词可以看上一篇文章。下面直接给出一种分词的结果:
有了这些之后,下面介绍两种句子的表示方法。
所谓布尔表示,就是非真(1)即假(0)。
word_dic = ['我们','又','去','爬山','今天','你们','昨天','跑步']
我们在这个词典中新加了一个单词“又”。
句子的表示和上面单词的表示类似,不过要同时考虑多个单词,如果某个单词出现了,则设对应位置的值为1
,否则为0
。来看几个例子吧。
我们\今天\去\爬山:
(1,0,1,1,1,0,0,0)
怎么来的呢,第0个位置的“我们”出现了,因此将这个位置的向量值置1
,“又”没有出现,对应位置置0
,“去”出现了,置1
…
最终得到的向量大小也是和词典大小一致。
然后来看下一个句子。
你们\昨天\跑步:
(0,0,0,0,0,1,1,1)
接着看最后一个句子,你们\又\去\爬山\又\去\跑步:
(0,1,1,1,0,1,0,1)
这里要注意的是“又”和“去”在句子中出现了两次,但是布尔只有两个值,非0即1,因此还是用1来表示。
这种表示方法没有考虑单词出现的次数,不管出现了多少次,都是通过1来表示,如果我们考虑次数,那么就是下面这种方法。
还是以上面三个句子和词典为例。
word_dic = ['我们','又','去','爬山','今天','你们','昨天','跑步']
我们\今天\去\爬山:
(1,0,1,1,1,0,0,0)
你们\昨天\跑步:
(0,0,0,0,0,1,1,1)
因为这两个句子中每个单词只出现了一次,所以和布尔表示法没啥区别。
接着看最后一个句子,你们\又\去\爬山\又\去\跑步:
(0,2,2,1,0,1,0,1)
这里是“又”和“去”在句子中出现了两次,因此对应的值就是2
。
此方法会考虑单词出现的次数,即词频。
有了单词和句子的表示,那么我们如何判断两个句子或两个单词之间的相似度呢,请移步下一篇文章。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。