Python自然語言處理 10 分析語句的含義
既然已經有了分析機制和基於特徵的文法,那麼能否做一些類似分析語句的含義的事情?
回答下列問題:
(1)如何表示自然語言的含義,並能通過計算機進行處理?
(2)怎樣才能將意思表示與無限制的語句集相關聯?
(3)怎樣才能通過連線意思表示與句子的程式來儲存資訊?
本章介紹一些邏輯語義方面的規範化技術,看看如何使用它們來查詢儲存有客觀整理的資料庫
一 自然語言理解
#查詢資料庫
目前為止在本書中學到的技術,解決特定領域的任務的QA系統是相當簡單的,但如果要以一種更通用的方式解決這個問題,就必須開闢一個全新的涉及意思表示的理念和技術框架。
因此,首先假設有關於城市和國家的結構化資料。
SQL查詢import nltk nltk.data.show_cfg('grammars/book_grammars/sql0.fcfg') % start S S[SEM=(?np + WHERE + ?vp)] -> NP[SEM=?np] VP[SEM=?vp] VP[SEM=(?v + ?pp)] -> IV[SEM=?v] PP[SEM=?pp] VP[SEM=(?v + ?ap)] -> IV[SEM=?v] AP[SEM=?ap] NP[SEM=(?det + ?n)] -> Det[SEM=?det] N[SEM=?n] PP[SEM=(?p + ?np)] -> P[SEM=?p] NP[SEM=?np] AP[SEM=?pp] -> A[SEM=?a] PP[SEM=?pp] NP[SEM='Country="greece"'] -> 'Greece' NP[SEM='Country="china"'] -> 'China' Det[SEM='SELECT'] -> 'Which' | 'What' N[SEM='City FROM city_table'] -> 'cities' IV[SEM=''] -> 'are' A[SEM=''] -> 'located' P[SEM=''] -> 'in'
from nltk import load_parser cp = load_parser('grammars/book_grammars/sql0.fcfg') query = 'What cities are located in China' trees = next(cp.parse(query.split())) answer = trees[0].label()['SEM'] answer2 = trees[1].label()['SEM'] q = ' ' q = ' '.join(answer) + " WHERE" q = q + ' '.join(answer2) print q SELECT City FROM city_table WHERE Country="china"
from nltk.sem import chat80
rows = chat80.sql_query('corpora/city_database/city.db', q)
for r in rows: print r[0],
canton chungking dairen harbin kowloon mukden peking shanghai sian tientsin
可以說,NLTK程式碼已經“理解”了SQL
#自然語言、語義和邏輯
上面文字翻譯成SQL來查詢,仍然在迴避問題的實質:翻譯是否正確。
引進語義中的兩個基本概念。第一個是在確定的情況下,陳述句非真即假。第二個是名詞短語和專有名詞的定義指的是世界上的東西。
一旦採取了在特定情況下事情真假的概念,我們就有了進行推理的強大工具。特別是,我們可以推理語句集在某些情況下是否能同時為真。
從廣義上講,基於邏輯方法的自然語言語義關注於那些指導我們判斷自然語言的一致性和不一致性的方面。設計一種邏輯語言的句法是為了使這些特徵更標準更明確。
開發一種表示某種可能情況的技術,邏輯學家稱之為“模型”
二 命題邏輯
設計一種邏輯語言的目的是使推理更明確規範
命題邏輯只表示對應特定語句連線詞的語言結構部分
三 一階邏輯
通過翻譯自然語言表示式為一階邏輯表示它們的意思。
並不是所有的自然語言語義都可以用一階邏輯表示。但它是計算語義的一個不錯的選擇,因為它具有足夠的表現力來表達語義的很多方面,並且另一方面,有出色現成的系統可用於開展一階邏輯自動推理。
#語法
一階邏輯的標準構造規則識別以下術語:
#一階定理證明
是否可以有一個有限序列的推理步驟從一個假設的公式列表派生出來
#一階邏輯語言總結
#真值模型
#獨立變數和賦值
#量化
現代邏輯的關鍵特徵之一就是變數滿足的概念可以用來解釋量化的公式。
#量詞範圍歧義
#模型的建立
假設已經有了一個模型,並要檢查模型中的每個句子的真值
四 英語語句的語義
#基於特徵文法的成分語義學
組合原則:整體的含義是部分的含義與它們的句法結合方式的函式