Algorithm 将单词与词典中的目标单词进行比较
我正试图用JAVA编写一个程序,将字典存储在hashmap中(每个单词在不同的键下),并将给定的单词与字典中的单词进行比较,如果在字典中找不到,则提出拼写建议——基本上是一个拼写检查程序 我已经提出了比较算法(即Needleman Wunsch,然后是Levenshtein distance),等等,但在计算字典hashmap中哪些单词与“hellooo”进行比较时,我陷入了困境 我无法将“ohelloo”[应更正为“hello”)与词典b/c中的每个单词进行比较,这将花费太长的时间,我无法将其与词典中以“o”开头的所有单词进行比较。b/c应该是“hello”Algorithm 将单词与词典中的目标单词进行比较,algorithm,hashmap,spell-checking,Algorithm,Hashmap,Spell Checking,我正试图用JAVA编写一个程序,将字典存储在hashmap中(每个单词在不同的键下),并将给定的单词与字典中的单词进行比较,如果在字典中找不到,则提出拼写建议——基本上是一个拼写检查程序 我已经提出了比较算法(即Needleman Wunsch,然后是Levenshtein distance),等等,但在计算字典hashmap中哪些单词与“hellooo”进行比较时,我陷入了困境 我无法将“ohelloo”[应更正为“hello”)与词典b/c中的每个单词进行比较,这将花费太长的时间,我无法将其
有什么想法吗?最常见的拼写错误是
- 删除字母(小词或分词)
- 交换相邻字母
- 更改字母(QWERTY相邻字母)
- 插入字母
您甚至可以将其与额外的索引映射或带有“反向”单词的Trie或省略前N个字符(例如前2个)的额外索引结合起来,这样您就可以仅捕获前缀上发生的错误。最常见的拼写错误是
- 删除字母(小词或分词)
- 交换相邻字母
- 更改字母(QWERTY相邻字母)
- 插入字母
您甚至可以将它与一个额外的索引映射或带有“反向”单词的Trie或一个省略前N个字符(例如前2个)的额外索引结合起来,因此您可以捕获仅在前缀上发生的错误。您可以比较给定单词的所有移位,并选择最佳匹配。例如:“ohelloo”、“hellooo”、“elloooh”…好的,但是我如何在字典中选择一个子集来比较该单词?我认为哈希映射不是解决此问题的好数据结构。使用trie/后缀树您可以快速找到具有给定前缀的所有单词。但是如果拼写错误在前缀中呢?您可以比较给定单词的所有移位并选择最佳匹配。例如:“ohelloo”、“hellooo”、“elloooh”…好的,那么我如何在字典中选择一个子集来比较单词?我不认为hashmap是解决此问题的好数据结构。使用trie/后缀树,您将能够快速找到具有给定前缀的所有单词。但是,如果拼写错误在前缀中,该怎么办?谢谢;我已经提出了具有给定字典单词的单词的评分/比较算法。我的问题是关于哪个单词是w例如,如何在字典中选择相似的单词;我已经想出了一个单词与给定的字典单词的评分/比较算法。我的问题是要在字典中比较一个单词与哪个单词,即如何在字典中选择相似的单词