|
|
Comments and Discussions
|
|
 |
|

|
The website is offline. No commercial version any more?
Are the any other dictionaries available? German version perhaps? Because I'm still looking for a better one for my auto-correction software.
(Sure, Hunspell might be an alternative, but is quite difficult to handle with the different dictionary licenses...)
|
|
|
|

|
Is it copyrighted? Where can I get permission? Thanks
|
|
|
|

|
Yes, you can use it. I am the copyright holder.
If you do use it, please give me credit where appropriate.
|
|
|
|

|
Hai,
Got your code for Spell Checking Engine(FPS SpellCheck Engine) from Code Project.com It is working fine & perfect. Now that my need is to have the same code for UK Dictionary. Can you mail me the UK Dictionary similar to US Dictionary so that I can use it instead of US Dictionary? I tried different options but in vain. Expecting a positive mail from you soon.
Thanks.
LaksAmmu
|
|
|
|

|
Hi
I'm using the same spell checker. If the font size and the word is an incorrect one, the line, which comes under the incorrected word, is not drawing properly. If the font size is bigger than the default font, the line is drawing on the word only. SO pls help me how to solve the problem.
Thanks
Pushparaj
|
|
|
|

|
I want to understand these algos ? Are these available in the web with code examples Can I get latest version of the application ? I am interested only in Algo
|
|
|
|

|
Then I think you should have a look at aspell/pspell by Kevin Atkinson. I think it's hosted at SourceForge, but a Google search should tell you.
|
|
|
|

|
Thanks for the interest.
Sorry for the delay in my response, but I am not getting notification emails off this article for some reason.
If I'm not mistaken, Lawerence Phillips developed the original Metaphone and Double Metaphone algorithms. There is a good article on CUJ about it. Here is the link:
http://www.cuj.com/articles/2000/0006/0006d/0006d.htm?topic=articles
(One note about this article, the MString class provided does not perform well w/high volume systems.)
There are numerous implementations of the metaphone algorithm many have small variations on the original. Most are used for spell checkers or similar apps.
Suresh Limaye wrote:
Can I get latest version of the application ?
Sorry, I don't have an updated version of this available at the momeent. My current "work-in-progress" for this project is quite involved. I am converting the core system to COM, adding language support, improving performance and matching (modified double metahone, etc.). Also, I am implementing a web-interface for the checker. It will probably be at least a couple of months before I have a version of this ready to post to CodeProject.
|
|
|
|
|

|
Thanks for the interest.
Sorry for the delay in my response, but I am not getting notification emails off this article for some reason.
I am not sure where is the best place to find word lists for the various languages. The few that I have to work with have been scavenged from various places.
You probably know this already, but, this particular version of the spell checker will probably not work very well with non-english languages without at least some modifications. I am working on an update to this project (major update), but it will be a couple of months before it is ready.
|
|
|
|
|

|
I like the look of the spell checker you've made and would love to include it in my program, but I'm ... well kinda a moron sometimes. I'm currently having a little trouble adding it to my program, see my program is an SDI (CEdit derived), so I can't seem to add member variables to the document. Any help would be greatly appreciated. Thank you in advance.
|
|
|
|

|
In my main dialog where the CEdit control is, I have an OnChange() member function. I use it to tell me that the contents of the edit box have changed.
Now that FPSSpellingEditCtrl steals OnChange(), how do I get this notification?
Thanks,
Gary A. Lucero
glucero@swcp.com
http://freebask.homestead.com
|
|
|
|

|
Change the CEdit derived class's ON_CONTROL_REFLECT to ON_CONTROL_REFLECT_EX and return FALSE from the CEdit derived class's OnChange handler - see MSDN for information on ON_CONTROL_REFLECT_EX.
|
|
|
|

|
Hi everyone , I have two questions : 1. I downloaded this project yesterday and when I try to run it in debug mode (in order to examine the files) I get ASSERTs all the time . Does anybody have a clue way ? (I have VC6 and win98) 2. Does somebody know where can I find material about spell checksers and the way they work ? (any material would help) Thanks in advance ofir
|
|
|
|

|
Hi there,
I also had assert problems when running in debug. It appears that the file USUser.dic that is in the Release folder is not in the Debug folder. Copy the file USUser.dic from the Release folder to the Debug folder and it works. Thanks to the author for liberal use of the TRACE function!
--steve
|
|
|
|

|
Treminate() causes a heap corruption problem. When the app exits you get a heap overrun message. Any idea or fix?
|
|
|
|

|
I guess the problem only occurs if you don't provide an option file to InitSpellingEngine() i.e.
InitSpellingEngine(NULL) causes the problem but
InitSpellingEngine(szFileName) is OK.
...?
|
|
|
|

|
Just in case you weren't aware of this, when a vertical scroll edit box has misspelled text that is out of view, the squiggly lines are still drawn off the edit box.
Any idea how I can quickly fix that, if you haven't already?
thanks!
kp
what?
|
|
|
|

