2017-07-28 36 views
-1

我想要構建一個與用戶交談並從用戶處獲得一些輸入的ml程序。 ml程序分析輸入數據(關鍵字),然後預測最佳解決方案。機器學習:哪種算法適合回答問題

+0

這是什麼問題? –

+0

我無法預測完成此任務的最佳方法(算法)。 –

回答

-1

因此,您正在尋找一種AI應用程序,它需要某種機器智能來處理自然語言。 讓我們說這裏的選擇語言是英語。在構建這樣一個系統之前有很多事情需要考慮。

  1. 依存分析
  2. 詞義消
  3. 動詞多義
  4. 指代消解
  5. 語義角色標註
  6. 知識的宇宙。

簡而言之,您需要構建所有上述基本模塊,然後才能生成響應。 你需要決定你正在處理的是什麼類型的問題?它是一個開放域名或封閉域名問題,這意味着這個應用程序的知識範圍是什麼。例如:Google現在是一個開放的域問題,它實際上可以採取任何可能的輸入。 但是一些應用程序涉及一個特定的任務,如自動化應用程序中的食物訂單等,其中可以問的範圍是有限的。

一旦確定了,就需要解析輸入句子,並依賴解析是要走的路。您可以使用Stanford核心NLP套件來實現上面提到的大部分NLP任務。

一旦輸入句子被解析並且你有了主語,賓語等,現在是消除句子中單詞歧義的時候了,因爲特定的單詞可以有不同的含義。

然後歧義的動詞,意思是識別動詞的類型(如迴歸可能意味着回到一個地方或回饋東西)

然後,你需要解決指代消解意義映射的名詞和代詞和其他實體給定的上下文。例如: 我叫約翰。我在ABC公司工作。

這裏我在第二句話中提到約翰。 這有助於我們回答John的工作方式。由於約翰只用在第一句話中,而他的工作在第二句話中被提及,所以合作解決方案可以幫助我們將它們映射在一起。

手頭的下一個任務是語義角色標註,它基本上意味着爲每個動詞標註句子中的所有參數。例如:約翰遇害瑪麗。 這裏的動詞是殺人,約翰和瑪麗是動詞殺人的論點。約翰擔任角色A0,瑪麗擔任角色A1。在NLP社區創建的巨大框架和參數註釋框架中提到了每個動詞的這些角色的定義。這裏A0表示遇害者,A1表示遇難者。 現在,一旦您確定了A0和A1,只需查看殺戮框架的定義,然後返回A0作爲殺手,A1返回給受害者。

手頭的另一項重要任務是確定您的系統何時必須回答一個答案。你需要知道給定的句子是否是陳述句或斷言句或疑問句。您可以通過查看輸入句子是否以問號結束來檢查。

現在回答你的問題: 讓我們說你輸入的應用程序是: 輸入1:約翰遇害瑪麗。 很明顯,這是一個自信的句子,所以就像上面提到的那樣存儲並處理它。 現在的下一個輸入是:

輸入2:誰殺了瑪麗?

這是一個疑問句,所以你需要拿出一個答覆或答覆。

現在找到輸入1和輸入2的語義角色標籤,並返回與第2句中Who的參數匹配的輸入1的詞。 在這種情況下,誰將被標記爲A0,John將被標記爲A0,簡單地返回約翰。

大部分提到的NLP模塊都可以直接使用斯坦福核心NLP實現,但是如果您想自己實現一些算法,您可以通過EMNLP,NIPS,ICML,CONLL等最近的出版物來更好地理解它們,實施最適合你的那個。

祝你好運!