Текущее время: Пт, май 16 2025, 11:10

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: склонение фамилии
СообщениеДобавлено: Чт, ноя 24 2005, 10:31 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, сен 28 2005, 06:24
Сообщения: 74
Возникла такая тема.
Еслть ли возможность просклонять фамилию имя отчество?
может кто то сталкивался с такой задачей и нашел на нее оптимальное решение?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 24 2005, 10:45 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, июн 22 2005, 09:51
Сообщения: 208
Пол: Мужской
Традиционные способы:
1.При вводе ФИО - дополнительно указывать склонения, вводимого ФИО.
2. ФИО вводится в И.п. и все документы пишутся таким образом, чтобы оное не склонялось.

_________________
С уважением, В.Ш.
4.6C


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 24 2005, 11:15 
Гость
Есть определенный набор правил по которым склоняются фамилии,
я писал такую программу,
тестировалась на списке из 1000 человек, ошибок было 1-2.


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 24 2005, 11:28 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, июн 22 2005, 09:51
Сообщения: 208
Пол: Мужской
Таки да! Гугла рулит.
http://superjur.narod.ru/padeg.htm
Там, правда, не АБАП, но портировать программу, думаю, не составит труда. :D

_________________
С уважением, В.Ш.
4.6C


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 24 2005, 11:30 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, сен 28 2005, 06:24
Сообщения: 74
Если не затруднит поделитесь программкой или правилами склонения..
nng77@mail.ru


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 24 2005, 11:35 
Гость
Нашел свой старый пример - но только для родительного падежа.
В принципе - его не сложно переделать и в другие падежи
При желании можно добавить еще исключения
и оформить как ФМ :)


Code:

REPORT  ZZ                        .

DATA: FAM(30),     "Фамилия
      IM(30),      "Имя
      OTH(30),     "Отчество
      ENAME LIKE PA0001-ENAME, "Фамилия, имя, отчество
      GESCH LIKE PA0002-GESCH,  "Пол  (1-мужской, 2-женский)
      R TYPE I,
      KN(2).

PARAMETERS: PERNR LIKE PA0001-PERNR.  "Табельный номер

START-OF-SELECTION.

  CLEAR: FAM, IM, OTH, ENAME, GESCH.

  SELECT SINGLE ENAME INTO ENAME
         FROM PA0001
         WHERE PERNR = PERNR. "Находим ФИО по табельному №

  SELECT SINGLE GESCH INTO GESCH
         FROM PA0002
         WHERE PERNR = PERNR. "Находит пол по табельному №

  SPLIT ENAME AT SPACE INTO FAM IM OTH.

  CONDENSE: FAM, IM, OTH.

  CASE GESCH.

    WHEN '1'. "Мужчины
      R = STRLEN( FAM ) - 1.
      KN = FAM+R(1).
      IF KN <> 'о'.
        R = STRLEN( FAM ) - 2.
        KN = FAM+R(2).
        CASE KN.
          WHEN 'ин' OR 'ов'.
            CONCATENATE FAM 'у' INTO FAM.
          WHEN 'ий'.
            CONCATENATE FAM(R) 'ому' INTO FAM.
          WHEN OTHERS.

            CONCATENATE FAM 'у' INTO FAM.
        ENDCASE.
      ENDIF.
      R = STRLEN( IM ) - 1.
      KN = IM+R(1).
      CASE KN.
        WHEN 'л' OR 'н' OR 'с' OR 'р' OR 'г'.
          CONCATENATE IM 'у' INTO IM.
        WHEN 'а'.
          CONCATENATE IM(R) 'е' INTO IM.
        WHEN 'й'.
          CONCATENATE IM(R) 'ю' INTO IM.
      ENDCASE.
      IF IM = 'Павелу'.
        IM = 'Павлу'.
      ENDIF.
      R = STRLEN( OTH ) - 1.
      KN = OTH+R(1).
      IF KN = 'ч'.  "Это условие проверяется только у мужчин!
        CONCATENATE OTH 'у' INTO OTH.
      ENDIF.


    WHEN '2'.  " Женщины
      R = STRLEN( FAM ) - 2.
      KN = FAM+R(2).
      CASE KN.
        WHEN 'на' OR 'ва'.
          R = R + 1.
          CONCATENATE FAM(R) 'ой' INTO FAM.
        WHEN 'ая'.
          CONCATENATE FAM(R) 'ой' INTO FAM.
      ENDCASE.
      R = STRLEN( IM ) - 1.
      KN = IM+R(1).
      CASE KN.
        WHEN 'а' OR 'я'.
          CONCATENATE IM(R) 'е' INTO IM.
      ENDCASE.
      R = STRLEN( OTH ) - 2.
      KN = OTH+R(2).
      IF KN = 'на'.
        R = R + 1.
        CONCATENATE OTH(R) 'е' INTO OTH.
      ENDIF.
  ENDCASE.

  CONDENSE: FAM, IM, OTH.

  CONCATENATE FAM IM OTH INTO ENAME SEPARATED BY SPACE.

  WRITE:/ ENAME.
 


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 24 2005, 14:22 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Чт, ноя 10 2005, 14:57
Сообщения: 59
код это хорошо. но как-то его мало.... Такие фамилии как Ким и Поченок не пройдут тест.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 24 2005, 15:08 
Гость
Mel написал(а):
код это хорошо. но как-то его мало.... Такие фамилии как Ким и Поченок не пройдут тест.



вот так и знал, что будут примеры непроходящих :) :oops:

все исключения - не обработаешь,
но для подавляющего большинства - код работает.

Кстатит "Ким и Поченок" - не пройдут только у мужчин,
а у женщин, по правилам русского языка, они не склоняются.

В принципе, с небольшой оговоркой, можно сказать:
довереность выдана кому? - Ким Ивану Ивановичу, так и отработает код

но в любом случае - это же не конечный продукт - добавляйте :) : :wink:


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 24 2005, 15:26 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Чт, ноя 10 2005, 14:57
Сообщения: 59
А еще есть двойные фамилии, которые могут писаться через "-", а могут через пробел, это тоже здорово. Например, Салтыков-Щедрин. Так же необходимо учитывать, что есть иностранцы и для них есть тоже правила склонения.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: re
СообщениеДобавлено: Сб, ноя 26 2005, 00:23 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
можно склонить контекст, чтобы не ломать голову


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, ноя 28 2005, 13:12 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Действительность ещё кошмарнее: одна и та же фамилия может склоняться по-разному, например, в зависимости от того, из какого языка (страны, народности) эта фамилия была заимствована.

Без словаря исключений обойтись нельзя. Причём словарь должен быть пополняемым.

Один из подходов к склонению слов вообще (не только фамилий) реализован в программе ispell. Все наиболее употребительные слова разбиты на группы изменяемости по числам, падежам, родам и т.д.

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 3 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB