Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi для начинающих

Войти
Регистрация
Восстановить пароль
 
ElenaTomsk
4 / 4 / 0
Регистрация: 11.10.2014
Сообщений: 99
#1

Как ввести слово и получить его формы во всех падежах? - Delphi

11.04.2016, 22:03. Просмотров 318. Ответов 13
Метки нет (Все метки)

Здравствуйте.

Стоит задача, ввести слово и получить его формы во всех падежах. Решение найти не получается абсолютно. Есть внешние dll, которые вроде бы должны это делать, но...
Что пробовала:
http://multitran.ru/DownLoad/lemm.zip здесь есть пример только на c, как его к дельфи прикрутить, совершенно непонятно. Автор не знает, спрашивала.
http://macrocosm.narod.ru/download/winmcr3.0.zip
здесь есть пример в том числе и для дельфи, но версии 5. Под XE6 совершенно не работает, автор, судя по всему, вообще пропал.
Может, кто-то знает еще какие-то рабочие варианты?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2016, 22:03
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как ввести слово и получить его формы во всех падежах? (Delphi):

Как из dll получить указатель формы приложения и развернуть его из панели задач? - Delphi
Доброго времени суток. Помогите, как из dll обратиться к приложению, из которого её запустили. А конкретно надо получить указатель на...

Как из dll получить указатель формы приложения и развернуть его из панели задач? - Delphi
Всем доброго времени суток. Как из dll получить указатель формы приложения и развернуть его из панели задач? Собственно всё ясно. Код...

Ввести три стороны треугольника а на выходе получить его площадь - Delphi
Вообщем надо срочно сдать программу на зачёт, а в дельфи я полный ноль. Суть программы: нужно ввести три стороны треугольника а на выходе...

Ввести слово и вывести элементы массивов, в которых слово встречается более одного раза - Delphi
Написать программу, в которой требуется создать два массива строк.Ввести слово и вывести элементы массивов,в которых это слово встречается...

Что такое указатель на фаил в делфи, как его получить и с чем его готовить - Delphi
У меня вопрос я получаю имя файла вот тут procedure TForm1.Button5Click(Sender: TObject); var f_name:string; begin ...

Напечатайте слово во всех падежах - Pascal ABC
Задано существительное первого склонения, оканчивающееся на букву «а». Напечатайте это слово во всех падежах.

13
Razdolbait
25 / 25 / 10
Регистрация: 18.09.2014
Сообщений: 212
11.04.2016, 22:31 #2
Если это какое-то конкретное слово (слова) то можно и самой написать. А вот если задача стоит просклонять ЛЮБОЕ слово - то только по словарю. Огромному словарю. По которому можно определить какому типу склонения это слово подчиняется. Много правил и много исключений в них. Писал библиотеку для преобразования числа в сумму прописью - знаю о чем говорю. Моя задача была ГОРАЗДО проще
0
ElenaTomsk
4 / 4 / 0
Регистрация: 11.10.2014
Сообщений: 99
12.04.2016, 06:35  [ТС] #3
По счастью, не совсем так. Есть урезанные версии коммерческих разработок, есть правила русского языка, мы их знаем. Есть исключения, они тоже формализуются.
Например, Сергей Слепов со своим "морфером" задачу склонения решил, в том числе и вашу, с суммой прописью, но у него все платно.

Мне бы хотелось научиться использовать то, что бесплатно. Т.е. удалось бы прикрутить что-то из того, на что ссылки давала, было бы замечательно, там главная проблема в том, как подключать эти библиотеки.
Может, тему надо было иначе назвать: "как подключить dll"?
0
Razdolbait
25 / 25 / 10
Регистрация: 18.09.2014
Сообщений: 212
12.04.2016, 09:38 #4
Особо не вникал, но рыть надо в
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// * * * Объявление функций mcr.dll
 
// Инициализировать словарь
   function InitMcr: Integer; stdcall; cdecl; external '..\MCR.DLL' name 'InitMcr';
 
// Загрузить словарь (path)
   function LoadMcr(const path:PChar): Integer; stdcall; cdecl; external '..\MCR.DLL' name 'LoadMcr';
 
// Сохранить словарь (path)
function SaveMcr(const path:PChar): Integer; stdcall; cdecl; external '..\MCR.DLL' name 'SaveMcr';
 
