在分詞之後,如果想要做一些有意思的事情(比如文字分類和句子相似度分析等)就需要文字的表示。
文字的表示就是通過向量來表示單詞、句子以及文章。
首先來看下單詞的表示,有很多種方法。今天我們先來介紹乙個最簡單的方法。
單詞的表示首先需要有乙個詞典,這裡假設我們的詞典是這樣的:
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
。
此方法會考慮單詞出現的次數,即詞頻。
貪心學院課程
自然語言處理
自然語言處理主要步驟包括 2.詞法分析 對於英文,有詞頭 詞根 詞尾的拆分,名詞 動詞 形容詞 副詞 介詞的定性,多種詞意的選擇。比如diamond,有菱形 棒球場 鑽石3個含義,要根據應用選擇正確的意思。3.語法分析 通過語法樹或其他演算法,分析主語 謂語 賓語 定語 狀語 補語等句子元素。4.語...
自然語言處理
前言 自然語言處理 natural language processing 是計算科學領域與人工智慧領域中的乙個重要方向。它研究能實現人與計算機之間用自然語言進行有效通訊的各種理論和方法。自然語言處理是一門融語言學 電腦科學 數學於一體的科學。因此,這一領域的研究將涉及自然語言,即人們日常使用的語言...
自然語言處理
一 字串操作 去空格及特殊符號 s hello,world 預設把左右空格去掉 print s.strip print s.lstrip hello,print s.rstrip 查詢字元 0 為未找到 sstr1 strchr sstr2 tr 找到返回目標子串開始下標 npos sstr1.in...