GNU Aspell

GNU Aspell is a Free and Open Source spell checker designed to
eventually replace Ispell. It can either be used as a library or as
an independent spell checker. Its main feature is that it does a superior
job of suggesting possible replacements for a misspelled word
than just about any other spell checker out there for the English
language. Unlike Ispell, Aspell can also easily check documents in
UTF-8 without having to use a special dictionary. Aspell will also do
its best to respect the current locale setting. Other advantages over
Ispell include support for using multiple dictionaries at once and
intelligently handling personal dictionaries when more than one Aspell
process is open at once.

News

January 29, 2016
Release Candidate 1 for GNU Aspell 0.60.7 is now available. More

December 11, 2016
GNU Aspell has moved to GitHub. All issues from Sourceforge have been
moved to GitHub. The old CVS repo is now considered frozen. The
current Git repo is a state of flux. Once it stabilizes the master
and devel branch will be mirrored on Savannah for safe keeping.

September 12, 2011
In recent years the development of Aspell has stagnated, but I have
never really lost interest in Aspell. The problem was that I just did
not know how to move forward in light of Hunspell slower taking the
role that I meant for Aspell to take. However, after giving it
careful thought I believe Aspell future depends on making Enchant the
system spell checker. This will involve some effort on the part of
others to make it happen.
More
(Followup Discussion).

July 4, 2011
GNU Aspell 0.60.6.1 is now available.
This is a bug fix release.
More.

Getting

The latest version of GNU Aspell is 0.60.6.1. You can find it at ftp.gnu.org:/gnu/aspell or at
a GNU mirror site. You
will also need to download at least one dictionary which can be found
at the same location.

If you are looking for Aspell 0.33.7, Pspell, or dictionaries for
Aspell 0.33.7 go here.

A patch for ispell.el for improved Aspell support also available.
This patch will notify aspell of the replacements one makes so it can
improve the suggestion list in the future. A more involved patch can
be found here
This one also adds UTF-8 support but will only apply cleanly to
Ispell.el 3.7 beta.

Support

Unofficial support for GNU Aspell can be found at the aspell-user
mailing list. You do not need to be subscribed in order to post,
however if you don't subscribe your post will need to be approved. The
list mailing address is aspell-user@gnu.org.
Please direct all problems you have with Aspell to this list and not
directly to Kevin.

Language Bindings

Getting Involved

The easiest thing you can do help out is to try GNU Aspell out and
report bugs or even better submit patches to fix problems. You can
either send them to the aspell-devel mailing list or via GitHub.

If you are interested in following the latest developments be sure and
subscribe to the aspell-announce
mailing list.

If you are a fairly regular user of Aspell consider subscribing to the
aspell-user
mailing list to help other users out with their problems.

If you are interested in helping with the development of Aspell or
have an idea you would like to discuss post it to the aspell-devel
mailing list. The aspell-devel mailing list is meant for people
interested in the development of the actual Aspell utility/library.
If you have a question about how to use the Aspell library please post
to the aspell-user mailing list.

Donating

If you wish to support Aspell consider donating.
Your donation will improve Aspell by encouraging Kevin Atkinson, the
main developer of Aspell, to continue to spend his time developing
Aspell. Without your support Aspell may go into another period of
non-development as was the case for most of 2003.

To Do

Lots of jobs remain to be done. Unfortunately, I do not have the time
to do all so if you are interested in helping me with one of these
tasks please email me at kevina@gnu.org. Good C++ skills
are needed for most of these tasks involving coding.

Things that need to be done

These items need to be done before I consider Aspell finished. If you
are interested in helping me with one of these tasks please email
me. Good C++ skills are needed for most of these tasks involving
coding.

Support Hunspell
features that Aspell doesn't have which prove to be usefull.
Most likely:

Twofold suffix stripping

Better support for compound words. The support for
conditional compound words found in Aspell versions 0.50
and earlier is no longer available since no one seams to be using
it. Support for unconditional compound words will still be
available. I have some ideas on the topic available here, but perhapes something
compatable with how Hunspell does it will be better.

Maybe others.

Create a generic filter to handle multi-character letters such as
"a or \"a for ä. This filter should make use of the
already exiting normalization code if possible. [Done for Aspell 0.61]

Make Aspell Thread safe. Even though Aspell itself is not
multi-threaded I would like it to be thread safe so that it can be
used by multi-threaded programs. There are several areas of Aspell
that that are potently thread unsafe (such as accessing a global pool)
and several classes which have the potential of being used by more
than one thread (such as the personal dictionary). [In
Progress].

Enhance ispell.el so that it will work better with GNU
Aspell. [In Progress].

Clean up copyright notices and bring the Aspell package up to
GNU Standards. [In Progress].

Things I would like to get done

I would like to get these done. However, I may still consider Aspell
finished with out. They will probably eventually get
implemented. However, I could still use help with them.

Be able to accept words with spaces in them as many languages
have words, such as a word in a foreign phrase, which only make sense
when followed by other words. See Words With Symbols in
Them.

Reorganize manual to make it easier to understand and to make it
possible to break out useful man pages.

Support soundslike lookup with affix compression. I think it
is possible, although I don't know how effective it will be. The basic
idea is to affix compress the soundslike codes and then match the
codes up with affix compressed words. If you are interested,
email aspell-devel@gnu.org, and I will explain it in more
detail.

Use Lawrence Philips' new Double Metaphone algorithm. See
http://aspell.net/metaphone/. The main task involved
here is converting the algorithm into table form. This will take some
time but their is no real programming experience is required. If you
want to help with Aspell but don't have any real programming
experience, this would be a great place to start.

Rank suggestions based on frequency information. Both global
frequency and document specific frequency can be used. The latter will
require that the whole document be made available to the spell checker.
Also use frequency information to flag words which are found in the
dictionary but not in common usage, and thus might not be what was
intended.

Support a "dual-script" mode where Aspell can use a separate
dictionary depending on which script it detects the current word in, the
two dictionaries can have nothing in common, ie an English one and a
Russian one for example. This will not support two languages that
use the same script as that is a lot more complicated. For example if
the word is misspelled which dictionary should it use for the
suggestions?

Write a GUI for the aspell utility. Ideally it should be able to do
everything the Aspell utility can do and not just be able spell check
a document.

Develop a more powerfull C API for Aspell. Ideally this API should
allow one to perform all the tasks the Aspell utility can do. This
included the ability to check whole documents, and create
dictionaries, among other things.

Create a C++ interface for Aspell, possibly on
top of the C one.

Support more than one spell checker engine. The basic support is
there, but since there has only every been one spell checker engine,
it will probably take a decent amount of work.