2012-09-25 77 views
7

是否有一個用於將字符串數字轉換爲等效整數(例如,將「ten」轉換爲10)的開源Java庫?我知道如何去做,但如果已經有了一個圖書館,我寧願不浪費我的客戶時間從頭開始寫。將字母轉換爲整數?

+0

我不知道一個合適的「圖書館」,但是有很多這樣的學術項目是一次性的課程。我相信我在前一段時間看到了Eric Lippert的作品(用於C#)。 – 2012-09-25 20:26:21

+0

也許在[ICU](http://site.icu-project.org/home)的某處? –

+0

http://stackoverflow.com/q/3911966/106261 – NimChimpsky

回答

1

我懷疑這樣的圖書館是否存在。

如果您只想轉換有限數量的數字(例如zeroten),那麼可能需要更多時間來問這個問題,而不是自己實現它。

如果您正在尋找轉換更復雜的數字(如"one hundred twenty four and fifty-one hundredth's")而不是您正在尋找的是自然語言識別器,這非常複雜,並且不可能在任何語言中都有一個好的庫。

最後,通常最好是後端值和用戶可使用內容不要耦合。

+0

不,這個任務需要* no *複雜的NL - 這是一個非常簡單的問題,範圍。給定的情況仍然相對容易處理。 (如果不需要處理小數值就更簡單了,這個問題限於整數。) – 2012-09-25 20:33:10

+2

@pst'二十一百個''二十一個一百個''二千一百個''一個一個''一個百「一二十三」'四十二點五''三千四百五十''二十千' –

+0

再一次,*這些例子並不代表複雜的語法*,並且很容易包含在一個簡單的CFL中。 (雖然對於NL是否爲CFL存在相反的論點,但它們處於複雜性的極端*這不是,在這種情況下,其中一些形式可能被排除在接受的輸入之外。) – 2012-09-25 20:37:29

0

對於「二十七」還是「二十七」? 「二十七」還是「七分」?貝克有十幾個人?一對骰子,或兩個骰子?一包六袋?數字處理例程的三連詞? 21世紀(20xx年)?

您的要求比我想象的要寬泛一些。我建議你使用一個框架,它將實際上允許靈活性添加新的表示,而不是假設一個表示,Apache's Open Natural Language processing framework可能是一個不錯的選擇。

經過幾次嘗試之後,您可以構建數字處理例程的三位一體。或者至少有一個想法plethora