2017-08-25 117 views
0

我目前正在一個項目中,我有一個數據庫與1000產品(洗衣機),其中每個有21個產品屬性(如重量,尺寸,顏色, 。功耗等) 我的目標是用NLP,使用戶能夠通過自然語言查詢來搜索產品的數據庫,如:瑞典語NLP產品搜索引擎與結構化數據

「找一臺洗衣機可以加載至少8公斤的衣物,高度不超過60釐米,前面有不鏽鋼「

」我正在尋找一臺洗衣機,它的價格低於n 6000瑞典克朗,並在前面開放,不在頂部「

此NL查詢需要轉換爲一個SQL查詢與我的數據庫一起使用。問題是我需要它用瑞典語工作。 我發現了一個很棒的API(https://json-tagger.com/),它爲我執行句子的預處理,標記和標記瑞典語中的詞性。謝謝!但是現在我真的很想談談如何最好地使用它來將它轉換爲SQL查詢?

我想我需要提取用戶輸入的關係和語義以查詢數據庫,但我不知道如何做到這一點。由於這是一個相當有限的領域(洗衣機產品搜索),我希望我能夠爲此做出一些規則,但我不確定這是否正確。任何幫助或想法都非常感謝! :)

我是一種新的NLP,並且會更喜歡在Python3中工作。謝謝!

回答

0

如果我正確地理解了這個問題,您正在尋找一個瑞典語義解析器,它將自然語言句子翻譯爲您的產品的SQL查詢套件。這項任務非常大,可能是一個巨大的項目。如果你正在尋找一個快速解決方案跳轉到最後一段。

計算語義學中一種很好的舊標準方法是爲解析器編寫語法並將每個單詞翻譯成數據庫。例如有this NLTK package的例子。

這樣的路徑的挑戰是,您需要手動硬編碼單個語法文件中的所有可能的詞彙。更高級的類似解決方案是使用Grammatical Framework並在GF中編寫受控語言。在那裏你可以從他們的大型資源語法開始,你不需要擔心不同語言的語法。這將是一個你可以添加到你的Python程序或類似的軟件包。

如果控制語言的解決方案不能滿足你的需要,還有其他選項,如概率CCG解析器翻譯自然語言SQL(例如English-to-SQLother ideas),您可能需要訓練它自己。而且,如果您有很多帶註釋的數據,並且您想擁有最先進的技術,那麼您可以使用神經機器翻譯器查看解析器,例如, neural programmer

最後,如果你想有一個快速的解決方案,爲你知道的模式寫正則表達式。結果可能會變得非常類似於WolframAlpha查詢。您甚至可以根據數據庫中的已知名稱實體使這些正則表達式中的一部分動態化。希望這會回答你的問題。