| Предыдущая тема :: Следующая тема
|
Автор |
Сообщение |
therion ахамад
Зарегистрирован: Dec 02, 2004 Сообщения: 817 Откуда: Ракедтэй Дээдэ Вольта |
Добавлено: 03.09.07, 23:54 +0000 Сингармонизм, склонение.. в общем, морфология |
|
|
у меня есть пара скриптов, которые склоняют произвольные фамилию имя отчество в родительный или дательный падеж по правилам русского языка. На бурятских, русских, кавказских именах работает без ошибок (кстати, пришлось сделать исключение для Павел и Любовь).
В бурятском довольно строгая грамматика, почему бы не выкладывать здесь скриптики для вот таких вещей?
Было бы неплохо выложить хотя бы простенькие синтаксические разборы выражений для бурятского.
Для русского есть очень хорошие полные синтаксические разборы предложений.
Пригодилась бы и таблица соответствий имен в русском и бурятском, например Доржи Базаров -> Доржо Базарон (или Базарай?).
Последний раз редактировалось: therion (24.10.07, 06:19 +0000), всего редактировалось 3 раз(а) |
|
Вернуться к началу |
|
Tsebeen Мудур кэку
Зарегистрирован: Dec 9, 2003 Сообщения: 3030 Откуда: Yдэ голой урда бэе |
Добавлено: 04.09.07, 12:35 +0000 |
|
|
Банзарай Доржо <—> Доржи Банзаров _________________ Отшеньдобрый hидальго Дон Цэбээн Кижингинский и Доодо-Кодунский, Улаан-Yдэнский и Улаанбаатарский и прочая, прочая... едет к сеньоре Наталее Добоской и Машзаводской |
|
Вернуться к началу |
|
Tsebeen Мудур кэку
Зарегистрирован: Dec 9, 2003 Сообщения: 3030 Откуда: Yдэ голой урда бэе |
Добавлено: 05.09.07, 12:21 +0000 |
|
|
У меня есть идеи, нужны программисты. Терион, пхп и майскл знаешь? _________________ Отшеньдобрый hидальго Дон Цэбээн Кижингинский и Доодо-Кодунский, Улаан-Yдэнский и Улаанбаатарский и прочая, прочая... едет к сеньоре Наталее Добоской и Машзаводской |
|
Вернуться к началу |
|
therion ахамад
Зарегистрирован: Dec 02, 2004 Сообщения: 817 Откуда: Ракедтэй Дээдэ Вольта |
Добавлено: 05.09.07, 21:08 +0000 |
|
|
Tsebeen писал(а): | У меня есть идеи, нужны программисты. Терион, пхп и майскл знаешь? |
знаю MS SQL & C++ (хотя больше по VB) |
|
Вернуться к началу |
|
therion ахамад
Зарегистрирован: Dec 02, 2004 Сообщения: 817 Откуда: Ракедтэй Дээдэ Вольта |
Добавлено: 21.09.07, 05:30 +0000 |
|
|
Последний раз редактировалось: therion (23.09.07, 21:18 +0000), всего редактировалось 2 раз(а) |
|
Вернуться к началу |
|
therion ахамад
Зарегистрирован: Dec 02, 2004 Сообщения: 817 Откуда: Ракедтэй Дээдэ Вольта |
Добавлено: 21.09.07, 05:42 +0000 |
|
|
Пока данная функция проверки сингармонизма преобразует скажем "малгай" в грамматическое выражение CMCCM
(имеется в виду КСК-грамматика в компьютерном понимании, а не
филологическое), где
С - согласная
М - мужская гл
F - женская гл
N - нейтральная гл
выражение уже подвергается свертке к M или F
проверьте, работает в Word начиная с Word97
нажмите Alt-F11, вставить текст (только берегите бурятские буквы) |
|
Вернуться к началу |
|
therion ахамад
Зарегистрирован: Dec 02, 2004 Сообщения: 817 Откуда: Ракедтэй Дээдэ Вольта |
Добавлено: 23.09.07, 21:21 +0000 |
|
|
Код: |
' Copyright Therion
' MMVII
' free for noncommercial use
' динамические строковые массивы для фонем
Dim MalVw$()
Dim FemVw$()
Dim NeuVw$()
Dim Conso$()
Sub exampl()
FillData ' заполняем часто используемые массивы
MsgBox (Syn$("ДавааСэрээн"))
End Sub
Function Syn$(A$)
Syn$ = Deflate$(Vocalize$(LCase(A$)))
End Function
Public Sub FillData()
' Заполняем массивы
' ..(легче проверять сначала долгие фонемы, чтоб корректно отрабатывал слова типа
' "оюутан" = "о йуу т а н";по хорошему их следовало преобразовать в
' отдельные односимвольные фонетические знаки)
' ЕРЭ
' заднеязычные - дифтонги долгие йотированные долгие основные и краткие йотированные
MalVw$ = Split("ай ой уй аа оо уу яа ёо а о у я ё") ' кроме юу и ю
' ЭМЭ
' переднеязычные
FemVw$ = Split("эй їй ээ її єє еэ э ї е")
' кроме юї - вообще пока не обрабатываю
' ЭРСЭ
' среднеязычные
NeuVw$ = Split("юу ии ю и ы")
' согласные, аффрикаты плюс все подряд, пока так
Conso$ = Split("дж дз б в г д ж з к л м н п р с т ф х ћ ц ш щ ь ъ")
' Есть ли смысл отдельно выделять слова с согласными вкфцчщь?
' как заимствования? Не всегда только по наличию-отсутствию их можно это определить
End Sub
' ***************************************
Public Function Vocalize$(St0$)
Dim i As Integer
Dim St$, strLex$
Dim IsCon As Boolean
Dim IsMal As Boolean
Dim IsFem As Boolean
Dim IsNeu As Boolean
IsCon = False
IsMal = False
IsFem = False
IsNeu = False
St$ = St0$
strLex$ = ""
' экономнее было бы все четыре массива спихать в один двумерный, и отработать одним махом, но так нагляднее
Do 'н.цикла проверки фонем
For i = 0 To UBound(Conso$)
If Left(St$, Len(Conso$(i))) = Conso$(i) Then
IsCon = True
St$ = Right(St$, Len(St$) - Len(Conso$(i)))
strLex$ = strLex$ & "C"
Exit For
End If
Next
For i = 0 To UBound(MalVw$)
If Left(St$, Len(MalVw$(i))) = MalVw$(i) Then
IsMal = True
St$ = Right(St$, Len(St$) - Len(MalVw$(i)))
strLex$ = strLex$ & "M"
Exit For
End If
Next
For i = 0 To UBound(FemVw$)
If Left(St$, Len(FemVw$(i))) = FemVw$(i) Then
IsFem = True
St$ = Right(St$, Len(St$) - Len(FemVw$(i)))
strLex$ = strLex$ & "F"
Exit For
End If
Next
For i = 0 To UBound(NeuVw$)
If Left(St$, Len(NeuVw$(i))) = NeuVw$(i) Then
IsNeu = True
St$ = Right(St$, Len(St$) - Len(NeuVw$(i)))
strLex$ = strLex$ & "N"
Exit For
End If
Next
Loop Until St$ = "" 'конец цикла проверки фонем
Vocalize$ = strLex$
' Debug.Print strLex$
' strLex$ - выражение, поддающееся грамматической свертке
End Function
Function Deflate$(A$)
Dim cc$, cd$
cc$ = A$
cc$ = Replace(A$, "C", "")
cc$ = Replace(cc$, "N", "")
If cc$ = "" Then
cc$ = "F" ' правило CNCNC=F
Else
While Not Len(cc$) = Len(Replace(cc$, "MM", "M")) ' страшно неэкономно, но компактно записывается
cc$ = Replace(cc$, "MM", "M")
Wend
While Not Len(cc$) = Len(Replace(cc$, "FF", "F"))
cc$ = Replace(cc$, "FF", "F")
Wend
End If
Deflate$ = Right(cc$, 1) ' Если остается сочетание типа MFM считаем,
' что это составное слово, определяемое по последнему корню
End Function
' гейм, как говорится овер. єїћ
| |
|
Вернуться к началу |
|
therion ахамад
Зарегистрирован: Dec 02, 2004 Сообщения: 817 Откуда: Ракедтэй Дээдэ Вольта |
Добавлено: 23.09.07, 21:27 +0000 |
|
|
функция определяет фонетический ряд (передний, задний) слова.
Нет проверки на некорректность (лишние пробелы, символы латиницы, дефисы).
Пока не придумал что делать с лабиализацией.
Яхонтова Н.С. писал(а): | если первым гласным слова является о или &оacute;, то гласные нижнего подъема следующего слога должны быть лабиализованными, т. е. в следующем слоге не могут стоять а или е. Явление губного притяжения не наблюдается в калмыцком, ойратском и дагурском языках. | |
|
Вернуться к началу |
|
therion ахамад
Зарегистрирован: Dec 02, 2004 Сообщения: 817 Откуда: Ракедтэй Дээдэ Вольта |
Добавлено: 26.09.07, 00:50 +0000 |
|
|
Изменил с учетом лабилизации, функция корректно определяет
какое гласное должно быть в окончании склонения для бурятских слов. Сложные слова определяет по типу последнего гласного
Наверно, для заимствованных слов или имен типа "Игорь", "Дина" придется использовать правила русского языка определения ударения (снова здравствуй, Розенталь).
Почему то никто кроме Tsebeen-а не отписывает.
Неужели не нужно?
Код: |
' Copyright www.buryadxelen.org // Dorjy
' MMVII
' free for noncommercial use
' осторожно - программа тупо зависает, если есть символы отличные от бур.кириллицы
' динамические строковые массивы для фонем
Dim MalVw$()
Dim Labyl$()
Dim FemVw$()
Dim NeuVw$()
Dim Conso$()
Dim Phoenemae$()
Sub exampl()
FillData ' заполняем часто используемые массивы
MsgBox (Syn$("ћюрєє"))
End Sub
Function Syn$(A$)
Syn$ = Deflate$(Vocalize$(LCase(A$)))
End Function
Public Sub FillData()
Dim i, j As Integer
' Заполняем массивы
' ..(легче проверять сначала долгие фонемы, чтоб корректно отрабатывал слова типа
' "оюутан" = "о йуу т а н";по хорошему их следовало преобразовать в
' отдельные односимвольные фонетические знаки)
' ЕРЭ
' заднеязычные - дифтонги долгие йотированные долгие основные и краткие йотированные
MalVw$ = Split("ай уй аа уу яа а у я")
' лабилизированные
Labyl$ = Split("ой оо ёо о ё") ' все фонет. разновидности "о"
' ЭМЭ
' переднеязычные
FemVw$ = Split("эй їй ээ її єє еэ э ї е")
' кроме юї - вообще пока не обрабатываю
' ЭРСЭ
' среднеязычные
NeuVw$ = Split("юу ии ю и ы")
' согласные, аффрикаты плюс все подряд, пока так
Conso$ = Split("дж дз б в г д ж з к л м н п р с т ф х ћ ц ч ш щ ь ъ")
' Есть ли смысл отдельно выделять слова с согласными вкфцчщь?
' как заимствования? Не всегда только по наличию-отсутствию их можно это определить
' спихиваем все массивы в один двумерный, - таблица с размерностью 2, сортированная
' по типу, затем по длине фонемы
ReDim Preserve Phoenemae$(1, UBound(MalVw$) + UBound(Labyl$) + UBound(FemVw$) + UBound(NeuVw$) + UBound(Conso$) + 5 - 1)
j = 0
For i = 0 To UBound(MalVw$)
Phoenemae$(0, j) = MalVw$(i)
Phoenemae$(1, j) = "M"
j = j + 1
Next
For i = 0 To UBound(Labyl$)
Phoenemae$(0, j) = Labyl$(i)
Phoenemae$(1, j) = "L"
j = j + 1
Next
For i = 0 To UBound(FemVw$)
Phoenemae$(0, j) = FemVw$(i)
Phoenemae$(1, j) = "F"
j = j + 1
Next
For i = 0 To UBound(NeuVw$)
Phoenemae$(0, j) = NeuVw$(i)
Phoenemae$(1, j) = "N"
j = j + 1
Next
For i = 0 To UBound(Conso$)
Phoenemae$(0, j) = Conso$(i)
Phoenemae$(1, j) = "C"
j = j + 1
Next
End Sub
' ***************************************
Public Function Vocalize$(St0$)
Dim i As Integer
Dim LenF%, LenSt%
Dim St$, strLex$
Dim IsFound As Boolean
St$ = St0$
strLex$ = ""
Do 'н.цикла проверки фонем
IsFound = False
For i = 0 To UBound(Phoenemae$, 2)
LenSt% = Len(St$): LenF% = Len(Phoenemae$(0, i))
If Not LenSt% < LenF% Then
If Left(St$, LenF%) = Phoenemae$(0, i) Then
St$ = Right(St$, LenSt% - LenF%)
strLex$ = strLex$ & Phoenemae$(1, i)
IsFound = True
Exit For
End If
End If
Next
If Not IsFound Then
strLex$ = "ERROR" ' проверка на предмет небурятских букв
End If
Loop Until St$ = "" Or Not IsFound 'конец цикла проверки фонем
Vocalize$ = strLex$
' Debug.Print strLex$
' strLex$ - выражение, поддающееся грамматической свертке
End Function
Function Deflate$(A$)
Dim cc$, cd$
Dim i As Integer
cc$ = A$
cc$ = Replace(A$, "C", "") ' убираем все согласные фонемы
For i = 0 To 2 ' для длинных чередований нейтр и выраженной гласных
' ужимаем повторяющиеся вхождения одного типа гласных до одного вхождения
While Not Len(cc$) = Len(Replace(cc$, "NN", "N"))
cc$ = Replace(cc$, "NN", "N")
Wend
While Not Len(cc$) = Len(Replace(cc$, "MM", "M"))
cc$ = Replace(cc$, "MM", "M")
Wend
While Not Len(cc$) = Len(Replace(cc$, "LL", "L"))
cc$ = Replace(cc$, "LL", "L")
Wend
While Not Len(cc$) = Len(Replace(cc$, "FF", "F"))
cc$ = Replace(cc$, "FF", "F")
Wend
While Not Len(cc$) = Len(Replace(cc$, "NM", "M"))
cc$ = Replace(cc$, "NM", "M")
Wend
While Not Len(cc$) = Len(Replace(cc$, "MN", "M"))
cc$ = Replace(cc$, "MN", "M")
Wend
While Not Len(cc$) = Len(Replace(cc$, "NF", "F"))
cc$ = Replace(cc$, "NF", "F")
Wend
While Not Len(cc$) = Len(Replace(cc$, "FN", "F"))
cc$ = Replace(cc$, "FN", "F")
Wend
While Not Len(cc$) = Len(Replace(cc$, "NL", "L"))
cc$ = Replace(cc$, "NL", "L")
Wend
While Not Len(cc$) = Len(Replace(cc$, "LN", "M"))
cc$ = Replace(cc$, "LN", "M")
Wend
While Not Len(cc$) = Len(Replace(cc$, "LM", "M"))
cc$ = Replace(cc$, "LM", "M")
Wend
' что то громоздко и неэкономно получилось, нужно делать конечный автомат
Next
If cc$ = "N" Then
cc$ = "F" ' правило CNCNC=F
End If
cc$ = Right(cc$, 1) ' Если остается сочетание типа MFM или LF считаем,
' что это составное слово, определяемое по последнему корню
Select Case cc$
Case "M": Deflate$ = "а"
Case "F": Deflate$ = "э"
Case "L": Deflate$ = "о"
End Select
End Function
' гейм, как говорится овер. єїћ | |
|
Вернуться к началу |
|
Tsebeen Мудур кэку
Зарегистрирован: Dec 9, 2003 Сообщения: 3030 Откуда: Yдэ голой урда бэе |
Добавлено: 26.09.07, 01:49 +0000 |
|
|
Кстати, есть еще один неучтенный случай. В тех случаях, когда мы имеем слова с начальным кратким v (типа vгэ, hvхэ и т.п.), то в аффиксах появляется краткая э, но долгая єє. Например: датив vгэдэ, но инструменталис vгєєр, рефлексивный датив vгэдєє. _________________ Отшеньдобрый hидальго Дон Цэбээн Кижингинский и Доодо-Кодунский, Улаан-Yдэнский и Улаанбаатарский и прочая, прочая... едет к сеньоре Наталее Добоской и Машзаводской |
|
Вернуться к началу |
|
therion ахамад
Зарегистрирован: Dec 02, 2004 Сообщения: 817 Откуда: Ракедтэй Дээдэ Вольта |
Добавлено: 26.09.07, 03:39 +0000 |
|
|
Tsebeen писал(а): | Кстати, есть еще один неучтенный случай. В тех случаях, когда мы имеем слова с начальным кратким v (типа vгэ, hvхэ и т.п.), то в аффиксах появляется краткая э, но долгая єє. Например: датив vгэдэ, но инструменталис vгєєр, рефлексивный датив vгэдєє. |
Эх, так и подозревал женская θ где-нить вылезет |
|
Вернуться к началу |
|
therion ахамад
Зарегистрирован: Dec 02, 2004 Сообщения: 817 Откуда: Ракедтэй Дээдэ Вольта |
Добавлено: 30.09.07, 01:24 +0000 |
|
|
Добавил функции 2 падежей
например переделывает слово в именительном в дательно-местный или совместный
Код: | ' Copyright www.buryadxelen.org // Dorjy
' MMVII
' free for noncommercial use
' осторожно - программа выдает R, если есть символы отличные от бур.кириллицы
' и пустые агументы тоже лучше не вводить :)
' сингармонизм для заимствованных слов определяется неверно,
' "самолёт" -> "самолёдта" вместо "самолёдто" (хотя где логика, зачем заимствовать слова в бурятский вместе с правилами другой фонетики)
' динамические строковые массивы для фонем
Option Explicit
Dim MalVw$()
Dim LabM$()
Dim FemVw$()
Dim LabF$()
Dim NeuVw$()
Dim Conso$()
Dim Phoenemae$()
Sub exampl()
FillData ' заполняем часто используемые массивы
MsgBox (DativeLocative$("Доржо"))
MsgBox (Commutative$("малгай"))
End Sub
Function Commutative$(A$)
Dim SynType$
SynType$ = Syn$(A$)
SynType$ = IIf(SynType$ = "є", "э", SynType$)
Commutative$ = A$ & "т" & SynType$ & "й"
End Function
Function DativeLocative$(A$)
Dim SynType$, Ending$
SynType$ = Syn$(A$)
SynType$ = IIf(SynType$ = "є", "э", SynType$)
Ending$ = Right(A$, 1)
If (Ending$ Like "[бвгдкпрс]") Then
DativeLocative$ = A$ & "т" & SynType$
ElseIf Ending$ = "т" Then
DativeLocative$ = Left(A$, Len(A$) - 1) & "дт" & SynType$
ElseIf Ending$ = "и" Then
SynType$ = Syn$(Left(A$, Len(A$) - 1)) ' отрубаем "и", определяем сингармонизм без нее
SynType$ = IIf(SynType$ = "є", "э", SynType$)
DativeLocative$ = A$ & "д" & SynType$
Else
DativeLocative$ = A$ & "д" & SynType$
End If
End Function
Function Syn$(A$)
Syn$ = Deflate$(Vocalize$(LCase(A$)))
End Function
Public Sub FillData()
Dim i, j As Integer
' Заполняем массивы
' ..(легче проверять сначала долгие фонемы, чтоб корректно отрабатывал слова типа
' "оюутан" = "о йуу т а н";по хорошему их следовало преобразовать в
' отдельные односимвольные фонетические знаки)
' ЕРЭ
' заднеязычные - дифтонги долгие йотированные долгие основные и краткие йотированные
MalVw$ = Split("ай уй аа уу яа а у я")
' лабилизированные заднеязычные
LabM$ = Split("ой оо ёо о ё") ' все фонет. разновидности "о"
' ЭМЭ
' переднеязычные
FemVw$ = Split("эй їй ээ її єє еэ э е")
' лабилизированные переднеязычные
LabF$ = Split("ї")
' ЭРСЭ
' среднеязычные
NeuVw$ = Split("юу ии ю и ы")
' согласные, аффрикаты плюс все подряд, пока так
Conso$ = Split("дж дз б в г д ж з к л м н п р с т ф х ћ ц ч ш щ ь ъ")
' Есть ли смысл отдельно выделять слова с согласными вкфцчщь?
' как заимствования? Не всегда только по наличию-отсутствию их можно это определить
' спихиваем все массивы в один двумерный, - таблица с размерностью 2, сортированная
' по типу, затем по длине фонемы
ReDim Preserve Phoenemae$(1, UBound(MalVw$) + UBound(LabM$) + UBound(FemVw$) + UBound(LabF$) + UBound(NeuVw$) + UBound(Conso$) + 6 - 1)
j = 0
For i = 0 To UBound(MalVw$)
Phoenemae$(0, j) = MalVw$(i)
Phoenemae$(1, j) = "M"
j = j + 1
Next
For i = 0 To UBound(LabM$)
Phoenemae$(0, j) = LabM$(i)
Phoenemae$(1, j) = "L"
j = j + 1
Next
For i = 0 To UBound(FemVw$)
Phoenemae$(0, j) = FemVw$(i)
Phoenemae$(1, j) = "F"
j = j + 1
Next
For i = 0 To UBound(LabF$)
Phoenemae$(0, j) = LabF(i)
Phoenemae$(1, j) = "Y"
j = j + 1
Next
For i = 0 To UBound(NeuVw$)
Phoenemae$(0, j) = NeuVw$(i)
Phoenemae$(1, j) = "N"
j = j + 1
Next
For i = 0 To UBound(Conso$)
Phoenemae$(0, j) = Conso$(i)
Phoenemae$(1, j) = "C"
j = j + 1
Next
End Sub
' ***************************************
Public Function Vocalize$(St0$)
Dim i As Integer
Dim LenF%, LenSt%
Dim St$, strLex$
Dim IsFound As Boolean
St$ = St0$
strLex$ = ""
Do 'н.цикла проверки фонем
IsFound = False
For i = 0 To UBound(Phoenemae$, 2)
LenSt% = Len(St$): LenF% = Len(Phoenemae$(0, i))
If Not LenSt% < LenF% Then
If Left(St$, LenF%) = Phoenemae$(0, i) Then
St$ = Right(St$, LenSt% - LenF%)
strLex$ = strLex$ & Phoenemae$(1, i)
IsFound = True
Exit For
End If
End If
Next
If Not IsFound Then
strLex$ = "ERROR" ' проверка на предмет небурятских букв
End If
Loop Until St$ = "" Or Not IsFound 'конец цикла проверки фонем
Vocalize$ = strLex$
' Debug.Print strLex$
' strLex$ - выражение, поддающееся грамматической свертке
End Function
Function Deflate$(A$)
Dim cc$, cd$
Dim i As Integer
cc$ = A$
cc$ = Replace(A$, "C", "") ' убираем все согласные фонемы
For i = 0 To 2 ' для длинных чередований нейтр и выраженной гласных
' ужимаем повторяющиеся вхождения одного типа гласных до одного вхождения
While Not Len(cc$) = Len(Replace(cc$, "NN", "N"))
cc$ = Replace(cc$, "NN", "N")
Wend
While Not Len(cc$) = Len(Replace(cc$, "MM", "M"))
cc$ = Replace(cc$, "MM", "M")
Wend
While Not Len(cc$) = Len(Replace(cc$, "LL", "L"))
cc$ = Replace(cc$, "LL", "L")
Wend
While Not Len(cc$) = Len(Replace(cc$, "FF", "F"))
cc$ = Replace(cc$, "FF", "F")
Wend
While Not Len(cc$) = Len(Replace(cc$, "NM", "M"))
cc$ = Replace(cc$, "NM", "M")
Wend
While Not Len(cc$) = Len(Replace(cc$, "MN", "M"))
cc$ = Replace(cc$, "MN", "M")
Wend
While Not Len(cc$) = Len(Replace(cc$, "NF", "F"))
cc$ = Replace(cc$, "NF", "F")
Wend
While Not Len(cc$) = Len(Replace(cc$, "FN", "F"))
cc$ = Replace(cc$, "FN", "F")
Wend
While Not Len(cc$) = Len(Replace(cc$, "NL", "L"))
cc$ = Replace(cc$, "NL", "L")
Wend
While Not Len(cc$) = Len(Replace(cc$, "LN", "M"))
cc$ = Replace(cc$, "LN", "M")
Wend
While Not Len(cc$) = Len(Replace(cc$, "LM", "M"))
cc$ = Replace(cc$, "LM", "M")
Wend
While Not Len(cc$) = Len(Replace(cc$, "ML", "M"))
cc$ = Replace(cc$, "ML", "M")
Wend
' что то громоздко и неэкономно получилось, нужно делать конечный автомат
Next
If Left(cc$, 1) = "Y" Then ' проверка только по первой гласной фонеме на "ї", никаких сверток
cc$ = "Y"
End If
If cc$ = "N" Then
cc$ = "F" ' правило CNCNC=F
End If
cc$ = Right(cc$, 1) ' Если остается сочетание типа MFM или LF считаем,
' что это составное слово, определяемое по последнему корню
Select Case cc$
Case "M": Deflate$ = "а"
Case "F": Deflate$ = "э"
Case "L": Deflate$ = "о"
Case "Y": Deflate$ = "є"
End Select
End Function
' гейм, как говорится овер. єїћ
| |
|
Вернуться к началу |
|
Tsebeen Мудур кэку
Зарегистрирован: Dec 9, 2003 Сообщения: 3030 Откуда: Yдэ голой урда бэе |
Добавлено: 30.09.07, 07:51 +0000 |
|
|
Доржын + Dat дает Доржында вм. Доржындо.
в остальном кажется ОК.
У меня предложение писать сразу на php. Сделаю страничку для тестов на www.buryadxelen.org. _________________ Отшеньдобрый hидальго Дон Цэбээн Кижингинский и Доодо-Кодунский, Улаан-Yдэнский и Улаанбаатарский и прочая, прочая... едет к сеньоре Наталее Добоской и Машзаводской |
|
Вернуться к началу |
|
therion ахамад
Зарегистрирован: Dec 02, 2004 Сообщения: 817 Откуда: Ракедтэй Дээдэ Вольта |
Добавлено: 01.10.07, 03:01 +0000 |
|
|
Tsebeen писал(а): | Доржын + Dat дает Доржында вм. Доржындо. |
:) ну да, так ведь функция переделывает из именительного, -
со сложными падежами не работает пока.
тут она действует по правилу
"LN" -> "M" например "дорюун" -> "дорюунда" |
|
Вернуться к началу |
|
therion ахамад
Зарегистрирован: Dec 02, 2004 Сообщения: 817 Откуда: Ракедтэй Дээдэ Вольта |
Добавлено: 12.10.07, 06:08 +0000 |
|
|
Для обработки некоторых падежей пришлось добавить словарь. Чтобы упростить перенос на другие платформы, не стал делать доступ к БД, а ввел словари неустойчивых окончаний прямо в исходнике. около сотни на Г, около 1200 на Н
Исходник теперь на форуме будет смотреться несколько громоздко. _________________ проект "Lemmata Buriatis":
http://buryad.blogspot.com/ |
|
Вернуться к началу |
|
|
|