Улучшение производительности языковой модели с помощью умных словарей
Этот проект предназначен для изучения использования предварительной обработки корпуса «Миллиард слов» с метками частей речи и именованными объектами для создания «более умного» словаря. Используя эти методы, можно получить более высокие оценки замешательства, чем при использовании только первых N слов в корпусе.
Полное объяснение обработки и ее влияния на получаемые оценки запутанности см. в разделе «Улучшение производительности языковой модели с помощью более умных словарей».
В проект включены скрипты
Проект предназначен для использования на месте, и для него не требуется установка пипа. Просто загрузите исходный код с GitHub, установите параметры конфигурации и запустите пронумерованные сценарии по порядку. Обратите внимание, что этот код предназначен для исследователя, поэтому ожидайте, что ему придется просмотреть код в запускаемых сценариях и изменить параметры по мере необходимости для получения конкретных результатов.
Сценарии в основном каталоге имеют префикс с номером, указывающим, в каком порядке их запускать. Большинство сценариев в основном каталоге представляют собой относительно короткую серию вызовов связанных библиотечных функций. Перед запуском каждого сценария обязательно откройте его и установите любые параметры конфигурации, чтобы получить желаемые результаты.
Параметры глобальной конфигурации, используемые несколькими сценариями, задаются в ./configs/config.py. Обязательно зайдите в этот файл и измените пути к вашим данным перед запуском любого из приведенных ниже сценариев.
00_StanfordCoreNLPServer.py : запускает анализатор NLP Stanford Core с использованием файла конфигурации ./configs/snlp_server.py. Скрипт блокируется во время работы сервера. При желании сервер можно запустить вручную. Этот скрипт предназначен только для удобства.
10_ExtractUniqueSents.py : извлекает уникальные предложения из корпуса «Миллиард слов» перед анализом. В верхней части файла приведены инструкции по загрузке и настройке необработанного корпуса.
12_STParseBWCorpus.py : пропускает все уникальные предложения через Стэнфордский анализатор. Обратите внимание, что этот шаг занимает значительное количество времени (возможно, целый день) и значительно выигрывает от многоядерного процессора. См. примечания в файле о времени выполнения.
14_RemoveDudicates.py : выполняет второй проход по данным для удаления повторяющихся предложений, возникающих после синтаксического анализа/нормализации.
20_CreateEnglishDictionary.py : необходим для создания интеллектуального словаря.
22_CreateVocab.py : этот скрипт создает различные типы словарей. В файле существует большой блок if/elif, позволяющий пользователю выбрать, какой тип словаря создать.
24_IndexVocab.py : создает индексированные данные корпуса, используемые для обучения языковой модели. Опять же, здесь есть большой блок if/elif, который должен быть установлен пользователем для выбора типа словаря, который будет использоваться.
30_TrainBasicLM.py : настраивает и запускает обучение модели. Опять же, здесь есть блок утверждений, позволяющий пользователю выбрать словарный запас для тренировки. Дополнительно пользователю необходимо выбрать файл с параметрами конфигурации модели. Параметры конфигурации модели хранятся в каталоге конфигурации под такими именами файлов, как L1_2048_512.py.
32_TestPerplexity : запускает тест на запутанность обученной модели. Выберите модель для тестирования в нижней части скрипта.
34_NextWordPrediction.py : позволяет пользователю вводить первую часть предложения и вызывает модель для прогнозирования следующего слова. Настройте, какую модель использовать в основной части скрипта.
Части кода были адаптированы из набора инструментов языковой модели Саарского университета. См. TF-NNLM-TK.
Этот код частично был основан на примере модели TensorflowPTB-LM.