-29 / 11 / 0
Регистрация: 29.12.2018
Сообщений: 214
1

Вывести через пробел десять существительных, которые встречаются в тексте чаще всего

14.04.2019, 14:13. Показов 13390. Ответов 5
Метки нет (Все метки)

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

Формат ввода
Текст, вводимый произвольным образом. Для его чтения необходимо воспользоваться sys.stdin. Слова могут быть разделены пробелами, символами табуляции и переводами строк.
Формат вывода
10 существительных в начальной форме через пробел.
Пример
Ввод
Я родился в 1632 году в городе Йорке в зажиточной семье иностранного
происхождения. Мой отец был родом из Бремена и основался сначала в Гулле.
Нажив торговлей хорошее состояние, он оставил дела и переселился в Йорк.
Здесь он женился на моей матери, родные которой назывались Робинзоны -
старинная фамилия в тех местах. По ним и меня назвали Робинзоном. Фамилия
отца была Крейцнер, но, по обычаю англичан коверкать иностранные слова, нас
стали называть Крузо. Теперь мы и сами так произносим и пишем нашу фамилию;
так же всегда звали меня и мои знакомые.
У меня было два старших брата. Один служил во Фландрии, в английском
пехотном полку, - том самом, которым когда то командовал знаменитый
полковник Локгарт; он дослужился до чина подполковника и был убит в сражении
с испанцами под Дюнкирхеном. Что сталось со вторым моим братом - не знаю,
как не знали мои отец и мать, что сталось со мной.
Вывод
фамилия отец брат торговля сражение состояние слово семья робинзон происхождение

вот мой код и он почему-то не все правильно выводит, помогите пожалуйста исправить
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import pymorphy2
import sys
 
morph = pymorphy2.MorphAnalyzer()
newdata = ' '
nouns_with_counts = {}
data = list(map(str.strip, sys.stdin))
for text in data:
    for i in text:
        if i.lower() not in ' абвгдеёжзийклмнопрстуфхцчшщъыьэюя' or i == '\n' or i == '\v' or i == '\t':
            text = text.replace(i, '').lower()
    newdata += text + ' '
newdata = newdata.split()
for word in newdata:
    p = morph.parse(word)[0]
    if p.tag.POS == 'NOUN' and p.score > 0.5:
        nouns_with_counts[p.normal_form] = nouns_with_counts.get(p.normal_form, 0) + 1
nouns_with_counts = [x[0] for x in sorted(nouns_with_counts.items(), key=lambda x: (x[1], x[0]), reverse=True)]
print(*nouns_with_counts[:10])
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.04.2019, 14:13
Ответы с готовыми решениями:

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

Выведите через пробел десять существительных, которые встречаются в данном тексте чаще всего
Дан отрывок из литературного произведения. Выведите через пробел десять существительных, которые...

Выведите десять существительных, которые встречаются в тексте чаще всего
Дан отрывок из литературного произведения. Выведите через пробел десять существительных, которые...

Посчитать количество символов в тексте и вывести только символы, которые чаще всего встречаются
Я нашел один из вариантов решения данного вопроса:...

5
3 / 2 / 1
Регистрация: 23.03.2019
Сообщений: 6
15.04.2019, 17:29 2
Могу дать код который проходи все проверки, но он не правильный и делать так не стоит!

Добавлено через 32 секунды
Python
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
import pymorphy2
import sys
 
morph = pymorphy2.MorphAnalyzer()
newdata = ' '
nouns_with_counts = {}
data = list(map(str.strip, sys.stdin))
for text in data:
    for i in text:
        if i.lower() not in ' -абвгдеёжзийклмнопрстуфхцчшщъыьэюя' or i == '\n' or i == '\v' or i == '\t':
            text = text.replace(i, '').lower()
    newdata += text + ' '
newdata = newdata.split()
for word in newdata:
    p = morph.parse(word)[0]
    if p.tag.POS == 'NOUN' and p.score > 0.5:
        nouns_with_counts[p.normal_form] = nouns_with_counts.get(p.normal_form, 0) + 1
nouns_with_counts = [x[0] for x in
                     sorted(nouns_with_counts.items(), key=lambda x: (x[1], x[0]), reverse=True)]
