Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

Задачка

Автор Agnius, августа 14, 2024, 18:09

0 Пользователи и 1 гость просматривают эту тему.

Agnius

 Пусть есть некий текст, в котором многие слова повторяются. Опишите алгоритм поиска такого минимального списка слов, которые покрывают как минимум 35% текста

Bhudh

Слова в тексте выделены или их надо найти?
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Agnius

@Bhudh
 Не очень понял, вам надо составить список из некоторых слов текста при заданном условии

Andrey Lukyanov

Составляем частотный словарь, а далее проверяем, сколько %% текста покрывает 1-е самое частотное слово, потом 1-е + 2-е и так далее — пока не дойдём до нужных 35%.

Bhudh

Цитата: Agnius от августа 14, 2024, 21:39Не очень понял, вам надо составить список из некоторых слов текста при заданном условии
Вот я и спрашиваю, какой у Вас текст: Декларация прав человека или надпись библским письмом?
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Agnius


Bhudh

Ну тогда и алгоритм понятен. Он на Python вообще, считай, в одну строчку пишется с двумя лямбдами.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Python

Зачем там лямбды? [*set(text.split())] плюс, возможно, предварительно заменить пунктуацию пробелами и взять только 0.35 от общей длины текста с выравниванием к ближайшему пробелу. Впрочем, это не алгоритм — алгоритмическая часть под капотом.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Bhudh

Эти 0.35 тоже надо каким-то образом взять, ни set, ни list за Вас этого не сделает.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Basil2

Понятно, что определения слова тут еще не было, тем не менее.

Поскольку я подобную задачку решал когда-то лет 30 назад, хочется у знать у знатоков, как они будут поступать словоформами в языках с богатой морфологией, например, в русском?

Пример: как узнать, что "проводил" и "провел" - одно и то же слово в разных формах?     

Боюсь, парой лямбд не обойтись. 

Python

@Basil2  Вопрос по словоформам и у меня самого недавно возникал — не в контексте данной задачи, а с более практической целью: восстановить базовые формы слов в тексте, чтобы можно было найти их в словаре. Берем слово из текста и применяем к нему все возможные шаблоны преобразования в базовую форму, в которые оно вписывается. В результате получится несколько слов в базовой форме, необязательно существующих (напр., из слова Київ в украинском можно получить настоящее существительное «кий» (которое в родительном падеже множественного числа выглядит как «київ»), но также и несуществующий глагол «киїти» (в мужском роде прошедшего времени тоже выглядящий как «київ»), и т.д., и т.п., а также само проверяемое слово, которое может быть базовой формой себя). Дальше остается проверить по словарю, существуют такие базовые формы или нет. Если найдено более одной базовой формы, угадать нужную можно только из контекста.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Bhudh

Цитата: Basil2 от августа 19, 2024, 03:40Пример: как узнать, что "проводил" и "провел" - одно и то же слово в разных формах?
Особенно если считается, что это 2 разных слова: форма от проводить и форма от провести.
Потому, что от «проводить до дома» (сов.) несовершенная форма — «провожать до дома», а от глагола «провести» ≈ «обмануть» несовершенной формы не существует.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Basil2

Цитата: Bhudh от августа 19, 2024, 16:58
Цитата: Basil2 от августа 19, 2024, 03:40Пример: как узнать, что "проводил" и "провел" - одно и то же слово в разных формах?
Особенно если считается, что это 2 разных слова: форма от проводить и форма от провести.
Потому, что от «проводить до дома» (сов.) несовершенная форма — «провожать до дома», а от глагола «провести» ≈ «обмануть» несовершенной формы не существует.
Проводил реформы - провел реформы.

А вопрос о том, два ли это слова или одно и тоже упрется в определние, что такое слово. 

Python

Преобразование между совершенным и несовершенным глаголом возможно более чем одним способом, поэтому обычно их рассматривают как отдельные глаголы (хотя могут объединять близкие по смыслу родственные совершенные и несовершенные глаголы в одну словарную статью).
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Toman

Цитата: Andrey Lukyanov от августа 14, 2024, 21:43Составляем частотный словарь, а далее проверяем, сколько %% текста покрывает 1-е самое частотное слово, потом 1-е + 2-е и так далее — пока не дойдём до нужных 35%.
Тут ещё некоторый вопрос по самому условию задачи. Что такое вообще для автора процент покрытия, это процент от чего, в чём измеряется величина текста? В словах (тогда да, можно использовать обычный частотный словарь) или в символах (тогда надо не обычный частотный словарь, а отсортированный по частоте, умноженной на длину слова, т.е. по величине покрытия в символах)?
Во́зле до́ма хо́лм с куля́ми - вы́йду на́ холм, ку́ль поставлю.
В славном городе Miami тётки мерялись ногтями, тик иң озын завсегда у Фиделя борода!

Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр