Различные модели и код для идентификации перефразирования, реализованные в TensorFlow (1.1.0).
Я очень заботился о документировании кода и объяснил, что я делаю на разных шагах на протяжении всего моделей; Надеюсь, это будет дидактический пример кода для тех, кто хочет начать работу с Tensorflow!
Пока что это репо реализовано:
Основная базовая линия SIAMESE LSTM, основанная на модели в Мюллере, Джонасе и Адитьей Тьягараджане. «Сиамская рецидивирующая архитектура для сходства с предложением». AAAI (2016).
Сиамская модель LSTM с добавленным «соответствующим слоем», как описано в Liu, Yang et al. «Изучение вывода естественного языка с использованием двунаправленной модели LSTM и внутреннего активации». Corr Abs/1605.09090 (2016).
Более или менее состояние искусства двусторонняя многоперспективная подходящая модель от Wang, Zhiguo et al. «Двустороннее многоперспективное соответствие для предложений естественного языка». Corr Abs/1702.03814 (2017).
PR, чтобы добавить больше моделей / оптимизации или исправления существующих, более чем приветствуются! Большая часть кода модели находится в Duplicate_questions/Models
Большая часть кода обработки данных взята из / вдохновленного Allenai / Deep_QA, проверьте их, если вам нравится, как этот проект структурирован!
Этот проект был разработан и был протестирован на Python 3.5 (он, вероятно, не работает с другими версиями Python), а требования к пакетам в соответствии с requirements.txt .
Чтобы установить требования:
pip install -r requirements.txt
Обратите внимание, что после установки требований вы должны загрузить необходимые данные NLTK, работая (в вашей оболочке):
python -m nltk.downloader punkt
Обратите внимание, что файл requirements.txt указывает tensorflow как зависимость, которая представляет собой переписную версию TensorFlow CPU. Если у вас есть графический процессор, вы должны удалить этот процессор Tensorflow и установить версию GPU, работая:
pip uninstall tensorflow
pip install tensorflow-gpu
Для начала запустите следующее для создания вспомогательных каталогов для хранения данных, обученных моделей и журналов:
make aux_dirs
Кроме того, если вы хотите использовать предварительные векторы перчаток, запустите:
make glove
который будет загружать предварительно проведенные перчатки на data/external/ . Извлеките файлы в том же каталоге.
Чтобы использовать данные пары вопросов Quora, загрузите набор данных из Kaggle (может потребовать учетную запись). Поместите загруженные zip -архивы в data/raw/ и извлеките файлы в тот же каталог.
Затем беги:
make quora_data
Для автоматического очистки и обработки данных с помощью сценариев в scripts/data/quora .
Чтобы обучить модель или нагрузить + прогноз с моделью, затем запустите сценарии в scripts/run_model/ с python <script_path> . Вы можете получить дополнительную документацию о параметрах, которые они принимают, запустив python <script_path> -h
Вот пример командования RUN для базового сиамского Bilstm:
python scripts/run_model/run_siamese.py train --share_encoder_weights --model_name=baseline_siamese --run_id=0
Вот пример команды Run для Siamese Bilstm с соответствующим слоем:
python scripts/run_model/run_siamese_matching_bilstm.py train --share_encoder_weights --model_name=siamese_matching --run_id=0
Вот пример команды запуска для модели BIMPM:
python scripts/run_model/run_bimpm.py train --early_stopping_patience=5 --model_name=biMPM --run_id=0
Обратите внимание, что по умолчанию могут быть не идеальными для вашего использования, поэтому не стесняйтесь поворачивать ручки, как вам нравится.
У вас есть идеи о том, как улучшить это репо? Есть запрос на функции, отчет об ошибках или патч? Не стесняйтесь открывать проблему или PR, так как я рад решить проблемы и посмотреть на запросы на привлечение.
├── LICENSE
├── Makefile <- Makefile with commands like `make data` or `make train`
├── README.md <- The top-level README for developers using this project.
├── data
│ ├── external <- Data from third party sources.
│ ├── interim <- Intermediate data that has been transformed.
│ ├── processed <- The final, canonical data sets for modeling.
│ └── raw <- Original immutable data (e.g. Quora Question Pairs).
|
├── logs <- Logs from training or prediction, including TF model summaries.
│
├── models <- Serialized models.
|
├── requirements.txt <- The requirements file for reproducing the analysis environment
│
├── duplicate_questions<- Module with source code for models and data.
│ ├── data <- Methods and classes for manipulating data.
│ │
│ ├── models <- Methods and classes for training models.
│ │
│ └── util <- Various helper methods and classes for use in models.
│
├── scripts <- Scripts for generating the data
│ ├── data <- Scripts to clean and split data
│ │
│ └── run_model <- Scripts to train and predict with models.
│
└── tests <- Directory with unit tests.