2012-01-23 39 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

不是字典,然后使用加权的方向图。 –