Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

О словарях и проверке орфографии

549
05 августа 2003 года
Бирмингем
35 / / 20.06.2000
Сегодня меня что-то заинтересовал вопрос: можно ли как-то пользоваться вордовскими словарями (или есть еще какие-то, удобные для использования?), а также как теоретически можно устроить проверку орфографии. Отчего-то кажется, что средства для этого уже написаны кем-то и когда-то... а?
267
05 августа 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by Бирмингем
Сегодня меня что-то заинтересовал вопрос: можно ли как-то пользоваться вордовскими словарями (или есть еще какие-то, удобные для использования?), а также как теоретически можно устроить проверку орфографии. Отчего-то кажется, что средства для этого уже написаны кем-то и когда-то... а?



Ну с орфографией все относительно просто - достаточно иметь список всех слов. Ровно так и поступает Ворд. Поэтому в предложении, например, "Чтение развевает интеллект" он ошибки не найдет (как, впрочем, и многие из людей).
Поскольку в русском языке (в отличие от английского) слова склоняются, возникает геморрой - узнав слово "кот", Ворду приходится отдельно учить и слова "котом", "кота", "коту", "коте" и т.д.
Но это все равно цветочки. С пунктуацией все гораздо сложнее...

549
05 августа 2003 года
Бирмингем
35 / / 20.06.2000
Спасибо :) То, что нужно иметь большой список слов - это очевидно. В это связи и спрашиваю: можно как-то воспользоваться готовыми словарями?
2.1K
05 августа 2003 года
Tever
87 / / 05.08.2003
Цитата:
Originally posted by Бирмингем
Спасибо :) То, что нужно иметь большой список слов - это очевидно. В это связи и спрашиваю: можно как-то воспользоваться готовыми словарями?


Можно, у меня где-то был готовый пример. Найду, проверу и выложу

549
06 августа 2003 года
Бирмингем
35 / / 20.06.2000
Цитата:
Originally posted by Tever

Можно, у меня где-то был готовый пример. Найду, проверу и выложу


Большое спасибо! :) Очень жду.

2.1K
06 августа 2003 года
Tever
87 / / 05.08.2003
Проект состоит из одного модуля и двух форм:
1. DocumentForm
2. Module1
3. SuggestionsForm
Старт программы из формы DocumentForm

[COLOR=red]1.[/COLOR] На форме DocumentForm один Textbox под именем Text1, multiline=true и две кнопки: Command1 (Caption="Check Document", Command2 ("Exit").
Код этой формы:

Private Sub Command1_Click()
Dim DRange As Range

Me.Caption = "starting word ..."
On Error Resume Next
Set AppWord = GetObject(, "Word.Application")
If AppWord Is Nothing Then
Set AppWord = CreateObject("Word.Application")
If AppWord Is Nothing Then
MsgBox "Could not start Word. Application will end"
End
End If
End If
On Error GoTo ErrorHandler
AppWord.Documents.Add
Me.Caption = "checking words..."
Set DRange = AppWord.ActiveDocument.Range
DRange.InsertAfter Text1.Text
Set SpellCollectionSpellCollection = DRange.SpellingErrors
If SpellCollectionSpellCollection.Count > 0 Then
SuggestionsForm.List1.Clear
SuggestionsForm.List2.Clear
For iWord = 1 To SpellCollectionSpellCollection.Count
SuggestionsForm!List1.AddItem SpellCollectionSpellCollection.Item(iWord)
Next
End If
Me.Caption = "Word VBA Example"
SuggestionsForm.Show
Exit Sub

ErrorHandler:
MsgBox "The following error occured during the document's spelling" & vbCrLf & Err.Description
End Sub

Private Sub Command2_Click()
End
End Sub

[COLOR=red]2.[/COLOR] Модуль Module1:

Public AppWord As Application
Public CorrectionsCollectionCollection As SpellingSuggestions
Public SpellCollectionSpellCollection As ProofreadingErrors

[COLOR=red]3.[/COLOR] Форма SuggestionsForm:
На форме два ListBox'a с именами List1 List2 и кнопка Command1 с заголовком "Close"

Private Sub Command1_Click()
Me.Hide
End Sub

Private Sub List1_Click()
Screen.MousePointer = vbHourglass
Set CorrectionsCollectionCollection = _
AppWord.GetSpellingSuggestions(SpellCollectionSpellCollection.Item _
(List1.ListIndex + 1))
List2.Clear
For iSuggWord = 1 To CorrectionsCollectionCollection.Count
List2.AddItem CorrectionsCollectionCollection.Item(iSuggWord)
Next
Screen.MousePointer = vbDefault

End Sub

Все взято из книги "Visual Basic 6 и VBA для профессионалов" издательство "Питер" 2000г.
Полный проект могу выслать на мыло, стучите в аську
2.1K
06 августа 2003 года
Tever
87 / / 05.08.2003
Прошу пардону, не заметил, что можно прицепить файл.:D Цепляю архив с проектом
549
06 августа 2003 года
Бирмингем
35 / / 20.06.2000
Спасибо, примерно это я и хотел найти.
Скачаю - посмотрю.
267
06 августа 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by Бирмингем
Спасибо, примерно это я и хотел найти.
Скачаю - посмотрю.



Так это вы пользуетесь дядей Вордом для проверки. Я думал, вам интересно САМИМ проверять...

549
06 августа 2003 года
Бирмингем
35 / / 20.06.2000
Цитата:
Originally posted by Cutty Sark


Так это вы пользуетесь дядей Вордом для проверки. Я думал, вам интересно САМИМ проверять...


Ты прав - интересно.
Но где взять объемный словарь? Кроме того, нужно оптимизировать поиск, различать словоформы и т.д. Хотя для моей задачи подошла бы обычная проверка: есть такое слово или нет (хотя бы в своей основной форме). Есть сомнения, что кроме ворда и еще ряда спец. программ имеют такие словари в принципе. Так что если ворд - это решение, то все ок. Но если так сделать будет довольно медленно (процесс обращения к ворду, подозреваю, требует ощутимого времени), то видимо потребуется искать другие пути... (может быть формат вордовского словаря «раскрутить» придется и написать свои инструменты? :))
А больше идей нет?

