Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/34: Рейтинг темы: голосов - 34, средняя оценка - 4.76
Akiko

Поиск форм глаголов в тексте

12.06.2007, 18:05. Показов 6808. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, пожалуйста, написать программу следующего содержания. Моя проблема в том, что учусь на прикладной лингвистике, но программировать не умею клинически... Вот и выходит, что для работ могу с теоретической базой разобраться, какой-то алгоритм написать (хотя скорее пошаговое описание работы проги), а сам код - никак
Программа должна искать в тексте определенные формы глагола и анализировать их.

1) В Texbox водится текст;
2) Текст проверяется посимвольно, если символы - , . ? ! « “ : ; ... % - они удаляются;
(в принципе могут встретиться и другие символы какие-то, но в художественном тексте это маловероятно)
3) Снова с начала текста программа идет до первого пробела, затем вырезает часть текста до пробела и делает эту часть отдельной строкой.
4) Таким образом, весь текст разделяется на массив строк.
Вот тут возник вопрос. Возможно, стоит сразу делать базу данных, в которой каждое слово будет в отдельной строке и иметь свой номер?
Мы в университете похожее делали таким образом:

C#
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
string txt; 
            txt=TextBox1.Text+" ";
            int i=0,wstr=0, l=0;
            for(i=0;i<txt.Length;i=i+1)
            {
                if (txt[i] =='.' || txt[i] == ',' || txt[i] == '!' || 
                    txt[i] == '?' || txt[i] == ':' || txt[i] == ';' || 
                    txt[i] == '"' || txt[i] == '(' || 
                    txt[i] ==')' || txt[i] == '/' || txt[i] ==' ') 
                    
                {
                    if (i!=wstr)
                    {
                    
                        string tmpwrd = txt.Substring(wstr, i-wstr);
                        OleDbConnection connect = new OleDbConnection(ConfigurationSettings.AppSettings["MyDB"]);
                        OleDbCommand comm = new OleDbCommand ("insert into Slovopokazhchyk (Slovo,Num_rech) select '"+ tmpwrd.Replace("'","''") +"', "+l.ToString(), connect);
                        connect.Open();
                        comm.ExecuteNonQuery();
                        
 
                            connect.Close();
                        
                        
                        }
                         if (txt[i]!=' ')
                        {
                            string tmpwrd = txt.Substring(wstr, i-wstr);
                            OleDbConnection connect = new OleDbConnection(ConfigurationSettings.AppSettings["MyDB"]);
                            OleDbCommand comm = new OleDbCommand ("insert into Slovopokazhchyk (Slovo,Num_rech) select '"+ txt[i].ToString() +"',"+l.ToString(),connect);
                            connect.Open();
                            comm.ExecuteNonQuery();
                            connect.Close();
                        }
Не уверена только, что в данном случае оно подойдет.
5) Берем строку из массива и сравниваем с записями базы данных 1;
(как в данном случае должно иди сравнение, я, к своему стыду, даже не представляю)
6) Проверяем, совпадает ли слово (строка) с каким-то из базы;
7) Если да, переходим к шагу 8, если нет – 18;
8) Берем следующий после выделенного элемент в массиве (скажем, выделенный элемент – k, берем k+1);
Может быть, тут и будет удобнее, если массив слов будет в базе данных с пронумерованными пунктами.
9) Проверяем, есть ли этот элемент в базе данных 2;
10) Если есть, выделяем слово k, если нет, переходим к шагу 11;
11) Берем элемент, предшествующий выделенному слову (k-1);
12) Проверяем, есть ли это элемент в базе данных 3;
(Идет проверка по разным бд, потому что выделенное слово – это глагол в определенной форме, в данном случае – в форме Past Participle. Список глаголов в этой форме в первой базе данных, таким образом идет их поиск в тексте. Но глаголы в такой же форме функционируют и как, скажем, Past Indefinite, когда это регулярные глаголы. Поэтому дальше проверяем их окружение. По окружению можно определить, функционирует ли в данном контексту глагол как Past Participle или нет)
13) Если нет, пропускаем это слово и переходим к шагу 18;
14) Если есть, то выделяем 5 элементов перед выделенным словом (с k-6 до k-1);
15) Проверяем, совпадает ли какой-то из выделенных элементов со словом has/have/had;
(Тут я не знаю, можно ли вообще так делать – сравнивать с конкретным словом. И можно ли сравнивать в одном шаге со всеми тремя? Или лучше сделать для этого отдельные шаги? Или просто сделать маленькую базу данных, и сравнивать с ней поочередно k-2, k-3 и т. д.);
16) Если совпадает, то пропускаем слово и переходим к шагу 18;
17) Если нет, то выделяем слово, и переходим к шагу 18;
18) Проверяем, не последняя ли строка (фактически, есть ли что еще проверять);
19) Если нет, переходим к шагу 5 (сравниваем следующую строку);
20) Если да, выводим результат (Можно, чтобы просто в Textbox появлялось выделение слов?)

Буду очень благдарна, если мне кто-то поможет.
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.06.2007, 18:05
Ответы с готовыми решениями:

Количество существительных, прилагательных, глаголов в тексте
Написать процедуру, которая считает количество существительных, прилагательных, глаголов в тексте. Хоть чем нибудь помогите(

Нужна проверка времен глаголов в тексте
Я готовлюсь к экзамену в школе. Тренирую времена глаголов на разных статьях и отрывках. Вот нашла отрывок из книги. Помогите исправить...

Поиск в тексте DOC-файлов последовательностей символов по шаблону и поиск найденных в TXT-файле (с логом)
Уважаемые программисты! Очень нужен bat-файл или скрипт, который решает такую задачу: 1. Осуществляет поиск в тексте массива...

1
Администратор
 Аватар для mik-a-el
87795 / 53116 / 249
Регистрация: 10.04.2006
Сообщений: 13,758
13.06.2007, 12:00
Цитата Сообщение от Akiko
3) Снова с начала текста программа идет до первого пробела, затем вырезает часть текста до пробела и делает эту часть отдельной строкой.
4) Таким образом, весь текст разделяется на массив строк.
Вот тут возник вопрос. Возможно, стоит сразу делать базу данных, в которой каждое слово будет в отдельной строке и иметь свой номер?
Code
1
2
string ss; 
string[] strings = ss.Split(' ');
По коду: не создавайте коннект и комманд каждый раз. Их нужно создать один раз в начале. После цикла закрыть в финалли.

Опиши конкретно, что нужно сделать. По алгоритму ничего не понятно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.06.2007, 12:00
Помогаю со студенческими работами здесь

Как привести слова разных форм и спряжений к одной форме и провести анализ их встречаемости в тексте?
собственно сабж) сложность заключается в том что это русские тексты... есть мысль перед анализом удалить из текста все известные...

Поиск форм по названию
здравствуйте, мне очень в программе нужен поиск по названию форм через mainmenu есть у кого нибудь есть пример кода, буду очень благодарна

Поиск форм в проэкте
Здравствуйте программеры. Есть задачка: Надо програмно найти все формы проекта, в том числе и созданые диннамически. У кого...

Таблица неправильных глаголов
Доброго времени суток. Нужно написать программу для изучения Таблицы неправильных глаголов. Хотел сделать саму таблицу в отдельном...

Поиск, скрытие служебных форм
Вообщем проблема, встроенный в расширенный поиск позволяет искать по форме, но в список вытягиваются все формы и даже служебные , как их...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru