【问题标题】:Check content in array is word or not检查数组中的内容是否为单词
【发布时间】:2012-02-10 16:17:36
【问题描述】:

下面是我的数组中的...

myArray = {"about","name","dsafasdf","fix"};

我想在这个数组中找出什么是英文单词。

下面应该是输出:

Words found are as below
about
name
fix

提前致谢!!!

任何示例或链接都可以使用!!!

其实我想实现TextTwist Game。我找到了可能的单词,但是我想检查找到的字符串是否是 WORD/Grammar...

更新 1

请不要建议我创建一个文件并将单词放入其中然后在此文件中搜索单词...这将是最糟糕的程序...。

【问题讨论】:

  • 定义“英文单词”。 massachusetts是一个词,虽然字典里没有,但肯定有意思?
  • 你确定它不在字典里吗?
  • @savinos:实际上没有,但我敢肯定,并非所有城市和名称都会出现在您的字典中。它是信息检索问题中最基本的问题之一。
  • 城市不应该出现在 Word 中...请...
  • 感谢 cmets...我会寻找更多解决方案...

标签: java string word


【解决方案1】:

您需要一个包含所有英文单词的库。而且你必须检查每一个字。
this 是一个类似的问题。如果您不想使用 java 库,您应该找到一个包含所有单词或类似内容的文本文件,然后编写自己的方法来查找单词。请注意,您的文本文件应该进行排序,以便您可以使用divide and conquer 算法找到单词。否则搜索将花费很长时间。
编辑:
而且您还必须记住,名称不是@amit 所说的“英语单词”。他们可以在文本中到处见面。您应该检查单词是否以大写字母开头并且不在句子的开头。

【讨论】:

  • 定义“英语单词”。马萨诸塞州是一个词吗,虽然字典里没有,但它肯定有意义吗?
  • 是的。我认为必须有针对此问题的免费库,并且也包含您的案例。
  • 我相信你正在寻找的图书馆是谷歌......人名呢? Haveliwala 会在你的字典里吗?我想不会。
  • 我认为编写 java 库并与世界分享它的人会考虑这类事情并将它们包含在他们的库中。
  • 虽然:OP 最近的评论澄清他不是在寻找这些案例。最后一件事:考虑采用Trie 代替分而治之的方法。
【解决方案2】:

您需要阅读英文图书馆文件并检查。可以在此处找到此类文件的示例:http://wordlist.sourceforge.net/

【讨论】:

    【解决方案3】:

    我不会使用其他答案中建议的静态单词集合,而是使用更具动态性的东西 - 网络

    一个很好的启发式方法可能是 - 搜索您正在寻找的单词是否出现在 wikipedia 的文章标题中,如果出现则接受它!

    请注意,优点是动态增长的单词“列表”,无需将它们存储在字典中。

    缺点:IO 速度慢[不断使用互联网],而且列表还不完整[有些术语没有出现,即使在维基百科中也是如此]。它还需要用户在线才能使用这种方法。

    查看wikipedia API 了解如何操作。

    您可以使用的另一个在线信息来源是Bing Search API [这是免费的!虽然最近有些问题...]

    【讨论】:

    • 如果它只是一个桌面应用程序并且用户没有连接到互联网怎么办?如果用户在喜马拉雅山并且想要使用这个应用程序。
    • 然后抛出异常:“必须连接”。使用这种方法可以让你变得更有活力,但代价是你必须在线才能使用它。我将对其进行编辑并将其明确添加到“缺点”中。
    • 好吧,如果它是一个 Web 应用程序或仅为连接到 Internet 的计算机开发,那么你完全正确。
    • @Ademiban:工程是做出正确权衡的艺术。你永远不可能拥有一切:)
    【解决方案4】:

    首先:定义您的英语单词词典。
    然后:将所有这些世界放入Collection
    最后:对于数组中的每个单词,检查它是否在英文单词集合中。

    这并不过分表现,但它应该可以完成这项工作:

    String[] englishWords = new String[]{"a", "all", "an",...};
    Collection<String> dictionary = Arrays.asList(englishWords);
    for (String candidate : myArray){
      if (dictionary.contains(candidate)){
        System.out.println(candidate);
      }
    }
    

    【讨论】:

    • 你要我在String[] englishWords = new String[]{"a", "all", "an",...};中写所有英文单词吗??请不要告诉我....
    • 不,我希望您查找英语单词的来源 - 例如免费的字典文件 - 并将该文件加载到您的列表中。上面的数组只是一个例子。请澄清您的问题,以便我们了解您的实际要求。
    【解决方案5】:

    您可以在字典中查找,也可以使用特定的库:查看How to check if a word is an English word with Python?

    【讨论】:

      【解决方案6】:

      我自己在 java 中实现了一个 TextTwist 版本,我发现从字典文本文件读入一组字符串效果很好。

      这是我的代码,一个 Java Eclipse 项目,如果您感兴趣的话。请注意,我在实现它时考虑了多人游戏功能,因此代码在客户端/服务器之间拆分。 https://github.com/fangsterr/Multiplayer-Text-Twist

      【讨论】:

        猜你喜欢
        • 2019-04-25
        • 1970-01-01
        • 2013-08-19
        • 2015-11-17
        • 2014-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-02
        相关资源
        最近更新 更多