2012-01-23 76 views
5

現在,這是一個棘手的問題,我無法找出一個好的解決方案。假設我們在Java中有一個String: - 「他今天吃了3個蘋果。」現在,數字3可以使用isNumeric函數或使用正則表達式在Java中輕鬆識別。但是如果我有這樣一個字符串呢?「他今天吃了三個蘋果。」?我怎樣才能確定三個實際上是一個數字?我使用了OpenNlp並使用了它的POS tagger,但是它花費的時間太多了!任何人都可以提出更好的解決方案嗎?同樣在OpenNlp的「.bin」中,有一個文件「num.bin」,但我不知道如何使用這個文件。 OpenNlp文檔也沒有提到它。任何人都可以告訴我這是否正是我一直在尋找的東西,如果是的話,那麼如何使用它。Java中的文本處理

/* ** * ** * ** * ** * ** * ** * ** * ** * * * * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * ** * **/ 我其實很短的時間她因此,我在這裏解決了一個臨時解決方案。製作一個文件/字典,並把所有的條目放在散列表中。然後,我將標記我的句子並逐字檢查數字,類似於你們的建議。我會在需要時繼續更新文件。感謝你們寶貴的建議,如果你有比這更好的東西,我會很高興。 OpenNlp以非常好的方式實現了這一點,唯一的問題是時間複雜性,我希望儘可能在最短的時間內完成。

+0

你只需要檢測數字,只有英文語言?如果是,我認爲你不需要一些圖書館。手動編寫會更容易。 – bezmax

+0

是......僅限數字......但任何類型的數字,小數,分數,百分比,足球比分像3-1也應該被檢測......僅適用於英語...... –

回答

0

你必須保留數組中的所有單詞,然後使用它。Here是一個如何將數字轉換爲字符串的示例。它可以幫助你...我認爲你必須將你的文本分成單詞並檢查一個單詞是否是一個數字(三)。如果是,請檢查下一個單詞,因爲它可以被稱爲「百萬」,然後檢查下一個單詞等。這不容易,看起來像一個小圖書館。我想你會花很多時間寫這個。或者嘗試在谷歌搜索這樣的圖書館。也許有人已經有這個問題,寫了一個圖書館,並免費分享))祝你好運。

1

創建一個數字字典。在文本中搜索該字典中的元素。

檢查asympotic的複雜性,首先排序文本可能會更便宜。

+0

是的,這是可能的,但那麼字典會變得多大?像百,四十三,五十,等等的文本....我將不得不在詞典中添加所有這些可能的單詞..... –

+0

不是字典,然後使用加權的方向圖。 –