| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [Delphi] Выделение частей речи из текста ;) |
| Автор: vince 1.12.2008, 21:17 |
| Ребята! Помогите пож-ста сделать прогу, которая выделяла бы существительные, глаголы и всякую такую хренотень! Зачет никак получить не могу :( |
| Автор: mr.Anderson 1.12.2008, 22:03 |
| А поточнее нельзя? Полноценный лексический анализатор - штука сложная. |
| Автор: vince 1.12.2008, 22:10 |
| Поточнее : Дан текст. При нажатии кнопки чтобы выдавало, что из текста является существительным. Я пытаюсь с делать со словарем, но это ###. Там все существительные в именительном падеже и единст. числа. А препод желает увидеть алгоритм, определяющий части речи.... Кароче я в замешательстве... Помогите чем можете Добавлено через 1 минуту и 2 секунды И есче, кто нить встречал словарик глаголов?! Если встречал, то киньте ссылочку плиз ;) |
| Автор: mr.Anderson 1.12.2008, 22:19 |
| Словарь Даля глянь. Там чего только нет... По алгоритму - сложно сказать, теряюсь в догадках... Словарь явно не катит, слишком большой расход памяти, но как еще, с другой стороны... на признаках особо базироваться не получится, ибо ни вопрос не задашь, ничего... |
| Автор: Данкинг 1.12.2008, 22:28 |
Препод вообще сам способен придумать подобный алгоритм? Мне кажется, что нет, тем более в русском языке. Словарь вот такой могу дать, только вот части речи там не обозначены, но вдруг ты что-нибудь придумаешь... http://openfile.ru/139317/ |
| Автор: vince 1.12.2008, 22:48 |
| Есче вопросик, вот пишу такую штуку,чтоб сравнить строки из Мемо1 и Мемо2, причем строку из Мемо2 Хочу сравнить без последнего символа, и Делфи выдает ошибку.... Что тут не так?! (Memo1.Lines[i] = delete(Memo2.Lines[j],length(Memo2.Lines[j])-1,1)) |
| Автор: vince 1.12.2008, 23:01 |
| procedure TForm1.BitBtn1Click(Sender: TObject); var buf:string[80]; j:integer; begin assignfile(f,'g0.txt'); reset(f); while not EOF(f) do begin readln(f,buf); Memo1.Lines.add(buf); end; assignfile(g,'ru.txt'); reset(g); while not EOF(g) do begin readln(g,buf); Memo2.Lines.add(buf); end; for i:=0 to Memo1.Lines.Count do for j:=0 to Memo2.Lines.Count do if (Memo1.Lines[i] = Memo2.Lines[j]) or (Memo1.Lines[i] = delete(Memo2.Lines[j],length(Memo2.Lines[j])-1,1)) //Error: Constant object cannot be passed as var parameter then Memo3.Lines.add(Memo1.Lines[i]); closefile(f); closefile(g); end; |
| Автор: dsx 1.12.2008, 23:02 |
| Нужно каждое слово "разобрать по составу", а потом, на основе полученного набора, в общем случае состоящего из приставки, суффикса и окончания(корень нас не интересует), анализировать, к какой частью речи это слово может быть. Набор возможных приставок, суффиксов, окончаний нужно задать изначально, их не так уж много. |
| Автор: Данкинг 1.12.2008, 23:04 | ||
|
| Автор: vince 1.12.2008, 23:15 | ||||||
У тебя есть такой разбор написанный на Delphi?! o_0 Добавлено через 2 минуты и 10 секунд
Не в том загвоздка... Вот это он не хочет принимать: delete(Memo2.Lines[j],length(Memo2.Lines[j])-1,1) Здесь хочу взять слово без последней буквы..вот.... |
| Автор: Данкинг 1.12.2008, 23:21 |
Т.е. саму ошибку ты принципиально написать не хочешь? |
| Автор: vince 1.12.2008, 23:25 | ||
А вот и она: [Error] Unit1.pas(144): Constant object cannot be passed as var parameter {где delete выскакивает} [Error] Unit1.pas(145): Operator not applicable to this operand type {далее} |
| Автор: Данкинг 1.12.2008, 23:32 | ||
Да, у меня тоже такая же. Ну, попробуй так:
|
| Автор: vince 1.12.2008, 23:42 | ||||
Пасиба! Ща ошибка не выскочила ))) Буду продолжать;) |
| Автор: dsx 1.12.2008, 23:45 | ||||
Нет, это я просто идею предложил Кстати, http://forum.sources.ru/index.php?showtopic=213979 обсуждается эта тема. Предлагается анализировать слово в контексте предложения, но это еще сложнее, потому что порядок слов в русском языке не обределен. Поэтому лучше начать с разбора по составу. |
| Автор: vince 2.12.2008, 04:03 |
| Может все таки найдется тот, кто поможет? Люди ау! Дайте что нить ,что поможет....Плиииииз |
| Автор: kemiisto 2.12.2008, 12:50 | ||
Тебя - явно не реально. Кстати, такая прога называется не лексический, а морфологический анализатор. http://linguist.nm.ru/stemka/stemka.html тут есть немного информации и исходники на C++. |
| Автор: vince 2.12.2008, 19:24 | ||||
Кинь плиз еще раз ссылку |
| Автор: kemiisto 2.12.2008, 19:35 |
Странно, с утра сайт был. http://74.125.77.132/search?q=cache:UKic0nvA5NwJ:linguist.nm.ru/stemka/stemka.html+stemka&hl=en&ct=clnk&cd=1 кэш гугла. |