我可以为java下载一本词典吗? 我希望有一个程序,它需要一些随机字母,看看是否可以通过检查字典来重新排列成真正的单词
答案 0 :(得分:8)
我可以下载一本字典吗? 对于java?
其他人已经回答了这个问题......也许你不只是在谈论一个字典文件,而是关于一个拼写检查器?
我希望有一个程序需要一个 几个随机的字母,看看他们是否 可以重新排列成一个真正的单词 根据字典检查它们
这是不同的。你想要多快这么快?字典中有多少单词,有多少单词,你想查看多长?
如果你想要一个拼写检查器(你的问题并不完全清楚),Jazzy是一个Java的拼写检查器,它有一个链接到 lot 的词典。这还不错,但是各种实现都非常低效(对于小字典来说没问题,但是当你有几十万个单词时,这是一个惊人的浪费)。
现在,如果您只是想解决您描述的具体问题,您可以:
解析字典文件并创建地图:(按排序顺序排列的字母,匹配单词集)
然后是任意数量的随机字母:对它们进行排序,看看你是否在地图中有一个条目(如果你输入的值包含你可以用这些字母做的所有单词)。
abracadabra:(aaaaabbcdrr,(abracadabra))
carthorse :( acehorrst,(carthorse))
管弦乐队:( acehorrst,(carthorse,orchestra))等...
现在你拿三个随机字母并获得“hsotrerca”,你将它们排序为“acehorrst”,然后用它作为关键词得到所有(有效的)字谜......
这是有效的,因为你描述的是一个特殊的(简单的)案例:你需要的只是对你的字母进行排序,然后使用O(1)地图查找。
要进行更复杂的拼写检查,可能会出现错误,那么你需要一些东西来提出“候选人”(可能是正确但拼错的词)[比如说,使用soundex,metaphone或双变音符algos]然后使用像Levenhstein编辑距离算法这样的东西来检查候选人与已知的好词(或者由Levenhstein编辑距离组成的更复杂的树,谷歌用它来“找到你的类型”):
http://en.wikipedia.org/wiki/Levenshtein_distance
作为一个有趣的旁注,优化的字典表示可以存储数百甚至数百万字,每个字不到10比特(是的,你已经正确读取:每个字少于10比特)并且允许非常快速的查找。 / p>
答案 1 :(得分:2)
字典通常与编程语言无关。如果您尝试在不使用关键字“java”的情况下进行谷歌搜索,则可能会获得更好的结果。例如。 free dictionary download在每个dicts.info下提供。
答案 2 :(得分:2)
OpenOffice dictionaries很容易逐行解析。
你可以在内存中读取它(记住它有很多内存):
List words = IOUtils.readLines(new FileInputStream("dicfile.txt"))
(来自commons-io)
因此,你得到所有单词的List
。或者,如果遇到内存问题,可以使用Line Iterator。
答案 3 :(得分:1)
答案 4 :(得分:1)
这是一个:
http://java.sun.com/docs/books/tutorial/collections/interfaces/examples/dictionary.txt
您可以使用标准Java文件处理来读取每行上的单词:
http://www.java-tips.org/java-se-tips/java.io/how-to-read-file-in-java.html
答案 5 :(得分:0)
退房 - http://sourceforge.net/projects/test-dictionary/,它可能会给你一些线索
我不确定是否有任何此类库可供下载!但我想你绝对可以通过sourceforge.net来查看是否有人或者如何使用词典 - http://sourceforge.net/search/?type_of_search=soft&words=java+dictionary