Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/35: Рейтинг темы: голосов - 35, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 27.12.2010
Сообщений: 5

Поиск имен собственных в тексте на русском языке

22.07.2011, 21:00. Показов 7425. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно найти в тексте на русском языке все имена собственные.
Есть ли у кого то код такой проги или алгоритм и идеи, как их найти?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.07.2011, 21:00
Ответы с готовыми решениями:

Определить, сколько в тексте на русском языке слов с неправильным употреблением частиц
Сколько в данном тексте на русском языке слов с неправильным употреблением частиц-то, -либо, -нибудь, -кое (без символа ' - ')?

Определите долю гласных букв в заданном тексте на русском (английском) языке
Здравствуйте.Помогите пожалуйста с заданием.Заранее спасибо.

Определить номера позиций гласных букв в данном тексте на русском языке
Помогите решить задачу в C++. Определить номера позиций гласных букв в данном тексте на русском языке.Никак не могу понять, как её сделать(

14
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
22.07.2011, 22:59
По идее имя собственное идёт в кавычках, вот и заделать поиск токенов в кавычках
0
0 / 0 / 0
Регистрация: 27.12.2010
Сообщений: 5
23.07.2011, 05:59  [ТС]
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
По идее имя собственное идёт в кавычках, вот и заделать поиск токенов в кавычках
Не все же имена собственные идут в кавычках, просто имя идет без кавычек.
С заглавной буквы конечно, но как их отличить от обычных слов, которые также с заглавной пишутся?))
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
23.07.2011, 16:52
Отличить имя от слова, написанного с большой буквы, можно только одним способом: созданием словаря имён.
Склонять можно программно или все варианты в словарь занести.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
25.07.2011, 10:38
Вот простенький код по их поиску, отталкиваюсь от того что в предложении имя собственное пишется с заглавной букву. Алгоритм прост - разбиваю текст на слова(токены) и если слово идёт с заглавной, при этом оно не идёт после '.' '!' '?' (т.е не 1-е слово в предложении, которое всегда пишется с заглавной) то считаем его именем собственным
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
#include <stdio.h>
#include <ctype.h>
#include <string.h>
 
char str[1024];
char sMass[32][32];
 
int main()
{
    char chr, delim[] = " ,";
    printf("\tEnter input text\r\n");
    scanf("%[^\n]s",str);
    char * pch = strtok (str,delim);
    printf ("\tSplitting text into tokens:\r\n");
    int i,nCount = 0;
    while (pch != NULL)
    {
        sprintf(sMass[nCount],"%s",pch);
        pch = strtok (NULL, delim);
        printf ("%s\n",sMass[nCount]);
        nCount++;
    }
    printf("\tProper names in string\r\n");
    for(i = 1; i < nCount; i++)
    {
        chr = sMass[i - 1][strlen(sMass[i - 1]) - 2];
        if(isupper(sMass[i][0]))
        if(chr != '.' || chr != '!' || chr != '?')
            printf("%s\r\n",sMass[i]);
    }
    return 0;
}
Миниатюры
Поиск имен собственных в тексте на русском языке  
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
25.07.2011, 11:16
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
По идее имя собственное идёт в кавычках, вот и заделать поиск токенов в кавычках
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Вот простенький код по их поиску...
Как бы ты сам себя проигнорировал...
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
25.07.2011, 11:28
Я не пригнорировал а модернизировал алгоритм поиска - имя собственное может идти как в кавычках так и без них, поэтому лучше искать слово с заглавной буквы...
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
25.07.2011, 11:34
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
поэтому лучше искать слово с заглавной буквы...
Имя собственное, написанное в кавычках, будет проигнорировано. Ведь кавычки это не заглавная буква. Я об этом говорю.
1
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
25.07.2011, 12:40
Ммм точно, я упустил
Условие в 28 строке нужно преобразовать к виду
C++
1
if(isupper(sMass[i][0]) || sMass[i][0] == '"' && isupper(sMass[i][1]))
0
0 / 0 / 0
Регистрация: 27.12.2010
Сообщений: 5
26.07.2011, 20:46  [ТС]
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
    printf ("\tSplitting text into tokens:\r\n");
    int i,nCount = 0;
    while (pch != NULL)
    {
        sprintf(sMass[nCount],"%s",pch);
        pch = strtok (NULL, delim);
        printf ("%s\n",sMass[nCount]);
        nCount++;
    }
