搜索"字到数字"几乎总是会给出将数字转换成单词表示的结果,这似乎比反向更简单。有一些非常简单的案例可以通过基本的查找表来处理("第一,第一,一个" - > 1等),但我正在寻找更好的东西解决一般情况。我构建的应用程序涉及获取用户输入,该用户输入可能包含或不包含数字,并将其与已知结果(其本身存储为文本)进行比较,因此,如果更复杂,则优先选择它也能够处理拼写错误(例如frist,sceond),但这可能是通过首先通过拼写检查器传递输入来实现的。
到目前为止,我发现http://j.mearie.org/post/7462182919/spelt-number-to-decimal似乎非常酷,因为它似乎支持其他一些语言(或不支持),但我更喜欢更便携,更少混淆的东西。
我发现的最复杂的https://github.com/ged/linguistics/blob/master/lib/linguistics/en/numbers.rb和http://www.perlmonks.org/?node_id=506028似乎也很有希望。
那里有更完整的图书馆吗?我希望能够处理不同格式的英语和西班牙语数字,例如第一,第一,第一,甚至是第一个无效的数字,以及像MMXII这样的罗马数字。
答案 0 :(得分:1)
鉴于你希望将人类语言转换为数学,而不是相反,你基本上需要巨大的表/枚举。数学基于逻辑,规则集用于指向单向的单词。从语言向后移动是一套商定的规则(对于每个规则的不合逻辑的例外,请参阅英语),唯一确定的完成方法是将每种可能的方式聚集在一起,引用一个数字并将其绑定在翻译地图中。 / p>
您找到的任何图书馆不仅需要随着时间的推移而更新,以接受新形式的数字谈话,还可能否定或更改以前已更改的规则。
你如何计划处理像1nd这样的无效输入?他们的意思是1还是2?这就是整个博士论文致力于自然语言处理的原因的一瞥。
答案 1 :(得分:1)
你应该看看Lex& Yacc就是为了这种事情。 我认为一些“人类计算器”已经写好了(即使我现在找不到它),所以你可以从中提取数字理解。