2016-10-14 7 views
0

Я пытаюсь написать алгоритм, который может выработать «неожиданность» или «сложность информации» предложения. В частности, я пытаюсь сортировать набор предложений, поэтому наименее сложным является первое.Использование библиотеки сжатия для оценки сложности информации английского предложения?

Моя мысль заключалась в том, что я мог бы использовать библиотеку сжатия, такую ​​как zlib ?, «pre train» на большом корпусе текста на одном языке (назовите это «Корпус»), а затем добавьте в этот корпус текста разные предложения.

То есть я мог бы определить меру сложности для предложения, чтобы указать, сколько еще байтов требуется для сжатия всего тела с добавленным предложением, по сравнению со всем корпусом с добавленным другим предложением. (Чем меньше лишних байтов, тем более предсказуемым или «ожидаемым» это предложение, и, следовательно, тем ниже сложность). Имеет ли это смысл?

Проблема заключается в попытке найти нужную библиотеку, которая позволит мне сделать это, предпочтительно из python.

Я мог бы сделать это, буквально добавив предложения к большому корпусу и попросив библиотеку сжатия сжать весь shebang, но, если возможно, я бы скорее остановил обработку библиотеки сжатия в конце корпуса, сделайте снимок соответствующего состояния сжатия, а затем, со всеми доступными «состояниями», попытайтесь сжать последнее предложение. (Тогда я вернусь к снимку состояния в конце корпуса и попробую другое предложение).

Может ли кто-нибудь помочь мне с библиотекой сжатия, которая может быть подходящей для этой потребности? (Что-то, что позволяет мне «заморозить» его состояние после «предварительного обучения».)

Я бы предпочел использовать библиотеку, которую я могу вызвать из Python или Scala. Еще лучше, если это чистый python (или чистый scala)

ответ

1

Все, что вам нужно сделать, это рассказать вам, являются ли слова в предложении, а может быть и фразы в предложении, в словаре, который вы указали. Я не понимаю, как это сложно. Больше похоже на уровень оценки. И для этого есть лучшие инструменты. Во всяком случае, я отвечу на ваш вопрос.

Да, вы можете запрограммировать словарь zlib-компрессора. Все это составляет до 32 Кбайт текста. Вам не нужно запускать zlib в словаре или «замораживать состояние» - вы просто начинаете сжимать новые данные, но разрешаете ему оглядываться на словарь для соответствия строк. Однако 32K не очень много. Это еще далекий формат zlib будет выглядеть, и вы не сможете загрузить большую часть английского языка в 32 Кбайтах.

LZMA2 также позволяет предустановленный словарь, но он может быть намного больше, до 4 ГБ. Существует связка Python для библиотеки LZMA2, но вам может потребоваться расширить ее, чтобы обеспечить функцию preset словаря.

+0

Спасибо за кучи за то, что нашли время. Возможно, вы правы, что это может быть не интересно, но я попробую. Я согласен с тем, что только с 32 КБ словаря это может быть не все, что интересно, но, думая о хорошо оптимизированном словаре, даже если у него есть только несколько «шаблонов», он все равно может сказать вам немного о предложениях, которые используют наиболее распространенные структуры, по сравнению с другими. Даже PySmaz - крошечный крошечный словарь для ввода * * * * * * * * * * * Не совсем бессмысленные вещи https://github.com/CordySmith/PySmaz/blob/master/smaz/__init__.py#L295 показывают, что это – utunga