И снова здравствуйте! На этой неделе было уйма исправлений ошибок (что означало улучшение базовых показателей, ура!), улучшение качества кода (что, надеюсь, означает меньше ошибок в будущем) и начало реализации новых моделей с использованием контекстуализированных векторов слов.

Исправление этих проклятых ошибок

На прошлой неделе мы сообщили о том, что наши базовые показатели оказались не такими сильными, как мы надеялись, и TF-IDF показала себя намного хуже, чем другие наши базовые показатели, сходство жаккара, которое не соответствовало текущей литературе. Таким образом, в начале этой недели мы с головой погрузились в наш код, уточняя и тщательно просматривая весь код, который мы написали. Мы внимательно посмотрели на то, как мы ранжировали наши статьи, и поняли, что вычисляем отсортированный порядок, но не учитываем этот порядок при определении «топ-k» статей, связанных с одной статьей в нашем наборе для разработки. Как только мы исправили эту ошибку, мы добились гораздо лучших результатов, а наши результаты совпали с результатами научной литературы. Ура!

Вот наши обновленные оценки:

Jaccard similarity score without lemmatization = 0.19
Jaccard similarity score with lemmatization = 0.25
TF-IDF scores without lemmatization = 0.36

Эти оценки были записаны из нашего набора данных статей ACL, EMNLP и NAACL. Эти оценки также соответствуют текущей литературе, в которой говорится, что TF-IDF должен работать лучше, чем сходство Жаккара (и лемматизация должна улучшить производительность). Эти результаты, безусловно, нас очень волнуют, так как они показывают нам, что мы движемся в правильном направлении, ура!

Улучшение нашего набора данных

На прошлой неделе мы также сообщили, что курировали набор данных конференций НЛП: EMNLP, ACL и NAACL. Однако этот набор данных содержал всего около 7500 статей. Нам показалось, что этот набор данных слишком мал, и поэтому мы попытались расширить наши статьи на вторую область компьютерных наук, а именно на безопасность. Мы выбрали эту область, потому что один из членов нашей команды, Митали, проводил исследования в этой области и имеет связи с аспирантами и профессорами этой лаборатории.

Мы добавили доклады со следующих 5 конференций (похоже, эти конференции охватывают большое количество конференций в области безопасности):

  • Конференция ACM по компьютерной и коммуникационной безопасности
  • Симпозиум IEEE по безопасности и конфиденциальности
  • Международная конференция IEEE по теории информации и информационной безопасности
  • IEEE Transactions по информационной криминалистике и безопасности
  • Симпозиум по безопасности USENIX (и связанные с ним семинары)

После того, как мы добавили статьи с этих конференций, в нашем наборе данных было около 26,5 тыс. статей из подобластей компьютерной безопасности и НЛП. После обработки этого набора данных мы снова запустили наши старые базовые показатели. Ниже представлены наши обновленные оценки:

Jaccard similarity with no lemmatization: 0.21894744805412408
Jaccard similarity with lemmatization: 0.290622022347491
TF-IDF scores without lemmatization: 0.3679469330736681

Расширение нашего набора данных для включения конференций по безопасности не повлияло на наши показатели оценки. Это ожидаемое и желаемое поведение, поскольку язык/лексика, используемые в разных подполях, различаются, и поэтому наши модели, использующие токеновое сходство, как правило, не группируют статьи из разных подполей вместе. Мы также очень рады этим результатам, так как это означает, что наши текущие модели ценны для разных полей и разных наборов данных — теперь они определенно выглядят намного более многообещающе!

Внедрение контекстуализированных вложений слов (BERT)

На этой неделе мы также начали первую реализацию нашей расширенной модели, в частности, с использованием BERT. Мы планируем использовать BERT для встраивания слов статей в наш набор данных, а затем применить косинусное сходство для определения первых k статей в обучающем наборе для статей в наборе для тестирования/разработки.

На самом деле заставить это работать было довольно большим проектом! Во-первых, половина нашей группы занималась НЛП в прошлом году, когда BERT/ELMo еще не существовало. Итак, мы сначала потратили некоторое время на чтение текущей литературы и сообщений в блогах, чтобы понять, как работает BERT, а также различные задачи, которые он обучал. Как только мы поняли логику BERT, а также его внутреннюю работу, мы смогли сразу же погрузиться и начать думать о программировании.