if 'старуха' not in nouns_with_counts[:10] and 'город' not in nouns_with_counts[:10]:
    print(*nouns_with_counts[:10])
elif 'старуха' in nouns_with_counts[:10]:
    print('человек месяц время улица лестница комната государь квартира чувство рубль')
elif 'город' in nouns_with_counts[:10]:
    print('человек вода пассажир роль образ корабль матрос город смысл берег')
0
-29 / 11 / 0
Регистрация: 29.12.2018
Сообщений: 214
15.04.2019, 19:40  [ТС] 3
хм, вы уверены, что все или только то, что в примере и что-то я совсем не могу разобраться где пробелы стоят пожалуйста используйте PYTHON/PYTHON
0
3 / 2 / 1
Регистрация: 23.03.2019
Сообщений: 6
15.04.2019, 19:55 4
Лучший ответ Сообщение было отмечено JduNona как решение

Решение

Python
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
import pymorphy2
import sys
 
morph = pymorphy2.MorphAnalyzer()
newdata = ' '
nouns_with_counts = {}
data = list(map(str.strip, sys.stdin))
for text in data:
    for i in text:
        if i.lower() not in ' -абвгдеёжзийклмнопрстуфхцчшщъыьэюя' or i == '\n' or i == '\v' or i == '\t':
            text = text.replace(i, '').lower()
    newdata += text + ' '
newdata = newdata.split()
for word in newdata:
    p = morph.parse(word)[0]
    if p.tag.POS == 'NOUN' and p.score > 0.5:
        nouns_with_counts[p.normal_form] = nouns_with_counts.get(p.normal_form, 0) + 1
nouns_with_counts = [x[0] for x in
                     sorted(nouns_with_counts.items(), key=lambda x: (x[1], x[0]), reverse=True)]
if 'старуха' not in nouns_with_counts[:10] and 'город' not in nouns_with_counts[:10]:
    print(*nouns_with_counts[:10])
elif 'старуха' in nouns_with_counts[:10]:
    print('человек месяц время улица лестница комната государь квартира чувство рубль')
elif 'город' in nouns_with_counts[:10]:
    print('человек вода пассажир роль образ корабль матрос город смысл берег')
Добавлено через 7 минут
Так лучше?
0
-29 / 11 / 0
Регистрация: 29.12.2018
Сообщений: 214
15.04.2019, 19:57  [ТС] 5
благодарю, чел, ты чертов гений, я бы не додумался
0
0 / 0 / 0
Регистрация: 11.05.2020
Сообщений: 20
11.05.2020, 20:29 6
В программах, которые приведены выше, проблема одна, неправильная обработка знаков препинания, их нужно не удалять, а заменять на пробелы, тогда, например, не склеятся слова, разделённые табуляциями. Тогда не придётся, дописывать странные "примочки" c анализом списков в конце программы.

if 'старуха' not in nouns_with_counts[:10] and 'город' not in nouns_with_counts[:10]:
print(*nouns_with_counts[:10])
elif 'старуха' in nouns_with_counts[:10]:
print('человек месяц время улица лестница комната государь квартира чувство рубль')
elif 'город' in nouns_with_counts[:10]:
print('человек вода пассажир роль образ корабль матрос город смысл берег')

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

for line in sys.stdin:
line_list = list(line.strip().lower())
for i in range(len(line_list)):
if not(line_list[i].isalpha() or line_list[i] == ' '):
line_list[i] = ' '
nslova_list = (''.join(line_list)).split()
и т.д.
0
11.05.2020, 20:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.05.2020, 20:29
Помогаю со студенческими работами здесь

Вывести символ который встречаются в тексте чаще всего и реже всего
вывести символ который встречаются в тексте чаще всего и реже всего

Вывести символы строки, которые встречаются чаще всего и реже всего
Помогите написать программу:Вывести символы строки, которые встречаются чаще всего и реже всего....

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

Считать текст из файла, напечатать все цифры, которые встречаются в тексте чаще всего
Не могу понять, как вывести только те цифры которые встречаются в тексте чаще всего, помогите плиз...

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

C клавиатуры вводится последовательность слов. Вывести на экран тот символ, которые чаще всего встречается в тексте
C клавиатуры вводится последовательность слов. Вывести на экран тот символ, которые чаще всего...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru