Орфография

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
gvozd1989
Новичок
Новичок
 
Сообщения: 38
Зарегистрирован: 13.01.2005 (Чт) 9:16
Откуда: Украина

Орфография

Сообщение gvozd1989 » 18.02.2005 (Пт) 18:38

Люди, плз, дайте исходник проверки орфографии, но не Вордовской.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 18.02.2005 (Пт) 18:41

А не кажется ли тебе, что это длинноватый исходник получится? ;)
I don't understand. Sorry.

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Re: Орфография

Сообщение vvs_adm » 18.02.2005 (Пт) 18:53

gvozd1989 писал(а):Люди, плз, дайте исходник проверки орфографии, но не Вордовской.


А Вордовская орфография сильно отличается от русской?

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 18.02.2005 (Пт) 19:01

В принципе, если считать, что у нас есть функция "Function Orphography(ByVal Word As String) As Boolean", которая проверяет, является ли данное слово правильным (есть ли оно в словаре), то можно даже реализовать всплывающее меню с вариантами написания, причем это не будет километровым кодом :roll:

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 18.02.2005 (Пт) 19:15

А функцию задекларируем из либы, которую посоветуем скачать с simtel.net :)

Да, помимо это нам понадобится еще

GetSpellingVariations(Word as String) As Collection :) Но ее на симтеле по моему нету...

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 18.02.2005 (Пт) 20:06

Не, это уже не обязательно :)

SHURUP
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 440
Зарегистрирован: 15.09.2004 (Ср) 14:24
Откуда: Ирпень, Украина

Сообщение SHURUP » 19.02.2005 (Сб) 4:10

A.A.Z. писал(а):В принципе, если считать, что у нас есть функция "Function Orphography(ByVal Word As String) As Boolean", которая проверяет, является ли данное слово правильным (есть ли оно в словаре), то можно даже реализовать всплывающее меню с вариантами написания, причем это не будет километровым кодом :roll:

А как можно это самое меню организовать? (В смысле как найти похожие слова) Ведь для нас то они похожи, а для машины по какому-то странному "алгоритму поиска схожести" нужно будет перелопатить весь словарь, а русский язык ВЕЛИК (а значит и словарь не маленький). Значит если я напишу "Аблоко" то пока до "Яблоко" дойдет - время пройдет немало!
Все у этих компьютеров через… :oops: … через циклы!
Нам чужого не надо, но своё мы возьмем, чьё бы оно ни было...

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Сообщение vvs_adm » 19.02.2005 (Сб) 4:46

А если ты напишешь ТЫблоко, то в ворде до Яблоко вообще не дошло у меня... Умерло где то по дороге :(

А если серьезно, то интересно, какой там (в ворде) алгоритм...

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 19.02.2005 (Сб) 10:01

Ну,
Код: Выделить всё
Option Explicit

Function Orphography(ByVal Word$) As Boolean

End Function

Sub Check(ByVal Word$)
Dim I&, J&, S$
If Orphography(Word) Then Exit Sub
For I = 1 To Len(Word)
S = Mid(Word, 1, I - 1) & Mid(Word, I + 1)
If Orphography(S) Then Debug.Print S
If I < Len(Word) Then
  S = Mid(Word, 1, I - 1) & Mid(Word, I + 1, 1) & Mid(Word, I, 1) & Mid(Word, I + 2)
  If Orphography(S) Then Debug.Print S
End If
If I < Len(Word) - 1 Then
  S = Mid(Word, 1, I - 1) & Mid(Word, I + 2, 1) & Mid(Word, I + 1, 1) & Mid(Word, I, 1) & Mid(Word, I + 3)
  If Orphography(S) Then Debug.Print S
End If
For J = Asc("А") To Asc("Я")
  S = Mid(Word, 1, x - 1) & Chr(J) & Mid(Word, I + 1)
  If Orphography(S) Then Debug.Print S
  S = Mid(Word, 1, I) & Chr(J) & Mid(Word, I + 1)
  If Orphography(S) Then Debug.Print S
  If I = 1 Then
   S = Chr(J) & Word
   If Orphography(S) Then Debug.Print S
  End If
Next J
If Orphography(Mid(Word, 1, I)) And Orphography(Mid(Word, I + 1)) Then Print Mid(Word, 1, I) & " " & Mid(Word, I + 1)
Next I
End Sub
От чего он "оберегает":
- Какая-то буква является лишней (например, вместо "буква" - "букква")
- При наборе допустили очепятку и какая-то буква перепуталась местами со следующей (вместо "буква" - "бувка")
- Вместо какой-то буквы должна стоять другая буква (вместо "буква" - "бугва")
- Какая-то буква пропущена (вместо "буква" - "бува")
- Может, пропущена первая буква (вместо "буква" - "уква")
- Может, это были два слова (вместо "моя буква" - "моябуква")
ЗЫ Но от таких вещей, как "мультик_анальный", он не обережет :)

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 19.02.2005 (Сб) 11:53

Можно конечно же и ISAPI заюзать (на CodeProjects) есть описание. Но там столько классов, что голова кругом идёт. Зато реализуется полная проверка орфографии. Но разработка проверки орфографии на основе этого API трудозатраты сопоставимы с проектом средней величины.
P.S. Там используется тот же принцип, что и в проверке в Word'е.
Это Ж-ж-ж-ж неспроста (с) Винни-Пух

gvozd1989
Новичок
Новичок
 
Сообщения: 38
Зарегистрирован: 13.01.2005 (Чт) 9:16
Откуда: Украина

Сообщение gvozd1989 » 19.02.2005 (Сб) 15:55

vvs_adm
Ничем не отличается, просто я пишу платную прогу, и не хочу проблем с MS.

All
Было бы вообще классно, если бы была какая-нибудь dll, которая сама все проверяет и возвращает результат, но чтобы она была бесплатная.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 101

    TopList