7

如何在 Java 应用程序中进行拼写检查和/或拼写更正?

4

6 回答 6

5

Google 的拼写检查器http://code.google.com/p/google-api-spelling-java/

 SpellChecker checker = new SpellChecker();

 SpellResponse spellResponse = checker.check( "helloo worlrd" );

 for( SpellCorrection sc : spellResponse.getCorrections() )
    System.out.println( sc.getValue() );

这很像当您使用 Gmail 或 Google 服务(例如 translate.google.com 或搜索)时,如果您有错字,它会为您提供替代建议。

后台发生了什么?

SpellChecker 类将请求转换为 XML 并将其发送到 Google 的拼写检查服务。响应也是 XML 格式的,然后将其反序列化为简单的 POJO。

对上面第一个示例的请求如下所示:

  <?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
  <spellrequest textalreadyclipped="0" ignoredigits="1" 
                          ignoreallcaps="1" ignoredups="0">
    <text>helloo worlrd</text>  
  </spellrequest>

响应 XML 如下所示:

  <?xml version="1.0" encoding="UTF-8"?>  
  <spellresult error="0" clipped="0" charschecked="13">
     <c o="0" l="6" s="1">hello  Helli   hell    hallo   hullo</c>
     <c o="7" l="6" s="1">world  whorled wold    warlord would</c>  
  </spellresult>

不过没试过。


更新:
谷歌可能已经开始为此收费。我没有时间编写代码来检查这一点。有人可以确认。就谷歌而言,他们似乎已经弃用了旧的 API 来使用新的和付费的 API。

参考:谷歌翻译 API 常见问题

早期免费版本的 Translate API 发生了什么变化?
自 2011 年 12 月 1 日起,Google Translate API v1 不再可用,并已被 Google Translate API v2 取代。Google Translate API v1 于 2011 年 5 月 26 日正式弃用。决定弃用 API 并将其替换为付费服务是由于广泛滥用造成的巨大经济负担。

于 2012-05-24T05:33:29.000 回答
3

您可以使用JOrtho。我之前在其中一个摇摆应用程序中使用过它。

于 2012-05-24T05:50:27.427 回答
2

Jazzy是一个很好的离线解决方案。试试这个例子并下载字典

这是库的Maven 依赖项:

<dependency>
    <groupId>net.sf.jazzy</groupId>
    <artifactId>jazzy</artifactId>
    <version>0.5.2-rtext-1.4.1-2</version>
</dependency>
于 2013-07-28T01:09:24.700 回答
2

Languagetool 是可能适合的基于 Java 的拼写检查和校对软件。看

于 2014-09-21T07:36:52.013 回答
0

试试 Hunspell。它是拼写检查的标准。您可以使用Hunspell 的Java 端口,即 Hunspell-c+ JNA

于 2013-05-31T07:51:25.007 回答
0

如果您想要一个简单且离线的解决方案,基于Peter Norvig 对Google 拼写校正器的解释,请查看此处:http ://raelcunha.com/spell-correct.php

于 2014-09-12T22:31:40.567 回答