2012-11-27 41 views
2

我正在構建應用程序的過程中,我想包括我的應用程序讀取用戶在輸入文本框時輸入的內容的功能,以及基於這句話迄今爲用戶提供了兩件事情。自動提示短語/句子完成

1)他們正在鍵入的可能的短語列表,以便於自動完成,我猜我會使用預設的短語列表,我可以搜索以獲得這些建議。

2)根據句子結構或者僅僅根據輸入的最後一個單詞,在句子中將出現的最可能的單詞列表。

我的問題是,這裏還有其他什麼嗎?搜索可能的數千個字符串以儘可能快速有效地找到匹配的最佳方法是什麼?字符串應該存儲在SD卡上的文本文件中,還是直接存儲在代碼中,或者存儲在某種數據庫或xml文件中,甚至是CVS文件中?任何想法將是巨大的

+0

嘿,我想在我的一個JAVA項目中實現完全相同的東西。你知道任何可以完成任務的Java庫嗎?或者一些具有相同功能的NLP庫? – thekosmix

回答

1

您可以查看Google Scribe - 它幾乎可以處理您正在談論的內容。鏈接曾經是http://scribe.googlelabs.com,但現在看來:(想要離去。 此外,像swiftkey甚至標準的Android鍵盤許多鍵盤配備了基本的「下一個字」的預測。

對於當前的單詞預測,加權詞典其中那麼你可以通過類似的方法來完成下一個單詞預測(這需要你的詞典中有一些語義結構,即哪些單詞是主語,哪些是動詞,動詞可以採用的不同形式如短語,莫代爾等)

爲您的研究有些鏈接:

任何數據庫應該工作,可讓您連接並快速通過這樣的搜索標籤的數據,難度實際上是構建它 - 非常雄心勃勃的項目,我祝你好運!

+0

感謝您的項目可能性鏈接!它的一個很好的資源,即使它沒有與android相關 – Peter

+0

不用擔心,使用xml應該讓他們的很多想法可以移植到Android上:) – agryson

1

我一直在尋找到這一點我自己,我想你應該看看this

他們使用的代碼:

public class CountriesActivity extends Activity { 
protected void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    setContentView(R.layout.countries); 

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_dropdown_item_1line, COUNTRIES); 
    AutoCompleteTextView textView = (AutoCompleteTextView) 
      findViewById(R.id.countries_list); 
    textView.setAdapter(adapter); 
} 

private static final String[] COUNTRIES = new String[] { 
    "Belgium", "France", "Italy", "Germany", "Spain" 
}; 

}

你可以宣佈你的預設短語轉換爲靜態最終字符串,並在上例中使用該字符串代替「COUNTRIES」。

現在,如果您想要「預測」下一個單詞類型的東西,那是另一回事。在那裏有一個名爲Swiffkey的應用程序,可以預測可能會在一個句子後面出現的一些單詞。也許你可以谷歌,看看是否有源代碼,可能會告訴你如何實現該功能。