// Найти идентификаторы слова s и занести их в структуру Tids
function FindWID(const s:PChar; p:pTids): Integer; stdcall; cdecl; external '..\MCR.DLL' name 'FindWID';
 
// Возвращение в структуру TWs словоформы и его грамматических характеристик через идентификатор
        // all=true - вернуть всю парадигму (только для не ReadOnly словарей)
        // gh_only=true - вернуть только граматические характеристики
function GetBId(const lnk:integer; en:byte;gh_only,all:boolean;p:pTWs): Integer; stdcall; cdecl; external '..\MCR.DLL' name 'GetBid';
 
//Нахождение словоформ по заданной грамматической характеристике (только для не ReadOnly словарей)
        //lnk - номер парадигмы
        //const_gh - код постоянной грамматическрй характеристики (const_gh=0 - любая)
        //var_gh - переменная гр. характеристика
        //all=false - вернуть только первую найденную словоформу
function GetBgh(const lnk:integer; const_gh:byte; var_gh:byte; all:boolean; p:pTWs): Integer; stdcall; cdecl; external '..\MCR.DLL' name 'GetBGH';
 
 
//просмотр оставшегося места памяти. a1,a2,a3 если любое из этих значений близко к 100%, то словарь скоро переполнится
function FreeSpace(a1,a2,a3:pInt): Integer; stdcall; cdecl; external '..\MCR.DLL' name 'FreeSpace';
 
//Проверка является ли словарь доступным для чтения, для ReadOnly словарей нельзя считывать парадигму всего слова, доступны только грам.хар-ки и лемма
function RODict: boolean; stdcall; cdecl; external '..\MCR.DLL' name 'ReadOnlyDict';
 
//Версия подгруженного словаря
function GetVer: PChar; stdcall; cdecl; external '..\MCR.DLL' name 'Ver';
 
//Добавить парадигму
function AddPara(outdata: pTWs): integer; stdcall; cdecl; external '..\MCR.DLL' name 'AddParadigma';
 
 
//Грамматические характеристики хранятся как числа (byte)  см. TWstr
//Эти функции позволяют перевести эти числа в строки для наглядности
function CTS(const constid:byte):PChar; stdcall; cdecl; external '..\MCR.DLL' name 'ConstIdToStr';
function VTS(const constid,varid:byte):PChar; stdcall; cdecl; external '..\MCR.DLL' name 'VarIdToStr';
это из второго архива. Разобраться что за функции и для чего предназначены.
Но если библиотека может понадобиться в будущем (а не только сдать и забыть) то лучше переписать.

Цитата Сообщение от ElenaTomsk Посмотреть сообщение
Сергей Слепов со своим "морфером" задачу склонения решил, в том числе и вашу, с суммой прописью, но у него все платно
Вот поэтому и писал сам) Бесплатно. Знаю как работает. И разрабатывал именно под свой регион и валюту
0
ElenaTomsk
4 / 4 / 0
Регистрация: 11.10.2014
Сообщений: 99
12.04.2016, 11:41  [ТС] #5
Там и рыла. Даже нарыла, что если в InitMcr прописать вместо Integer - INT64, то библиотека начинает грузиться. Беда только в том, что кроме загрузки ничего не работает, не возвращает она значения.
Но точно знаю, что эта библиотека рабочая, был код на c#, который ее использовал. Увы, он погиб безвозвратно.
0
mss
12.04.2016, 12:38
  #6

Не по теме:

Цитата Сообщение от ElenaTomsk Посмотреть сообщение
ввести слово и получить его формы во всех падежах..точно знаю, что эта библиотека рабочая
Прелюбопытно, и как эта чудо-библиотека просклоняет, скажем, фамилию "Дрищенко" ?)

0
Razdolbait
25 / 25 / 10
Регистрация: 18.09.2014
Сообщений: 212
12.04.2016, 13:45 #7
Цитата Сообщение от mss Посмотреть сообщение
Прелюбопытно, и как эта чудо-библиотека просклоняет, скажем, фамилию "Дрищенко" ?)
Так и я о том же) Только тактичнее))
0
ElenaTomsk
4 / 4 / 0
Регистрация: 11.10.2014
Сообщений: 99
12.04.2016, 13:53  [ТС] #8
Там используется словарь Зализняка. Сомневаюсь, что в нем есть эта фамилия.
0
mss
2599 / 2255 / 250
Регистрация: 24.12.2010
Сообщений: 13,726
12.04.2016, 14:01 #9

