自然語言處理中的語義到底是個什麼概念?語義分析是要分析出什麼結果?
Computational Linguistics里的Semantics是繼承自語言學的概念。
比如你說,樹。這只是一個符號而已。假如你知道了這個符號指的是那種高的長葉子的長在土裡的那個東西(我這個描述弱爆了。。。),那麼這些你想到的東西就可以算作『樹』這個符號的『語義』。而如果你在說話/寫文章/etc. 里用到了『樹』,很可能你指的是一顆特定的樹,相當於一個實體(類似OO里的一個Object/Instance),而這一個特殊的實體很可能有一些更獨特的屬性。
你有了一段Natural Language,你見到了一個詞,Computational Semantics的目的是了解這個詞兒的屬性,以及這個實體和其他實體(可能存在)的關係,etc. 了解了這些,差不多可以說處理了它的語義。
舉個例子,『前面有一棵樹』,Syntax層面上,你可以分析出『一棵樹』在這個句子里是一個NP,以及可以分成『一顆』和『樹』,但是,它們仍舊是一些符號;到了Semantic層面,假如知道了『樹』是什麼意思,那麼從這句話里,計算機(是計算機,不是你)可以推斷出樹的『位置』是前面,前面是土地(可以種樹)等等,你知道關於這個實體的屬性/關係越多,你能做的,能推斷的東西就越多,在這個層面上,我們才『可能』『可以』說計算機理解了自然語言的語義。在Semantic層面之上,還可以討論Pragmatics,說的是一個詞一段話在具體語境下的語義。放到NLP的語境下來看,語義可以有很多種表現形式,比如Formal Semantic,講求的是語義的精確(得髮指的:()的表述,基於邏輯的數學模型(比如謂詞邏輯,在此數學模型 != 統計模型),例如DRS,例如Ontology,基於Description Logic;比如Distributional Semantic,說的是一個詞的語義可以由其共同出現的其他詞來代表,著名的一個Implementation: Language Model, 就是傳說中的n-gram及其數學組合方式(以及相關的smooth方法不細說),是統計模型,更好實現更容易開發更普適(所以更流行更爛大街?SNLP界很多人宣稱SNLP才是NLP唯一真神,呵呵)
說了這麼多怎麼分析語義完全取決於你想怎麼用!你是要做知識表示啊還是要做自動推理啊還是就想算個倆詞兒相似度,不同目的用的方法真挺不一樣的,真的。
從技術角度講,我不確定你指的是否是詞法和句法分析,這兩個主要是為建立句法和語法樹,為其他的演算法做一些輔助。如果從應用的角度,我理解為信息發布者要表達的觀點或者需求,如果能從技術上自動分析出這兩點,那麼將極具價值。比如在廣告應用上,現在互聯網廣告主要是通過記錄用戶行為,來預測該用戶點擊該廣告的概率,大都基於結構化行為數據。如果我們換個角度,如果能從用戶發表的評論或者微博這些非結構數據中實時獲得用戶需求和需求的內容,將為整個廣告的轉化率帶來非常大的提升。比如我發一條微博:哥現在好餓。。
問的是semantic和syntactic區別吧。
syntactic指句法,動詞名詞形容詞等按某個順序排列,符合語法規則都行。semantic指語義,有些句子雖然符合語法,但沒有意義。。應用上,比如想做同義詞聚類,想把菠蘿和鳳梨聚成一類,把菠蘿和蘋果分開,這個靠syntactic就比較難,因為兩者都可能有同樣的句法規則,同樣的上下文,比如,吃鳳梨/菠蘿。這種就要靠semantic把他們區分開。。
我們講語義就是是什麼、意思、意義。但有個問題,我們講的意義都來自我們的感覺,但計算機只有感測器,所以讓計算機直接理解意義既沒必要也沒辦法。既然計算機沒辦法從根本上理解每句話的意思,那語義分析其實就是從語句中抽取有效的知識,比如:他被人打了,他現在很痛。計算機就不需要理解什麼是痛,但只要知道他痛就行了。也不需要理解什麼是打,只需要知道他被人打了。也就是說經過語義分析,計算機就獲得了關於他的兩條知識:1、他被打了;2、他現在很痛。
然後計算機可能會推出:他需要治療。至於什麼是治療,計算機也是不需要理解的。那這個語義意義上的治療、痛、打是由誰來理解呢?是人!在這裡,計算機就是一個工具
對於這個問題,我覺得可以個提問來拋磚引玉1、語言的主要作用是什麼?
NLP中語義分析就是要分析出一段文本所表示的含義(概念及概念之間的關係);語法分析更著重於形式上的符號之間的關係,往往是對一句話的分析。而語義分析就是對整段文檔的分析。
語法和語義在數理邏輯中是兩條平行的string,語法對象在語義中都會有特定的解釋,這樣才能知道一段符號表達的數學內涵。這個比較複雜,參加各種數理邏輯教材,推薦Herbert Enderton的《
A Mathematical Introduction to Logic》推薦閱讀:
※自然語言處理(NLP)和計算語言學之間的區別和聯繫是什麼?
※做文本挖掘是否需要了解自然語言處理?
※word embedding 詞向量能否用於判別中文辭彙難易度?
※word2vec和word embedding有什麼區別?
※一個計算機系的學生想學一點語言學知識,從哪裡入手比較好?
TAG:自然語言處理 |