2016-05-14 21 views
1

我正在製作一個可以進行自然語言處理的Android應用程序。該應用程序本身工作正常,除了模型OpenNLP給予大,所以apk是太大的分佈。我該怎麼做才能讓apk變小?我想使用一個服務器做NLP,但我不知道如何去它我正在製作自然語言處理應用程序,但型號太大

+0

大聲笑這只是測試NLP。我不打算從中賺錢或創業。只是爲了建立我的投資組合 – John

+0

雅......我認爲這個問題會被認爲是過於籠統,等等。答案是「這很難,沒有人回答」。可能是這樣的:找出你需要調用的庫函數,爲這些函數定義一個服務器API,並通過HTTP調用某種REST/JSON。 –

+0

是的,我也一直在想。謝謝你的幫助 – John

回答

0

移動NLP功能的服務器將應用程序無用脫機使用,這可能是在很多人眼中的缺點用戶。如果您決定採取這種方式,我推薦一個名爲Converting a Functional API to REST的教程,它描述了在REST API中封裝一個Java類(在您的情況下是OpenNLP類型,例如POSTagger)的API的過程。

另一種辦法是培養自己的模型(見實例OpenNLP文檔中的Sentence Detector Training部分)。然後,您可以減小訓練集的大小,使得生成的模型適合您的apk。

很顯然,我不會建議自己編譯的訓練數據,因爲這將需要很多的努力。也許你可以找到用於offical OpenNLP models的訓練數據,然後簡單地減小訓練集的大小。向OpenNLP mailing lists之一提問可能是找到官方培訓數據的一個很好的起點。

另一種方法是通過將它們裝入一個Java程序,並以某種方式從他們刪除數據修改正式OpenNLP模型。除非您瞭解OpenNLP工具的基礎算法和數據結構,否則我不推薦使用此路線,因此可以判斷這是否完全可行。