Grammar check
Grammar check
Hi,
Is it possible to highlight more than 1 word using the OnSpellingCheck event? When grammar checking sometimes more than 1 word needs to be highlighted. We like the way the OnSpellingCheck is implemented and its perfect for spell check. Just wondering if a similar way can be done for grammar checking.
For example
"to be" phrase is passive voice and occurrences of the phrase would need to be highlighted both words "to" and "be" together.
Thanks and kind regards,
Extorian
Is it possible to highlight more than 1 word using the OnSpellingCheck event? When grammar checking sometimes more than 1 word needs to be highlighted. We like the way the OnSpellingCheck is implemented and its perfect for spell check. Just wondering if a similar way can be done for grammar checking.
For example
"to be" phrase is passive voice and occurrences of the phrase would need to be highlighted both words "to" and "be" together.
Thanks and kind regards,
Extorian
-
- Site Admin
- Posts: 17557
- Joined: Sat Aug 27, 2005 10:28 am
- Contact:
We evaluated a few grammar checkers both offline and online before deciding on using the online free afterthedeadline service.
Among those we evaluated include Link grammar parser used by AbiWord, LanguageTool used by OpenOffice and Graviax. Some of these are merely parsers which you have to provide the rules and explanation, others like the languagetool are java apps or services which isn't really suitable for our purpose. Perhaps other readers here might have better luck with them.
We are thinking of wrapping afterthedeadline web api to work with our app. We can develop a vcl component that wraps the service and can collaborate to create a compatible api to integrate with TrichView/ScaleRichview. Let me know you thoughts.
Among those we evaluated include Link grammar parser used by AbiWord, LanguageTool used by OpenOffice and Graviax. Some of these are merely parsers which you have to provide the rules and explanation, others like the languagetool are java apps or services which isn't really suitable for our purpose. Perhaps other readers here might have better luck with them.
We are thinking of wrapping afterthedeadline web api to work with our app. We can develop a vcl component that wraps the service and can collaborate to create a compatible api to integrate with TrichView/ScaleRichview. Let me know you thoughts.
-
- Site Admin
- Posts: 17557
- Joined: Sat Aug 27, 2005 10:28 am
- Contact:
Yes, it can do it. Typically if you have "check as you type" enabled then, the app has to send to the service only when a sentence is complete. So it would check the sentence and return the results. This can be handled in a separate thread for seamless operation.
If you are doing a whole document check, we can send the whole document to the service and return the results as one block.
For example for sentence
He is to be here here.
The grammar check results would be in the following form.
Possibly an array.
Error phrase, error type, suggested replacement, url for more details
"to be", "passive voice", none,www. ...
"here here", "duplicate word","here", www. ...
In the above case, trichview would need to highlight all occurrences of "to be" and "here here" in the document. When the user right clicks, on popup can fill with the corresponding error type and suggestions after detecting the right clicked error phrase through a form of "GetCurrentMisspelling"
If you are doing a whole document check, we can send the whole document to the service and return the results as one block.
For example for sentence
He is to be here here.
The grammar check results would be in the following form.
Possibly an array.
Error phrase, error type, suggested replacement, url for more details
"to be", "passive voice", none,www. ...
"here here", "duplicate word","here", www. ...
In the above case, trichview would need to highlight all occurrences of "to be" and "here here" in the document. When the user right clicks, on popup can fill with the corresponding error type and suggestions after detecting the right clicked error phrase through a form of "GetCurrentMisspelling"
-
- Site Admin
- Posts: 17557
- Joined: Sat Aug 27, 2005 10:28 am
- Contact:
Does it return the position of an error in the string?
I am afraid we could not implement a grammar checking right now, we have too many half-completed projects. I can return to this problem only in the next year.
Performing a grammar checking on a click (similarly to their demo on the site) is very simple, but a background thread requires a considerable amount of work.
I am afraid we could not implement a grammar checking right now, we have too many half-completed projects. I can return to this problem only in the next year.
Performing a grammar checking on a click (similarly to their demo on the site) is very simple, but a background thread requires a considerable amount of work.
No unfortunately it does not return the position. Only the phrase.
Could you tell how to implement a simple grammar check on right click similar to their demo? With some code if you can? Mostly how to underline a phrase (in green) and how to detect on right click if it is on a bad phrase. We will try to carry on from there.
Thanks
Could you tell how to implement a simple grammar check on right click similar to their demo? With some code if you can? Mostly how to underline a phrase (in green) and how to detect on right click if it is on a bad phrase. We will try to carry on from there.
Thanks
-
- Site Admin
- Posts: 17557
- Joined: Sat Aug 27, 2005 10:28 am
- Contact:
I can give you an example as a starting point:
http://www.trichview.com/support/files/rectmarks.zip
This example uses the same mechanism as used for live-spelling underlines to mark some substrings. This example draws rectangles around the strings, but you can change them to underlines.
This unit contains the function
MarkSubstring(rv: TCustomRichView; const s: String; Color: TColor);
It marks all occurrences of s, it's just what you need.
I suggest to use RVGetTextRange(rv, 0, RVGetTextLength(rv)) (functions from RVLinear unit) to get a text string for checking.
(This solution is ok for small documents. However, it would be much more efficient to check paragraph by paragraph. You will need functions returning text in the paragraph, and a modification of MarkSubstring working only in this paragraph).
http://www.trichview.com/support/files/rectmarks.zip
This example uses the same mechanism as used for live-spelling underlines to mark some substrings. This example draws rectangles around the strings, but you can change them to underlines.
This unit contains the function
MarkSubstring(rv: TCustomRichView; const s: String; Color: TColor);
It marks all occurrences of s, it's just what you need.
I suggest to use RVGetTextRange(rv, 0, RVGetTextLength(rv)) (functions from RVLinear unit) to get a text string for checking.
(This solution is ok for small documents. However, it would be much more efficient to check paragraph by paragraph. You will need functions returning text in the paragraph, and a modification of MarkSubstring working only in this paragraph).
I think http://proofreadbot.com/ is the best solution for your grammar checking in the same way.