Не по теме:

Цитата Сообщение от ElenaTomsk Посмотреть сообщение
Сомневаюсь, что в нем есть эта фамилия



Ну а какой смысл в такой программе, если она будет спотыкаться на таких простых, казалось бы, словах ?)

Добавлено через 1 минуту

Не по теме:

Цитата Сообщение от Razdolbait Посмотреть сообщение
Только тактичнее
Ой да я вас умоляю)

Два хохла, один, читая газету, говорит другому:
- Дивись, Голожопенко, яка смешна фамилия - "Зайцiв"

Вот это нетактично)
А шо в дрищенке нетактичного ?)

0
Razdolbait
25 / 25 / 10
Регистрация: 18.09.2014
Сообщений: 212
12.04.2016, 14:31 #10
Цитата Сообщение от mss Посмотреть сообщение
А шо в дрищенке нетактичного ?)
Дрищенко совершенно не при чем)
Просто я не спеша подводил автора темы к мысли что данная задумка не имеет смысла. Либо надо убить кучу СВОЕГО времени и нервов, а не искать готовое.
А ты прямо в лоб и с размаха)
0
mss
2599 / 2255 / 250
Регистрация: 24.12.2010
Сообщений: 13,726
12.04.2016, 14:39 #11

Не по теме:

Цитата Сообщение от Razdolbait Посмотреть сообщение
прямо в лоб и с размаха
Зато какое удовольствие !)



Добавлено через 2 минуты

Не по теме:

Razdolbait, подтянуть бы тебе скилл на тему правописания частиц "не" и "ни", а то не возьмут в космонавты)



Добавлено через 15 секунд

Не по теме:

Razdolbait, подтянуть бы тебе скилл на тему правописания частиц "не" и "ни", а то не возьмут в космонавты)

0
ElenaTomsk
4 / 4 / 0
Регистрация: 11.10.2014
Сообщений: 99
12.04.2016, 14:59  [ТС] #12
А вот по теме есть что сказать? Как сделать, чтобы эти dll заработали, а попытаться показать себя новым Петросяном?
0
NIKOLAYY
817 / 715 / 161
Регистрация: 22.09.2012
Сообщений: 4,994
12.04.2016, 23:16 #13
По идее нужен словарь, который гдето что то вычерпывает по своим критериям.
1
ElenaTomsk
4 / 4 / 0
Регистрация: 11.10.2014
Сообщений: 99
13.04.2016, 09:36  [ТС] #14
Я неправильно ситуацию описала. Уже есть несколько готовых dll, в частности, вот тут: Как подключить к Дельфи и добиться работы от данных dll? довольно сильно продвинулись, но не до конца. AOT еще хорошо работают вроде бы, но сама я не могу, мало знаний.

Хочется вот чего: подключить какую-то из уже известных dll. По нажатию кнопки при введенном слове пытаться определить его
падежи с использованием этих dll. Получилось если, то замечательно, а если нет, то и руками человек введет. В общем, смысл: как подключить и вызывать dll? Как заинтересованное лицо дам и ссылки, и файлы и все на свете, и я не хочу, чтобы все сделали за меня, только показали правильные пути, это видно по той теме, на которую я ссылку дала. Спасибо всем, кто поможет.
0
13.04.2016, 09:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.04.2016, 09:36
Привет! Вот еще темы с ответами:

Напечатайте слово во всех падежах - Turbo Pascal
Задано существительное первого склонения, оканчивающееся на «а». Напечатайте это слово во всех падежах.

Напечатайте это слово во всех падежах - Turbo Pascal
2) Задано существительное первого склонения, оканчивающееся на букву «а». Напечатайте это слово во всех падежах.

Ввести в форму слово и получить его md5 и sha1 хэш. - PHP
Подскажите пожалуйста как ее использовать? <?php $str = 'слово'; if (sha1($str) ===...

Задано существительное первого склонения, оканчивающее на "а".Напечатайте это слово во всех падежах - Pascal ABC
Задано существительное первого склонения, оканчивающее на "а".Напечатайте это слово во всех падежах.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru