|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
05.12.2008, 20:32 | #1 |
Регистрация: 05.12.2008
Сообщений: 5
|
[Delphi] Выделение частей речи в тексте
Ребята! Помоги мне пож-ста с написанием проги. Мне нужно, чтобы прога выделяла части речи из текста, например, сущ-ые, глаголы, прилагательные. Как и каким образом это можно сделать?
|
05.12.2008, 20:35 | #2 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,544
|
Первое, что приходит в голову - по окончаниям. Но могут быть нестыковки.
Задача очень не простая. E-Mail: arigato.freelance@gmail.com
|
05.12.2008, 20:40 | #3 |
Регистрация: 05.12.2008
Сообщений: 5
|
|
05.12.2008, 20:44 | #4 |
Регистрация: 05.12.2008
Сообщений: 5
|
[I]procedure TForm1.BitBtn7Click(Sender: TObject);
var i,j:integer; b,bb,bbb,bb1,prist,prist3,prist2,pr ist4,syf3,syf7:string; begin for i:=0 to Memo1.Lines.Count-1 do begin b:=copy(Memo1.Lines[i],length(Memo1.Lines[i])-1,2); bb:=copy(Memo1.Lines[i],length(Memo1.Lines[i])-2,3); bb1:=copy(Memo1.Lines[i],length(Memo1.Lines[i])-3,4); bbb:=copy(Memo1.Lines[i],length(Memo1.Lines[i])-3,5); syf3:=copy(Memo1.Lines[i],length(Memo1.Lines[i])-3,2); //2 буквы перед окончанием из 2 букв syf7:=copy(Memo1.Lines[i],length(Memo1.Lines[i])-4,2); //2 буквы перед окончанием из 3 букв prist2:=copy(Memo1.Lines[i],1,1); {из 1 буквы} prist3:=copy(Memo1.Lines[i],1,2); {из 2 букв} prist:=copy(Memo1.Lines[i],1,3); {из 3 букв} prist4:=copy(Memo1.Lines[i],1,4); {из 4 букв} {проверяю глаголы} if ((bb='ать') and (bbb <> 'цать'))or (bb='еть') or (bb='ить') or(bb='оть') or (bb='уть') or (bb='ють') or(bb='ыть') or (bb='ять') or (bb='ете')or (bb='ите') or (bb='ает') or (bb='ишь')or(bb='ешь')or (bb='нул') or (bb='ули') or (bb='ись') or (bb='йти') or (((bb='уть') or (bb='ать')or (bb='ить')or (b='ем') or(b='ал') or (b='ил')or (b='ел')) and ((prist2='с') or (prist2='в') or (prist3='от')or (prist3='об')or (prist3='со')or (prist3='за')or (prist3='по') or (prist3='до') or (prist='при') or(prist='пре') or (prist='под') or (prist='обо') or(prist4='пере') )) or (((bb='уть') or (bb='ать')or (bb='ить')or (b='ем') or(b='ал') or (b='ил')or (b='ел')) and ((prist2='С') or (prist2='В') or (prist3='От')or (prist3='Об')or (prist3='Со')or (prist3='За')or (prist3='По') or (prist3='До') or (prist='При') or(prist='Пре') or (prist='Под') or (prist='Обо') or(prist4='Пере') )) or ((b='ть') and (((syf3='ив') or (syf3='ыв')) and ((prist='под') or(prist='при') or (prist='Под') or(prist='При') ))) or ((bb='ать') and (((syf7='ив') or (syf7='ыв')) and ((prist3='По')or (prist3='по') ))) or ((bb='ать') and ((syf7='ов') or (syf7='ев') or (syf7='ич'))) or ((b='ся') and ((prist4='пере') or (prist4='Пере')) ) or ((b='ть') and (syf3='ну')) or ((b='ал') and ((syf3='ыв') or (syf3='ив'))) or (bb1='ться') or (bb='тся') and (Memo1.Lines[i] <> Memo4.Lines[j]) then Memo8.Lines.add(Memo1.Lines); |
05.12.2008, 20:45 | #5 |
Регистрация: 05.12.2008
Сообщений: 5
|
Вот, что только приходит в голову насчет глаголов...
Может кто то может подсказать, что дальше нада сделать |
05.12.2008, 21:50 | #6 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,544
|
Всегда будут исключения.
Может это решается полной базой слов? E-Mail: arigato.freelance@gmail.com
|
05.12.2008, 21:58 | #7 |
Регистрация: 05.12.2008
Сообщений: 5
|
|
06.12.2008, 11:11 | #8 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,544
|
У меня есть база русских слов на, примерно, 200000 слов, но там в перемешку, глаголы, прилагательные и существительные.
В инете поискать можно. Хотя, опять же, в такой базе могут быть далеко не все слова. E-Mail: arigato.freelance@gmail.com
|
07.12.2008, 23:37 | #9 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Ребята, да расслабьтесь. Подобные задачи решают целые институты, да и то не очень успешно.
Тут же без ИИ качественно не сделаешь - нужно разбирать предложение по смыслу написанного. одним словарём задачу не решишь (да и со словарём будут проблемы - там же морфология, словообразование :-( ) Пример: У меня разбилось стекло. Молоко стекло на пол. Сыпь была по всему телу. Сыпь крупу в карман. и т.д. и т.п. p.s. поищите на форуме. Точно помню, подобная тема поднималась... |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Программа распознавания русской речи - Комбат | denis47 | Помощь студентам | 10 | 25.06.2016 22:39 |
Синтез речи. Создание голосового движка (не русского). | Gauss | Общие вопросы Delphi | 2 | 21.01.2014 10:12 |
сортировка частей массива(паскаль) | Useless | Помощь студентам | 1 | 18.11.2008 09:19 |
Программа для разпознавания речи | Иллидан | Софт | 3 | 25.03.2008 20:37 |
Определить сколько раз встречается в тексте самое короткое слово - Delphi 7 | Леди Уинтер | Помощь студентам | 3 | 08.01.2008 17:56 |