|
add these lines to drawsquigly
CRgn rgn;
rgn.CreateRectRgnIndirect(&ClientRect);
dc.SelectClipRgn(&rgn);
void CFPSSpellingEditCtrl::DrawSquigly(CDC &dc, int iLeftX, int iWidth, int iY)
{
int iCurrentY = iY;
int iCurrentX = iLeftX;
CRect ClientRect;
GetClientRect(ClientRect);
/////////////////////
CRgn rgn;
rgn.CreateRectRgnIndirect(&ClientRect);
dc.SelectClipRgn(&rgn);
//////////////////////
while (iCurrentX <= iLeftX + iWidth)
{
dc.MoveTo(iCurrentX, iY);
if (iCurrentX+2 <= iLeftX + iWidth && iY+2 < ClientRect.Width())
dc.LineTo(iCurrentX+2, iY+2);
if (iCurrentX+4 <= iLeftX + iWidth && iY+2 < ClientRect.Width())
dc.LineTo(iCurrentX+4, iY);
iCurrentX += 3;
}
}
what?
|
|
|
|

|
HI, how would I have the spell checker engine running for a non-dialog based app. i.e. One using full Doc/View.
Nice work on this demo app!
|
|
|
|

|
How would you use it in CRichEditView?
-Matt Newman
|
|
|
|

|
I have been working on this version and it is a little more involved than the CEdit implementation. Basically, you must disable updates, use SetSel to select each word, check it and when you are done reset the selection to the original position and enable updates. Where it gets complicated is calculating where to draw the squigly lines. You have to get the charformat, create a compatible DC, determine the text height and from that calculate the position of the line. This can be problematic when a single word uses different fonts for different characters.
I am glad to see that someone is using or at least looking at this project. Unfortunately, due to my workload I have not been able to invest much time in completing this spell checker. I am hopefull that an upcoming project will require a spell checker and I will be able to finish it then.
|
|
|
|

|
Ya I was kind of hoping I could use it in CRichEditView but I guess I will just have to do some work on it, my current project is kind of boring me.
-Matt Newman
|
|
|
|

|
I have the same question. So, if you find any thing, please tell me.
Best regards
George Clarence
|
|
|
|

|
Sory, my right Email address is george_clarence@yahoo.co.uk
|
|
|
|

|
Make your engine much faster and try to make it an ocx
|
|
|
|

|
Application crashes on close. Bug is in following function:
void CFPSSpellingEditCtrl::Terminate()
{
if (m_pEngine)
{
ASSERT(m_pEngine->GetUserDic());
....
ASSERT above notifies error in debug mode, but there is no protection code that will take care of error. After ASSERT above you should add:
if(m_pEngine->GetUserDic())
{
}
Regards,
Miroslav Rajcic
http://www.spacetide.com
|
|
|
|

|
Thanks for the note. It did not occur on my test PC because there is always a user dic. I will fix the problem ASAP.
|
|
|
|

|
LOL guess not ASAP. Luckily I debugged it and ignored the assert error the 1st time through..
|
|
|
|

|
As the developer of this project, I am interested in knowing what languages the users of this site would like to see. Also, I am in need of word lists for the various languages.
Thank You,
Matt Gullett
|
|
|
|

|
I may be able to get some word lists for you. Send me an email (link below).
I work with languages that have never been written, so I'm very interested in this project. I am having trouble finding the Common Speller API. MS seems to deny any knowledge of it.
Birch
|
|
|
|

|
Russian, please.
|
|
|
|

|
I'd like to see:
Mexican Spanish
Spain Spanish
Japanese
Simplified Chinese
Portuguese
After that, I'd be able to use this in a app we have at work. I'd give you word lists for each language, but I haven't the first clue about finding them.
Jeremy Falcon
|
|
|
|

|
There's a newer algorithm by the author of Metaphone known as the Double Metaphone. You can find it at http://www.cuj.com/archive/1806/feature.html. I don't know how it will compare to your modified Metaphone, but you shoud check it out.
|
|
|
|

|
Thanks for the URL. Actually, I have already been researching the double-metaphone algorithm and I intend to implement it into the spelling engine. Some other things I have learned, though:
1) Some commercial spell checkers also use a word-reduction algorithm (which keeps some vowels) to augment their search results. I have been looking at how to implement such a routine as well.
2) At least MS Word (and probably others) also have developed a database of human-created word-reduction and metaphone outputs. These human-created outputs are used in thier dictionaries as opposed to the computer-created ones to provide a better output. I have already gone through my USEnglish dictionary and hand-coded many words with the letter 'G' in them.
|
|
|
|

|
Would it be enough to replace the dictionaries (e.g. english => german) to use your class in another language, or is the algorithmn written around "english words"?
Uwe Keim
See me: http://www.zeta-software.de/~uwe
|
|
|
|

|
The matching engine uses numerous "english specific" algorithms to enhance the reuslt list. I do not know much German, so I am not sure how well the engine will map to German. It would be worth a try, though. Progably the #1 function in the whole class which would need modification for various languages is the MetaphoneEx function. I think this function could be modified to work for German.
|
|
|
|

