Решения задачи с Ulearn

Практика «Частотность N-грамм»

Продолжайте работу в том же проекте.

N-грамма — это N соседних слов в одном предложении. 2-граммы называют биграммами. 3-граммы — триграммами.

Например, из текста: «She stood up. Then she left.» можно выделить следующие биграммы «she stood», «stood up», «then she» и «she left», но не «up then». И две триграммы «she stood up» и «then she left», но не «stood up then».

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

Более формально так:

Для каждой пары (key, value) из словаря должно выполняться одно из следующих условий:

  1. В тексте есть хотя бы одна биграмма (key, value), и для любой другой присутствующей в тексте биграммы (key, otherValue), начинающейся с того же слова, value должен быть лексикографически меньше otherValue.
  2. Либо в тексте есть хотя бы одна триграмма (w1, w2, value), такая что w1 + " " + w2 == key и для любой другой присутствующей в тексте триграммы (w1, w2, otherValue), начинающейся с той же пары слов, value должен быть лексикографически меньше otherValue.

Для лексикографического сравнения используйте встроенный в .NET способ сравнения Ordinal, например с помощью метода string.CompareOrdinal.

Такой словарь назовём N-граммной моделью текста.

Реализуйте этот алгоритм в классе FrequencyAnalysisTask.

Все вопросы и детали уточняйте с помощью примера ниже и тестов.

Пример

По тексту a b c d. b c d. e b c a d. должен быть составлен такой словарь:

Обратите внимание:

  • из двух биграмм «a b» и «a d», встречающихся однократно, в словаре есть только пара «a»: «b», как лексикографически меньшая.
  • из двух встречающихся в тексте биграмм «c d» и «c a» в словаре есть только более частотная пара «c»: «d».
  • из двух триграмм «b c d» и «b c a» в словаре есть только более частотная «b c»: «d».

 

Стоимость решения этой задачи всего 100 рублей, купи решения у меня 🙂

Обновлено: 25.11.2018 — 10:13

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.