Вот эта часть кода делит предложение на слова, отсекая запятые. А как сделать чтобы убирал не только запятые, но и точки?
Добавлял pch = strtok (NULL, ". "); но по ходу как то не так
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
26.07.2011, 21:27
C++
1
2
delim[] = " ,.";
pch = strtok (NULL, delim);
Но если ты будешь убирать точки и ! с ? ты не сможешь проверять идёт ли слово первым в предложении, а чем тебе предложенный мной код не подходит???
0
0 / 0 / 0
Регистрация: 27.12.2010
Сообщений: 5
26.07.2011, 22:38  [ТС]
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
C++
1
2
delim[] = " ,.";
pch = strtok (NULL, delim);
Но если ты будешь убирать точки и ! с ? ты не сможешь проверять идёт ли слово первым в предложении, а чем тебе предложенный мной код не подходит???
подходит, просто если имя собственное в предложении стоит последним, то при поиске оно выводится с точкой в конце
вот это и хотел убрать
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
26.07.2011, 22:52
Если ты уберёшь точки и ! с ? алгоритм потеряет логику, чтобы убирать эти символы при выводе слова вбей проверку
char ch_end;
C++
1
2
3
4
5
6
7
8
9
10
while (pch != NULL)
        {
                sprintf(sMass[nCount],"%s",pch);
                ch_end = sMass[nCount][strlen(sMass[nCount]) - 1];
                if(ch_end == '.' || ch_end == '!' || ch_end == '?')
                      sMass[nCount][strlen(sMass[nCount]) - 1]= '\0';
                pch = strtok (NULL, delim);
                printf ("%s\n",sMass[nCount]);
                nCount++;
         }
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
27.07.2011, 00:42
интересно как твой код отнесется к такому предложению.
ЮрА,ты не прав.
имя собственное стоит первым и по логике программы не может быть именем собственным.
только словарь (может с возможностью самообучения) как это делают программы распознавания, проверки орфографии
на основе твоей программы даем текст а потом оператор нажимая на выделенные слова командует запомнить.
Но это совсем другая история(с)
0
0 / 0 / 0
Регистрация: 27.12.2010
Сообщений: 5
27.07.2011, 05:49  [ТС]
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Если ты уберёшь точки и ! с ? алгоритм потеряет логику, чтобы убирать эти символы при выводе слова вбей проверку
char ch_end;
C++
1
2
3
4
5
6
7
8
9
10
while (pch != NULL)
        {
                sprintf(sMass[nCount],"%s",pch);
                ch_end = sMass[nCount][strlen(sMass[nCount]) - 1];
                if(ch_end == '.' || ch_end == '!' || ch_end == '?')
                      sMass[nCount][strlen(sMass[nCount]) - 1]= '\0';
                pch = strtok (NULL, delim);
                printf ("%s\n",sMass[nCount]);
                nCount++;
         }
ок. спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.07.2011, 05:49
Помогаю со студенческими работами здесь

Определите долю гласных букв в заданном тексте на русском (английском) языке.
тоже выдает ошибку((((((((((((( program glassny; const glas='a, e, i, o, u, y'; uses crt; var text:string; a, b, c, d :integer; ...

В тексте на русском языке определить сколько раз встречается самое короткое слово
Помогите решить задачу( тема:строки) Дан текст на русском языке. Определить сколько раз встречается в нем самое короткое слово. ...

Не работает поиск по сайту на русском языке
Сайт на русском языке, все документы на нем - тоже. Поиск переводит русские буквы в символы % и пишет, что ничего не найдено. При...

Поиск книги на русском языке OpenGL
Подскажите пожалуйста есть ли перевод этой книги ? http://www.ics.uci.edu/~gopi/CS211B/opengl_programming_guide_8th_edition.pdf

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru