У меня есть 160 бит случайных данных.
Просто для удовольствия, я хочу создать псевдоанглийскую фразу, чтобы "сохранить" эту информацию. Я хочу, чтобы иметь возможность восстановить эту информацию из этой фразы.
Примечание.. Это не вопрос безопасности, мне все равно, сможет ли кто-то другой восстановить информацию или даже обнаружить, что она есть или нет.
Критерии для лучших фраз, от самых важных до наименьших:
- Короткие
- Уникальный
- Природный вид
Текущий подход, предложенный здесь:
Возьмите три списка из 1024 существительных, глаголов и прилагательных каждый (выбор наиболее популярных). Создайте фразу по следующему шаблону, считывая 20 бит для каждого слова:
Noun verb adjective verb, Noun verb adjective verb, Noun verb adjective verb, Noun verb adjective verb.
Теперь это хороший подход, но фраза слишком длинная и немного скучная.
Я нашел состав слов здесь (часть базы данных речей).
После некоторой специальной фильтрации я подсчитал, что этот корпус содержит приблизительно
- 50690 используемых прилагательных
- 123585 существительные
- 15301 глаголов
- 13010 наречия (не включены в шаблон, но упоминаются в ответах)
Это позволяет мне использовать до
- 16 бит на каждое прилагательное (на самом деле 16.9, но я не могу понять, как использовать дробные биты)
- 15 бит на существительное
- 13 бит на глагол
- 13 бит на каждое наречие
Для шаблона существительного-глагола-прилагательного-глагола это дает 57 бит на "предложение" во фразе. Это означает, что если я буду использовать все слова, которые я могу получить из этого корпуса, я могу сгенерировать три предложения вместо четырех (160/57 ≈ 2.8).
Noun verb adjective verb, Noun verb adjective verb, Noun verb adjective verb.
Все еще слишком долго и скучно.
Любые подсказки, как я могу улучшить его?
Что я вижу, что я могу попробовать:
-
Попытайтесь каким-то образом сжать мои данные перед кодированием. Но поскольку данные полностью случайны, только некоторые фразы будут короче (и, я думаю, не намного).
-
Улучшите шаблон фразы, чтобы он выглядел лучше.
-
Используйте несколько шаблонов, используя первое слово во фразе, чтобы как-то указать для будущего декодирования, какой шаблон использовался. (Например, используйте последнюю букву или даже длину слова.) Выберите шаблон в соответствии с первым байтом данных.
... Я не так хорош с английским, чтобы придумать лучшие фразовые модели. Любые предложения?
- Используйте более лингвистику в шаблоне. Различные времена и т.д.
... Полагаю, мне понадобится гораздо лучше слово corpus, чем сейчас. Любые подсказки, где я могу получить подходящий вариант?