4

最近我一直在閱讀NLP,到目前爲止,我已經得到了一個從句子拆分到POS標籤的各種工作原理的基本概念(非常) ,還有知識表示。NLP /任務。回答 - 從數據庫中檢索信息

據我所知,有很多NLP庫(主要是Java或Python),並且已經找到了.NET實現(SharpNLP)。實際上它很棒。無需編寫任何自定義處理邏輯;只是使用他們的功能和瞧!用戶輸入是很好的分離和POS標記。

如果我的主要動機是建立一個問題回答系統(類似於聊天機器人),我不明白的是從這裏開始。哪些庫(最好是.NET)可供我使用?如果我想構建自己的知識庫,我該如何表達自己的知識?我是否需要將POS標記的輸入解析爲我的數據庫可以理解的其他內容?如果我使用MS SQL,是否有任何庫可以幫助將POS標記的輸入映射到數據庫查詢?或者我需要寫我自己的數據庫查詢邏輯,根據程序語義(我讀過)?

當然,下一步是制定一個結構良好的答覆,但我認爲我可以稍後離開。現在什麼是我在這方面的資源缺乏(知識表示,NLP到KB/DB檢索),我真的很感激,如果你們任何人都可以爲我提供你的專業知識:)

回答

7

這是一個非常寬泛的問題,因此它幾乎不適合StackOverflow的格式,從來就不是我想給它一個刺。

首先,NLP
的成熟工具NLP領域的廣泛可用性的詞本身有些誤導。當然,所有的/最NLP功能,比如說,從POS標記分塊,比方說,命名實體識別自動文摘或覆蓋和普遍受到邏輯服務和各種庫的支持數據。然而,從這些構建模塊構建真實世界的解決方案並不是一項簡單的任務。一個需要:

  • 構建沿着某種流水線或鏈的解決方案,從而將特定轉換的結果反饋給後續流程的輸入。
  • 配置單個過程:這些過程的計算框架已經建立,但是它們對底層數據如訓練/參考語料庫,可選調整參數等非常敏感。
  • 選擇並驗證正確的功能/過程。

以上是特別困難的用於與從文本(信息提取在大,但也共同參考消歧提取和語義元素的處理相關的解決方案的一部分,關係提取或情緒分析,僅舉少數)。這些NLP函數以及各種庫中的相應實現往往難以配置,對依賴於領域的模式更敏感或者語音級別變化甚至支持語料庫的「格式」。

簡言之,NLP庫提供必要的積木的應用,如在問題中提到的「問答系統」,但多少「膠水」和許多酌情決定如何以及在哪裏塗膠是必需的(以及大量的非NLP技術,如知識表示問題,下面討論)。

論知識表示
如上暗示,POS標記單獨不是NLP管線的足夠元件。從本質上講POS標記將添加有關文本中的每個字的信息,指示字[可能]語法角色(如名詞與形容詞VS動詞與代詞等),該POS機信息,因爲它允許非常有用的,例如,文本成單詞和/或單個詞語詞典中,分類法或本體更精確的查找的邏輯上相關的基團的後續的組塊。

爲了說明各種信息的提取和可能需要的一些「問答系統」的基本知識表示,我將討論在不同的語義搜索引擎的通用格式。不過要注意的是這種格式也許不是指令性的語義搜索更多的概念和其他應用程序如專家系統或翻譯機還需要其他形式的知識表示。

的想法是用NLP技術與支持數據一起(從簡單的「查找表」進行簡單的詞彙,以樹狀結構進行分類,在專門的語言表達本體),以提取三胞胎實體從文字,結構如下:

  • 代理:某人或某事「做」事
  • 動詞:正在做什麼
  • 的對象:一個人或物品在其中的「DOI NG」完成(或更一般地,關於信息的一些補充‘做’)

例子:
 貓/代理商吃/動詞鼠標/對象。
 約翰 - 格里沙姆/代理寫入/動詞 - 鵜鶘 - 簡介/對象
 牛/代理生產/動詞牛奶/對象

而且這種三胞胎的,有時也被稱爲「事實」,可分爲各種類型對應於特定的語義模式,通常圍繞動詞的語義組織。例如「因果」事實有一個表達某種因果關係的動詞,「包含」事實有一個動詞,這意味着一個集裝箱對集裝箱的關係,「定義」事實是針對代理/對象被定義爲[如果只是部分]被對象(例如「貓是哺乳動物」)等。

人們可以很容易地想象如何查詢這些事實數據庫來提供問題的答案,並提供各種智慧以及諸如同義詞替換之類的服務或提高問題答案的相關性(與簡單的關鍵字匹配相比)。

真正的困難在於從文本中提取事實。許多NLP函數都是爲了這個目的而發揮作用的。例如,NLP流水線中的一個步驟是用他們引用的名詞(回指分辨率或更一般的共同參考分辨率以NLP術語)來代替代名詞。另一步是識別命名實體:人名,地理位置,書籍等(NER NLP術語)。另一個步驟可能是重寫由「AND」連接的子句,通過重複隱含的語法元素來創建事實。
例如,也許約翰格里沙姆例如高於從文本摘錄出來像
Author J. Grisham was born in Arkansas. He wrote "A time to Kill" in 1989 and "The Pelican Brief" in 1992"

前往John-Grisham/Agent wrote/Verb The-Pelican-Brief/Object意味着(除其他外):

  • 識別「J.格里舍姆」和「鵜鶘簡要「爲具體實體。
  • 用「John-Grisham」替換第二句中的「他」。
  • 將第二句改寫爲兩個事實:「John-Grisham在1989年寫了A-time-to-kill」和「John-Grisham在1992年寫了The-Pelican-brief」
  • 刪除了「1992年」部分(或者更好的是,創造另一個事實,即「時間事實」:「The Pelican-brief/Agent is-related-time/verb year-1992/object」)(順便說一句,這也意味着已經確定1992爲類型的時間單位「年」)

一言以蔽之:信息提取即使施加在相對有限的領域和利用庫中現有的可用功能NLP時,複雜的任務。它肯定是一個比單純從形容詞和動詞中識別名詞更「雜亂」的活動;-)

+0

哈哈,我很高興你真的試了一下,所以至少我知道我應該朝哪個方向發展努力。對我而言,你所談論的所有NLP內容似乎都很熟悉(我一直在閱讀James Allen的自然語言理解),但是你對「真正的困難」的理解 - 真的讓我覺得很懊惱。我猜這就意味着目前的規範是以句子和陳述的形式存儲知識/事實,而不是任何其他形式的知識表示,你呢?你聽起來對整個問題答疑主題都非常瞭解。你到目前爲止如何? – matt 2013-02-20 16:08:25

+0

@matt雖然我已經在各種特定領域的環境中實現了一些「NLP管道」,但我依然在通過大部分NLP和相關技術實現BS。不要被我顯然權威的風格所迷惑;-)另外,這裏描述的「事實」(與主語,動詞和賓語一樣是短語)僅僅是存儲知識的常用方便方式,可能特別適用於語義搜索和紅外線應用程序;然而,他們並不是你猜測的「當前規範」。例如,它們比語義網絡更簡單(但也更有限)。 – mjv 2013-02-21 06:47:18

+0

「語義網絡」有許多不同的「風味」,它們本身就是知識表示的另一種形式,也很流行,但也可能不是「規範」。事實上,可能沒有任何規範,但只是一些概念格式,其衆多的實現和支持語言。 NLP騎師的任務是選擇一個適合手頭任務的人(並且與整體架構非常吻合)。 – mjv 2013-02-21 06:55:04