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

Тема в разделе "Delphi - FAQ", создана пользователем Dimo444ka, 1 фев 2008.

  1. Dimo444ka

    Dimo444ka Гость

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

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

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    <!--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]
    Во-первых, если посмотреть описание библиотеки там есть еще и изменение должности и подразделения.
    Во-вторых, изменения по падежам в русском выражается изменением окончания, а указанная библиотека как раз это и анализирует.
    В-третьих, лучше что-то, чем ничего. Да и условие задачи оставляет широкое поле для размышлений
     
  4. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    <!--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]
    Ждем топикстартера
     
  5. Dimo444ka

    Dimo444ka Гость

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

    Vadik(R) Well-Known Member

    Регистрация:
    12 дек 2007
    Сообщения:
    483
    Симпатии:
    0
    Муторное конечно это занятие. Вообще, если при вводе предложения пользователь ограничивается небольшим количеством слов(там, меньше 20, например), то можно и самому составить. Например, если пользователь может использовать в своих предложениях только слова "сколько, человек, группа", то для твоей проги подойдёт, что-то типа такого решения:
    Код (Text):
    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: Заодно и нобелевскую получишь :)
     
  7. zubr

    zubr Гость

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

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

    zubr Гость

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

    zubr Гость

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

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    <!--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]
    Можешь рассказать про это подробнее?
     
  12. Dimo444ka

    Dimo444ka Гость

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

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    <!--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]
    Ты хочешь конкретной помощи, пытаясь описать проблему общими словами?
    Какой размер набора, какие части речи в наборе? Лично я думаю, что решить проблему можно анализом окончаний слов, "близких" к набору
     
Загрузка...

Поделиться этой страницей