2017-05-27 620 views
1

我在Python和NLP新手,我的問題是如何找出給定問題的意向,比如我有套試題和答案是這樣的:的Python NLP意圖識別

question:What is NLP; answer: NLP stands for Natural Language Processing

我做了一些基本的POS tagger在給出的問題上面的問題我得到entety [NLP]我也做了String Matchingusing this algo

基本上我遇到以下問題:

  1. 如果用戶要求what is NLP那麼它將返回精確的答案
  2. 如果用戶要求meaning of NLP那麼它失敗
  3. 如果用戶要求Definition of NLP那麼它失敗
  4. 如果用戶詢問What is Natural Language Processing則失敗

因此,我應該如何識別給定問題的用戶意圖,因爲在我的情況下,字符串匹配或模式匹配不起作用。

+0

這是一個沒有簡單(或確定)答案的難題。如果你是NLP新手,這不是一個好的開始。 – lenz

+0

什麼是「意圖」? – Daniel

+0

@Daniel'Intent'意思是用戶提問的意圖例如:'位置,是否,命令,定義等'爲了更多檢查這個[chat bot architecture](http://pavel.surmenok.com/2016/09/11 /聊天機器人架構/) – Yogesh

回答

0

我認爲這真的取決於你的問題和你的域名框架。 Here是一個可能對問題類型分類有用的數據集,here是一個實現。

這些被說,我認爲你需要註釋您的文本,可能由Chunker,SRL等,並提取有趣的模式。

1

對於一般的知識和對問題的很好的例子列表,並回答爲基礎的系統,NLP的在同行業中領先這裏列出:https://rajpurkar.github.io/SQuAD-explorer/ 這個過程實際上可以得到真正取決於您的域名的複雜性和範圍。例如,更高級的方法應用一階+命題邏輯和複雜的神經網絡。 一個更令人印象深刻的解決方案我看到的是雙向的關注流量:https://github.com/allenai/bi-att-flow,演示是在這裏:http://beta.moxel.ai/models/strin/bi-att-flow/latest

在實踐中,我發現,如果你的語料庫有多個域專用術語,你需要建立自己的自己的字典。在您的示例中,「NLP」和「自然語言處理」是相同的實體,因此您需要將其包含在字典中。

基本上,如果你能像純餘弦距離那樣純粹的統計方法逃脫,那麼認爲自己真的很幸運。您可能還需要結合基於詞典的方法。我所做的所有NLP項目都有特定於領域的術語和「俚語」,所以我將基於統計和基於詞典的方法結合使用,特別是用於主題,意圖和實體等特徵提取。