【问题标题】:Text processing in JavaJava中的文本处理
【发布时间】:2012-01-23 20:53:02
【问题描述】:

现在这是一个棘手的问题,我无法找到一个好的解决方案。假设我们在 Java 中有一个字符串:- “他今天吃了 3 个苹果。”现在可以使用 isNumeric 函数或使用正则表达式在 Java 中轻松识别数字 3。但是如果我有一个像这样的字符串:“他今天吃了三个苹果。”怎么办?我怎样才能确定这三个实际上是一个数字?我使用了 OpenNlp 并使用了它的 POS 标记器,但它所花费的时间真的太多了!谁能为此提出更好的解决方案?同样在OpenNlp的“.bin”中,有一个文件——“num.bin”,但我不知道如何使用这个文件。 OpenNlp 文档对此也只字未提。谁能告诉我这是否正是我一直在寻找的东西,如果是,那么如何使用它。

/************ *************** *************** *************** *************** *************** *************** *************** ************/ 我实际上时间不多,所以我在这里解决了一个临时解决方案。制作一个文件/字典并获取哈希表中的所有条目。然后我将标记我的句子并逐字检查数字,类似于你们建议的。我会在需要时继续更新文件。感谢您的宝贵建议,如果您有比这更好的东西,我会很高兴。 OpenNlp 以非常好的方式实现了这一点,唯一的问题是时间复杂度,我希望在尽可能短的时间内做到这一点。

【问题讨论】:

  • 您是否只需要检测数字并且只检测英文?如果是的话,我认为你不需要一些图书馆。手动编写会容易得多。
  • 是...仅限数字....但任何类型的数字、小数、分数、百分比、足球比分(如 3-1)也应该被检测到......仅适用于英语...

标签: java opennlp


【解决方案1】:

创建一个数字字典。在文本中搜索该字典中的元素。

检查渐近复杂度,先对文本进行排序可能更便宜。

【讨论】:

  • 是的,这是可能的,但是字典会变得多大?像一百、四十三、五十等等这样的文字......我必须在字典中添加所有可能的单词......
  • 那不是字典,使用加权有向图。
【解决方案2】:

您必须将所有单词保存在数组中,然后再使用它。 Here 是一个如何将数字转换为字符串的示例。它可能对您有所帮助...我认为您必须将文本拆分为单词并检查单词是否为数字(三)。如果是,请检查下一个单词,因为它可以说“百万”,然后检查下一个单词,依此类推。这并不容易,看起来像一个小图书馆。我想你会花很多时间写这个。或者尝试在谷歌中搜索这样的图书馆。也许有人已经遇到了这个问题,写了一个库并免费分享))祝你好运。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-20
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 2017-07-26
    • 2014-03-31
    • 2017-04-29
    • 1970-01-01
    相关资源
    最近更新 更多