1、自然語言處理的幾個核心問題
- 怎么表示單詞,句子
- 怎么表示單詞或者句子的意思(語意信息)?
- 怎么衡量單詞之間,句子之間的相似度?
2、詞袋模型
詞袋模型(Bag-of-word Model)是一種常用的單詞表示方法。
假設我們辭典里有六個單詞:[今天,我們,去,游泳,明天,跑步]
每個單詞的表示:
- 我們 [1,0,0,0,0,0]
- 去 [0,1,0,0,0,0]
- 游泳 [0,0,1,0,0,0]
- 今天 [0,0,0,1,0,0]
- 你們 [0,0,0,0,1,0]
- 跑步 [0,0,0,0,0,1]
句子的表示:eg我們今天去游泳:[1,1,1,1,0,0]
2.1 怎么計算兩個單詞、句子之間的相似度?
即怎么計算兩個向量之間的距離,有很多種方法,歐氏距離、曼哈頓距離、切比雪夫距離、閔可夫斯基距離、標准化歐氏距離、夾角余弦等,這里暫介紹兩種方法:歐式距離,和余弦相似度
2.1.1 歐式距離(數值越小,相似度越大)
歐式距離源自N維歐氏空間中兩點x1,x2的距離公式
2.1.2 余弦相似度(數值越大,相似度越大)
余弦相似度,又稱為余弦相似性,是通過計算兩個向量的夾角余弦值來評估他們的相似度。0度角的余弦值是1,而其他任何角度的余弦值都不大於1;並且其最小值是-1。
余弦相似度通常用於正空間,因此給出的值為0到1之間。
||A||為向量A的范數,向量的模是絕對值在二維和三維空間的推廣,可以認為就是向量的長度。推廣到高維空間中稱為范數。
2.2 詞袋模型的缺點
2.2.1 不能計算詞的相似度
- 我們 [1,0,0,0,0,0]
- 去 [0,1,0,0,0,0]
- 游泳 [0,0,1,0,0,0]
- 今天 [0,0,0,1,0,0]
- 你們 [0,0,0,0,1,0]
- 跑步 [0,0,0,0,0,1]
以上文的辭典為例, (我們,游泳),和(游泳,跑步)之間的相似度是不同的,但是計算其向量距離得到的結果是相同的。
2.2.1 Sparsity 稀疏性
這里我們的辭典中有六個詞,每個向量為六維的,但是在應用中,辭典中的詞會很多,比如一百萬個,那么此時每個向量就是一百萬維的,但是每個向量中只有一個1,其他參數全為0,含有信息量非常稀疏。
3、為了克服詞袋模型的缺點,我們提出了詞向量表示方法
這樣就可以計算詞的相關性,當辭典規模較大時,也可以將每個詞的向量維度控制在一定范圍,不會出現維度災難。
經過深度學習模型訓練后,把相似的詞的賦予較相近的向量值。