267
06 августа 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by Бирмингем

Ты прав - интересно.
Но где взять объемный словарь? Кроме того, нужно оптимизировать поиск, различать словоформы и т.д. Хотя для моей задачи подошла бы обычная проверка: есть такое слово или нет (хотя бы в своей основной форме). Есть сомнения, что кроме ворда и еще ряда спец. программ имеют такие словари в принципе. Так что если ворд - это решение, то все ок. Но если так сделать будет довольно медленно (процесс обращения к ворду, подозреваю, требует ощутимого времени), то видимо потребуется искать другие пути... (может быть формат вордовского словаря «раскрутить» придется и написать свои инструменты? :))
А больше идей нет?



Есть еще такая штука, как Lingvo. Это больше чем просто англо-русский словарь. Поскольку он написан в России, от него можно ожидать приятных сюрпризов. Наши программисты - лучшие в мире. Не говоря уже о программистках... :D

265
06 августа 2003 года
Gauss
975 / / 20.02.2000
Цитата:
Originally posted by Cutty Sark


Есть еще такая штука, как Lingvo. Это больше чем просто англо-русский словарь. Поскольку он написан в России, от него можно ожидать приятных сюрпризов. Наши программисты - лучшие в мире. Не говоря уже о программистках... :D


Lingvo - это набор словарей иностранных слов с переводом, проверка орфографии это [COLOR=red]ОРФО[/COLOR]

1.9K
08 августа 2003 года
bad_duck
59 / / 29.07.2003
Цитата:
Originally posted by Gauss

Lingvo - это набор словарей иностранных слов с переводом, проверка орфографии это [COLOR=red]ОРФО[/COLOR]



Ребята, я конечно новичок и мало чего знаю. Но нельзя ли как-то использовать FineReader. Он когда незнакомые слова распознает спрашивает о том что это за слово: существительное, глагол, прилагательное, род. Предлагает формы множественного числа, падежные формы и т.д.

265
08 августа 2003 года
Gauss
975 / / 20.02.2000
Цитата:
Originally posted by bad_duck


Ребята, я конечно новичок и мало чего знаю. Но нельзя ли как-то использовать FineReader. Он когда незнакомые слова распознает спрашивает о том что это за слово: существительное, глагол, прилагательное, род. Предлагает формы множественного числа, падежные формы и т.д.


Уважаемый! А на х@я? FineReader имеет свое четкое назначение, да в нем есть проверка орфографии, но это производная от ОРФО! Я думаю, не стоит микроскопами гвозди забивать!

549
08 августа 2003 года
Бирмингем
35 / / 20.06.2000
Вордом, кстати, вполне ничего получилось. Только как его потом из памяти выгружать?
А вы вот про орфо и файнридер говорите, а как конкретно ими воспользоваться знаете?
267
08 августа 2003 года
Cutty Sark
1.2K / / 17.10.2002
Цитата:
Originally posted by Бирмингем
Вордом, кстати, вполне ничего получилось. Только как его потом из памяти выгружать?
А вы вот про орфо и файнридер говорите, а как конкретно ими воспользоваться знаете?



В рамках приведенных выше макросов Ворд выгружается так:
AppWord.Quit SaveChanges:=False

Только если у тебя на момент запуска макроса уже был открыт Ворд, он (макрос) подцепляется к нему (открытому Ворду), и так ты в конце можешь ненавязчиво прибить чью-то работу. По хорошему надо вот эти строки:

 
Код:
Set AppWord = GetObject(, "Word.Application")
If AppWord Is Nothing Then
    Set AppWord = CreateObject("Word.Application")
    If AppWord Is Nothing Then
        MsgBox "Could not start Word. Application will end"
        End
    End If
End If


оформить вот так:

Код:
Set AppWord = GetObject(, "Word.Application")
If Not AppWord Is Nothing Then
    WordIsNew = 0
Else
    Set AppWord = CreateObject("Word.Application")
    If Not AppWord Is Nothing Then
        WordIsNew = 1
    Else
        MsgBox "Could not start Word. Application will end"
        End
    End If
End If


а выгружать так:
 
Код:
If WordIsNew = 1 Then
    AppWord.Quit SaveChanges:=False
Else
    AppWord.Documents(AppWord.Documents.Count).Close SaveChanges:=False
End If


Переменная WordIsNew - Static, Integer.
265
08 августа 2003 года
Gauss
975 / / 20.02.2000
Цитата:
Originally posted by Бирмингем
Вордом, кстати, вполне ничего получилось. Только как его потом из памяти выгружать?
А вы вот про орфо и файнридер говорите, а как конкретно ими воспользоваться знаете?


а ты уже используешь ОРФО смотри в Word "О программе", Microsoft вместо того чтобы писать свой модуль проверки орфографии использует ОРФО!

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог