Как сделать распознавание строки?

  • Автор темы Dimo444ka
  • Дата начала
D

Dimo444ka

Пишу большую прогу, вот кое что в ней не получаеться:
Пользователь вводит предложение и нужно:
Разделить это предложение по словам и перевести их в именительный падеж и отобрать нужные по образцу слова.
Как это сделать???
 
E

European

Для: Dimo444ka
Есть вот такая библиотека:
[snapback]96285" rel="nofollow" target="_blank[/snapback]</div>[/quote]
Решаемо! Надо вооружится только правилами русского языка и вперед. Но задача точно не для начинающих
 
E

European

<!--QuoteBegin-sax_ol+2:02:2008, 13:37 -->
<span class="vbquote">(sax_ol @ 2:02:2008, 13:37 )</span><!--QuoteEBegin-->Да и при чем тут имена, фамилии, отчества?
[snapback]96337" rel="nofollow" target="_blank[/snapback]​
[/quote]
Во-первых, если посмотреть описание библиотеки там есть еще и изменение должности и подразделения.
Во-вторых, изменения по падежам в русском выражается изменением окончания, а указанная библиотека как раз это и анализирует.
В-третьих, лучше что-то, чем ничего. Да и условие задачи оставляет широкое поле для размышлений
 
E

European

<!--QuoteBegin-sax_ol+2:02:2008, 14:15 -->
<span class="vbquote">(sax_ol @ 2:02:2008, 14:15 )</span><!--QuoteEBegin-->Это все понятно, но дело не в этом.
[snapback]96343" rel="nofollow" target="_blank[/snapback]​
[/quote]
Ждем топикстартера
 
D

Dimo444ka

Кароч нужно просто: пользователь к примеру вводит такое предложение:
'Сколько человек в группе №26' и из этого нужно по эталону выделить слова - 'сколько' 'человек' 'группа' '26'. Помоему это нужно просто каждое слово без окончания сравнить с эталоном, но как это написать? (я новичок)
 
V

Vadik(R)

Муторное конечно это занятие. Вообще, если при вводе предложения пользователь ограничивается небольшим количеством слов(там, меньше 20, например), то можно и самому составить. Например, если пользователь может использовать в своих предложениях только слова "сколько, человек, группа", то для твоей проги подойдёт, что-то типа такого решения:
Код:
Const
slovar = Array [1..3,1..6] of String=
(('сколько', '', '', '', '', ''),
('человек', 'человека', 'человеку', 'человека', 'человеком', 'человеке'),
('группа', 'группы', 'группе', 'группу', 'группой', 'группе'));
Var
sl : array [1..10] of string;
st : string;
i,n : integer;
Function Func(x : string) : string;
var
i,j : integer;
begin
func:='';
for i:=1 to 3 do
for j:=1 to 6 do
if x=slovar[i,j] then
begin
func:=slovar[i,1];
Exit
end
end;
begin
readln(st);
while pos(' ',st)>0 Do
Begin
Inc(n);
Sl[n]:=Copy(st,1,Pos(' ',st)-1);
Delete(st,1,Pos(' ',st));
End;
Inc(n);
Sl[n]:=st;
For i:=1 To n Do
If Func(sl[i])<>'' Then WriteLn(Func(st[i]));
ReadKey
end.
Конечно, этот код я сейчас от руки набросал, но идеядумаю понятна. Однако, это только в том случае, если пользователь может использовать только какой определённый набор слов в своих предложениях.
Потому что, массив на 1000 слов ты печатать замучаешься.
Тебе будет проще придумать устройство, которое поключается к голове училки по русскому языку и использует ресурсы её мозга :lol: Заодно и нобелевскую получишь :)
 
Z

zubr

Загнать словарь русского языка в БД. Дальше алгоритм простой - нашел нужное слово в словаре, нашел его именительный падеж.
 
G

Guest

Хы, самое верное и простое решение... И не надо мучать себя, "изобретением велосипеда"...
 
Z

zubr

Для: sax_ol
Вполне реально найти готовую БД-словарь и перегнать его в свою программно.
 
Z

zubr

Для: sax_ol
Не могу точно утверждать (под рукой нет словаря), но насколько я помню, в русском словаре представлены слова во всех падежах. К примеру, в поиске ввели слово "человеком", БД выдает результат: человек, человека, человеком и т. д., причем именительный падеж будет первым. Имея файл (файлы) БД и зная структуры таблиц вполне можно использовать готовое решение, имхо.
 
E

European

<!--QuoteBegin-Dimo444ka+1:02:2008, 19:49 -->
<span class="vbquote">(Dimo444ka @ 1:02:2008, 19:49 )</span><!--QuoteEBegin-->отобрать нужные по образцу слова
[snapback]96284" rel="nofollow" target="_blank[/snapback]​
[/quote]
Можешь рассказать про это подробнее?
 
D

Dimo444ka

нуДля: European
найти из набора данных слов нужное
 
E

European

<!--QuoteBegin-Dimo444ka+4:02:2008, 21:38 -->
<span class="vbquote">(Dimo444ka @ 4:02:2008, 21:38 )</span><!--QuoteEBegin-->найти из набора данных слов нужное
[snapback]96626" rel="nofollow" target="_blank[/snapback]​
[/quote]
Ты хочешь конкретной помощи, пытаясь описать проблему общими словами?
Какой размер набора, какие части речи в наборе? Лично я думаю, что решить проблему можно анализом окончаний слов, "близких" к набору
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!