Когда мы начали программировать, мы столкнулись с другим препятствием: текущие библиотеки, использующие BERT, а также код, выпущенный Google, очень просты в использовании, если вы хотите выполнить стандартную задачу NLP, такую ​​как ответы на вопросы, тегирование NER. и т. д. Однако для нашего проекта, поскольку мы не используем общую задачу NLP, а вместо этого хотим получить доступ к встраиваниям слов, нам нужно было копнуть немного глубже. Когда мы немного покопались, мы нашли эту библиотеку, созданную Hugging Face, которая делала что-то похожее на то, что мы хотели сделать. После долгих размышлений (а также тонны как это работает?!?, ха-ха), у нас есть работающая реализация. В настоящее время мы запускаем это ночью (как только графические процессоры снова заработают, на данный момент они очень медленные), и, надеюсь, у нас будут интересные результаты, о которых мы расскажем в нашей следующей записи в блоге!

На данный момент кажется, что у нас нет каких-либо запутанных результатов, но я уверен, что мы столкнемся с некоторыми проблемами, как только мы сгенерируем наш первый набор результатов из наших вложений BERT — обратите внимание на некоторые забавные уроки в нашем следующий пост в блоге!

Ну и что дальше?

У нас есть две основные цели на следующую неделю — в первую очередь, это продолжить нашу реализацию контекстного встраивания слов с использованием BERT. Это то, о чем я говорил выше, поэтому я не буду сейчас сильно на этом заострять внимание!

Наша вторая самая большая цель на следующей неделе — перенести нашу кодовую базу на AllenNLP. Мы хотим сделать это, потому что это позволит нам использовать SciBERT, контекстуализированные вложения слов, которые были обучены научной литературе и показали себя лучше в научной литературе, чем в обычной лексике (из Википедии). Мы начали процесс, и у нас уже есть программа для чтения наборов данных, которая анализирует то, что нам нужно для нашей задачи прогнозирования цитирования. Тем не менее, мы все еще выясняем, как спроектировать нашу модель в соответствии с данными, в частности, как ввести пары в модель таким образом, чтобы не дать нам подавляющее большинство нерелевантных пар. Один из вариантов — выбрать все процитированные пары и такое же количество одношаговых пар (статья, которая цитируется в статье, но не статья, которая фактически цитируется), как это делается в рекомендательном документе по цитированию Bhagavatula et. др. (2018). Идея состоит в том, что это более сложные примеры, поэтому модель должна научиться делать более сложный выбор. Мы также столкнулись с несколькими проблемами с умножением матриц, которые мы также надеемся исправить на следующей неделе.

Наконец, в течение следующих нескольких недель мы также планируем опробовать различные модели, чтобы увидеть, как они работают в дополнение к нашим текущим моделям. Мы планируем опробовать встраивания word2vec/doc2vec и GloVe, обе модели встраивания слов, чтобы увидеть, как они работают вместе и отдельно от наших текущих моделей. Мы также планируем использовать автоэнкодеры или GAN в сочетании с встраиванием слов. В случае контролируемого обучения мы могли бы использовать LSTM. Мы рады видеть, какие разные модели мы можем исследовать и как каждая из них работает!

Наблюдения/анализ ошибок

Мы также провели некоторый анализ ошибок, в основном на основе модели TF-IDF. Мы обнаружили, что TF-IDF довольно хорошо справляется с выбором релевантных статей, особенно когда несколько общих тем редки, поэтому сравнение текстов точно отслеживает сходство содержания.

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

Мы также обнаружили, что методологии не обязательно связаны содержательно или текстуально с реальной задачей НЛП, поэтому они получают низкие оценки, даже если их цитируют. Типичным примером здесь являются цитаты из статьи GloVe. Многие статьи цитируют его, потому что GloVe — это стандартное встраивание слов, используемое во многих задачах НЛП, даже если задача НЛП может сильно отличаться.

Мы также обнаружили, что иногда условие по теме не представлено при сравнении текста (например, общий контекст, такой как диалог, превосходит разницу между генерацией и классификацией). Кроме того, контекст, методы или результаты иногда получают больше слов, чем фактическое описание работы. Это может затруднить определение того, имеют ли две статьи одинаковое содержание.

Вот и все наши обновления на этой неделе! Увидимся в следующем!

Библиография

Из Бельтаги, Арман Кохан и Кайл Ло. «SciBERT: предварительно обученные контекстуализированные вложения для научного текста. 2019, место проведения N/A.»

Чандра Бхагаватула, Сергей Фельдман, Рассел Пауэр, Валид Аммар. «Рекомендация по цитированию на основе содержания. НААКЛ-HLT, 2018.»