|
finish english first, but know:
english is too easy comparing to german and especialy (eastern)-europe/slavic-and-others languages
generaly one big difference is in english is one word for all circumstancies
in german there are 4, we (s) 7 object-word sub-kinds;
in english you say: of word, about word, with word
we say: zo slova, o slove, so slovom
similar for another word kinds (i do not try name them in english):
in english you have green, in mine: zeleny (he), zelana (she), zelene (it), ... (similar in german: something like gruner, grune, grunes)
in english more green/greener (?, stupidity, take as example only), we have zelensi; most green - najzelensi
and combinations: about green word - o zelenom slove (german: um grune wort (?!))
sometimes (very) regular, sometimes not
etc. etc.
knowing this complicated rules you can eliminate many duplicate/similar cases to keep concrete database smaller
keep smiling and finish english first
t!
|
|
|
|
|

|
In my opinion you might do following to improve the code:
- separarate language dependent parts from language independent
- break entire code into more than one class (CDictionary abstract class, CMainDictionary, CUserDictionary, CDictionaryIndex, ...)
- create some kind of standard dictionary format with header fields (language, creator, ...) , indexing, compression (finding common word suffixes, gzip)
- create application for conversion of worlists into dictionary format
I think your project have big potential and lots of us are willing to help you to create something really big from it.
Also I have lot of wordlists of different languages, so contact me if you are interested to publish them.
Regards,
Miroslav Rajcic
http://www.spacetide.com
|
|
|
|

|
OK, so the problem is not the Spell Checker, but the languages. As I'm coming from Holland, I know a saying in English: Double Dutch, so it is. Like the big brother of Dutch: German, Dutch has words which are male, female, multiple or no-gender. In German, you've got articles like:
Der, Des, Dem, Den, Die which all do mean: THE
and
Das, Der, Die which all do mean: IT
In Dutch it's more English-Like: "De" and "Het" for IT and "De" only for THE, but if you whant to use a prefix, to get a word have a more tiny sound, you must use "Het" in any case, even if it has a gender.
I think, if someone wants to create a new language, the english classes are obsolete. I think the solution is to create different classes with words in it like:
CGenderMale, CGenderFemale, CMultiple and CNoGender. Also CNoun, and CSuffix (Whick can be language specific, e.g.
Class CSuffix
{
if (Gender == "Male")
{
AddSuffix("er")
}
else if {Gender == "Female")
.
.
.
}
And so on. Also another class, for something specialy in english would be CWordPartCount. In this class You can set something as:
if (Count < 2)
{
DoSuffix();
}
else if (Count = 2)
{
DoSuffixAndMoreOrLess();
}
else
{
DoMoreOrLess();
}
Get the idea? Now, if a word has only one part, only Suffixes are displayed e.g. Cool (Cooler and Coolest). For a word with two parts the Suffixes and Prefixes are shown e.g. Crazy (Crazier but olso More Crazy) and the last, when a words has 3 parts or more, only Prefixes are shown e.g. Pathetic (More pathetic, Most pathetic)
Get the drill?
And there are numerous classes needed for feeding information about whether the word is Irregular or not, if it's a verb or not and so on. So I think a wide discussion is needed to get the "Perfect" Spell Checker.
CString Dutch = "Double Dutch";
|
|
|
|

|
Alright, this is great so far. I'd love to use this in our commercial project, I'd love to help develop the software at no cost providing we can us it in our commercial software. BUT, it's lacking language support, as mentioned. Now, previous writers wants some European languages, even eastern European, but we'd require world wide support including Thai, Chinese etc and preferrably also some functionality for translation dictionary (?). Meaning there is an english text and you want to get suggestions for translated words in a second language.
How does this sound? Currently I think we would not want to dig into this because it's too far off at the moment.
http://www.cavena.com
|
|
|
|

|
Any support on this project is appreciated. I have been working on it now for about two months in my spare time and there is still a great deal to do. I have been doing some research on non-english language support, and I have learned a great deal about it. I am comfortable stating that when finished it will support multiple european languages. I have not researched languages like chineese but I know that there would be signifigant requirements to make it work.
That said, I am a professional deverloper doing this on the side and I would not feel good recomending this project for a commercial product at this time. The amount of time required to complete it and the probably availibility of comparable existing products would probably lead me to look for an off-the-shelf solutions.
The concept of suggesting words in another language has come up before. From what I have learned, it is doable, but requires very good and exhaustive dictionaries with information on word usage, sentence patterning, etc.
|
|
|
|
 |
|
|
General News Suggestion Question Bug Answer Joke Rant Admin
|
A free spell checking engine for use in your C++ applications. Includes the current US English dictionary
| Type | Article |
| Licence | |
| First Posted | 6 Jan 2001 |
| Views | 185,161 |
| Bookmarked | 106 times |
|
|