2012-09-25 73 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