Наш пример использования заключался в создании ключевых фраз (биграмм или триграмм) из обзоров вместо создания тем, состоящих из одного слова. Темы из 1 слова не дают целостного представления о том, что говорится о продукте на рынке, но фраза помогает нам лучше понять, в положительном или отрицательном смысле говорится о словах. Я начал с тематического моделирования с использованием n-граммов, а также попытался сгенерировать высокочастотные слова с помощью tf-idf и Rake, что не привело к фразам, которые фактически захватили высокочастотные фразы.

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

Здесь я подробно рассмотрел весь наш подход. Надеюсь, это поможет тебе.

Архитектура

Предварительная обработка

Я выполнил лишь ограниченную предварительную обработку, т.е.

  1. удаление всех знаков препинания и символов.
  2. преобразование всех отзывов в строчные буквы.

Ключевые фразы-кандидаты

Затем я создал список всех возможных ключевых фраз, используя простое сопоставление на основе правил. Я использовал модель spacy en_core_web_lg, чтобы получить теги частей речи для каждого слова. Я извлек фразы, состоящие из нуля или более прилагательных, за которыми следует одно или несколько существительных или имен собственных.

Пример:

Вложения предложений

Теперь, когда у меня был список всех ключевых фраз-кандидатов, мне нужно было выбрать те обзоры, которые обозначают фразы, которые часто используются. Основная трудность здесь заключалась в синонимах. Такие слова, как: хороший, плохой, означают одно и то же, но не будут выбраны как одна и та же ключевая фраза, добавляющая избыточность к выбранным фразам. Я решил это, вычислив косинусное сходство и MMR в векторном пространстве. Я использовал Sent2Vec для преобразования предложений в векторы. Sent2Vec является расширением Word2vec и может удобно представлять английские предложения произвольной длины в виде Z -мерного вектора. Он отражает семантическую близость между предложениями при использовании стандартных мер сходства на соответствующих векторах.

Пример

Я предварительно обучил модель sent2vec на сочетании данных вики-биграмм (wiki_bigrams.bin) и биграмм из нашего корпуса обзоров. Это помогло модели не только изучить формальный стиль языка Википедии, но и неформальный стиль написания обзоров. Все обзоры, объединенные вместе, образуют 1 документ, который затем помещается в то же векторное пространство, что и данные вики-биграмм.

Пример

Затем я сравнил косинусное сходство каждой ключевой фразы кандидата с вектором документа одну за другой. Если косинусное сходство велико, я проверил его косинусное сходство с другими ключевыми фразами, которые уже были выбраны. Если косинусное сходство фразы с вектором документа велико и оно также не близко ни к одной из других выбранных фраз, я оставил его. В противном случае, если это было близко к любой другой фразе, я отбрасывал эту фразу. Этот метод называется MMR.

Если MMR для 2 фраз очень высок, я оставил только первую фразу и отбросил все фразы, которые были похожи на 1-ю фразу.

Пример

Теперь, если вы хотите связать отзывы с ключевыми фразами, вы можете использовать тот же подход, что и раньше. Просто замените вектор обзора вектором ключевой фразы.

  • Замените отдельный документ с обзорами приложений данной ключевой фразой.
  • Замените список возможных ключевых фраз на список отзывов.
  • Примените ту же технику, что и раньше, без MMR - здесь нам нужна избыточность.

Ссылки

  1. Https://www.aclweb.org/anthology/K18-1022/
  2. Https://spacy.io/usage/linguistic-features