美文网首页
聊天机器人-表示学习

聊天机器人-表示学习

作者: 魏鹏飞 | 来源:发表于2019-10-19 21:29 被阅读0次

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)

计算:
d(S1,S2)=\sqrt{1^2+1^2+1^2+1^2+1^2+1^2}=\sqrt{6}
d(S1,S3)=\sqrt{1^2+2^2+1^2+1^2+1^2}=\sqrt{8}
d(S2,S3)=\sqrt{2^2+2^2+1^2+1^2}=\sqrt{10}

结论:
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)

计算:
d(S1,S2)=0/A = 0
d(S1,S3)=\frac{2+1}{\sqrt{3}*\sqrt{11}}=\frac{3}{\sqrt{33}}
d(S2,S3)=\frac{2}{\sqrt{3}*\sqrt{11}}=\frac{2}{\sqrt{33}}

结论:
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):log\frac{N}{N(w)}考虑单词的重要性。

N:语料库中的文档总数
N(w):词语w出现在多少个文档?

词典:[今天,上,NLP,课程,的,有,意思,数据,也] |词典|=9
句子1:今天 上 NLP 课程
句子1:(\frac{1}{4}log\frac{3}{2},\frac{1}{4}log\frac{3}{1},\frac{1}{4}log\frac{3}{1},\frac{1}{4}log\frac{3}{3},0,0,0,0,0)
句子2:今天 的 课程 有 意思
句子2:(\frac{1}{5}log\frac{3}{2},0,0,\frac{1}{5}log\frac{3}{3},\frac{1}{5}log\frac{3}{1},\frac{1}{5}log\frac{3}{2},\frac{1}{5}log\frac{3}{2},0,0)
句子3:数据 课程 也 有 意思
句子3:(0,0,0,\frac{1}{5}log\frac{3}{3},0,\frac{1}{5}log\frac{3}{2},\frac{1}{5}log\frac{3}{2},\frac{1}{5}log\frac{3}{1},\frac{1}{5}log\frac{3}{1})

上面的单词表示与句子表示的语义相似度有什么问题呢?

  1. one-hot表示法无法表示单词相似度。
  2. 都是稀疏的(Sparsity)。

4. 分布式表示(Distributed Representation)

One-Hot表示 vs 分布式表示

4.1 两个问题
Q: 100维的One-Hot表示法最多可以表达多少个不同的单词?

答案:100个单词!

Q:100维的分布式表示法最多可以表达多少个不同的单词?

答案:+\infty个不同的单词!

4.2 如何学习分布式(词向量)表示呢?

学习分布式表示

4.3 Essence of Word Embedding
向量表示语义。

词向量

4.4 From Word Embedding to Sentence Embedding

单词向量求句子向量
  • 每个单词向量加起来求平均;
  • 每个单词向量(100dim)连接起来(30*100dim);
  • ......等。

5. 倒排表

5.1 思考

复杂度高

核心思路:“层次过滤思想”

N非常大时 应用过滤器时

过滤器实现:可使用倒排表技术

倒排表实例

参考文献

  1. 自然语言处理实战
  2. 数学之美(第二版)
  3. 智能问答与深度学习

相关文章

网友评论

      本文标题:聊天机器人-表示学习

      本文链接:https://www.haomeiwen.com/subject/segnmctx.html