聊天机器人-表示学习
1. 文本表示
1.1 Word Representation
词典:[我们,去,爬山,今天,你们,昨天,跑步]
每个单词的表示:(One-Hot Representation)
- 我们:(1,0,0,0,0,0,0) --> 7维 = |词典|
- 爬三:(0,0,1,0,0,0,0) --> 7维 = |词典|
- 跑步:(0,0,0,0,0,0,1) --> 7维 = |词典|
- 昨天:(0,0,0,0,0,1,0) --> 7维 = |词典|
1.2 Sentence Representation (boolean)
词典:[我们,又,去,爬山,今天,你们,昨天,跑步]
每个句子的表示
- 我们 今天 去 爬山:(1,0,1,1,1,0,0,0) --> 8维 = |词典|
- 你们 昨天 跑步:(0,0,0,0,0,1,1,1) --> 8维 = |词典|
- 你们 又 去 爬山 又 去 跑步:(0,1,1,1,0,1,0,1) --> 8维 = |词典|
1.3 Sentence Representation (count)
词典:[我们,又,去,爬山,今天,你们,昨天,跑步]
每个句子的表示
- 我们 今天 去 爬山:(1,0,1,1,1,0,0,0) --> 8维 = |词典|
- 你们 昨天 跑步:(0,0,0,0,0,1,1,1) --> 8维 = |词典|
- 你们 又 去 爬山 又 去 跑步:(0,2,2,1,0,1,0,1) --> 8维 = |词典|
2. 文本相似度
2.1 计算距离(欧氏距离): d = |s1 - s2|
S1:“我们 今天 去 爬山” = (1,0,1,1,0,0,0,0)
S2:“你们 昨天 跑步” = (0,0,0,0,0,1,1,1)
S3:“你们 又 去 爬山 又 去 跑步” = (0,2,2,1,0,1,0,1)
计算:
结论:
sim(S1,S2)>sim(S1,S3)>sim(S2,S3)
2.2 计算相似度(余弦相似度): d = (s1 * s2) / (|s1| * |s2|)
S1:“我们 今天 去 爬山” = (1,0,1,1,0,0,0,0)
S2:“你们 昨天 跑步” = (0,0,0,0,0,1,1,1)
S3:“你们 又 去 爬山 又 去 跑步” = (0,2,2,1,0,1,0,1)
计算:
结论:
sim(S1,S3)>sim(S2,S3)>sim(S1,S2)
2.3 句子相似度思考
句子1:He is going from Beijing to Shanghai |
---|
句子2:He denied my request, but he actually lied |
句子3:Mike lost the phone, and phone was in the car |
句子1:(0,0,1,0,0,0,1,1,1,0,1,0,0,0,0,0,0,1,0,1,0) |
句子2:(1,0,0,1,0,1 ,0,0,2 ,0,0,1,0,0,1,0,1,0,0,0,0) |
句子3:(0,1,0,0,1,0,0,0,0,1,0,0,1,1,0,2,0,0,2,0,1) |
并不是出现的越多就越重要! |
并不是出现的越少越不重要! |
3. Tf-idf Representation
tfidf(w) = tf(d,w) * idf(w)
tf(d,w):文档d中w的词频。
idf(w):考虑单词的重要性。
N:语料库中的文档总数
N(w):词语w出现在多少个文档?
词典:[今天,上,NLP,课程,的,有,意思,数据,也] |词典|=9 |
---|
句子1:今天 上 NLP 课程 |
句子1:( |
句子2:今天 的 课程 有 意思 |
句子2:( |
句子3:数据 课程 也 有 意思 |
句子3:( |
上面的单词表示与句子表示的语义相似度有什么问题呢?
- one-hot表示法无法表示单词相似度。
- 都是稀疏的(Sparsity)。
4. 分布式表示(Distributed Representation)
![](https://img.haomeiwen.com/i4905462/e033b05a91d74c20.png)
4.1 两个问题
Q: 100维的One-Hot
表示法最多可以表达多少个不同的单词?
答案:100个单词!
Q:100维的分布式
表示法最多可以表达多少个不同的单词?
答案:个不同的单词!
4.2 如何学习分布式(词向量)
表示呢?
![](https://img.haomeiwen.com/i4905462/e89f6783b15348f4.png)
4.3 Essence of Word Embedding
向量表示语义。
![](https://img.haomeiwen.com/i4905462/942b080c3800d1bb.png)
4.4 From Word Embedding to Sentence Embedding
![](https://img.haomeiwen.com/i4905462/1254e54d4a4883ea.png)
- 每个单词向量加起来求平均;
- 每个单词向量(100dim)连接起来(30*100dim);
- ......等。
5. 倒排表
5.1 思考
![](https://img.haomeiwen.com/i4905462/6d709e5ccaea203b.png)
核心思路:“层次过滤思想”
![](https://img.haomeiwen.com/i4905462/9149c6f294fc012e.png)
![](https://img.haomeiwen.com/i4905462/e078470da6f6204d.png)
过滤器实现:可使用倒排表技术
![](https://img.haomeiwen.com/i4905462/fdbcda4ac7c6c3d8.png)
参考文献
- 自然语言处理实战
- 数学之美(第二版)
- 智能问答与深度学习