Комментарии 10
В небольшое дополнение. Есть еще вот такой вариант
pypi.org/project/bert-extractive-summarizer
В нём предложения векторизуются, кластеризуются, и суммаризируются по близости к центроидам кластеров.
pypi.org/project/bert-extractive-summarizer
В нём предложения векторизуются, кластеризуются, и суммаризируются по близости к центроидам кластеров.
В тегах указан «Python», но в тексте нет примеров или модулей Python.
Некорректный тег?
Камрад S_A, спасибо за линк на «Bert Extractive Summarizer». Протестировали — достойное решение.
Подбираем библиотеку для суммаризации/конспектированию новостей (банковские новости США), перепробовали массу решенией, беря за ориентир Resoomer (resoomer.com).
Некорректный тег?
Камрад S_A, спасибо за линк на «Bert Extractive Summarizer». Протестировали — достойное решение.
Подбираем библиотеку для суммаризации/конспектированию новостей (банковские новости США), перепробовали массу решенией, беря за ориентир Resoomer (resoomer.com).
Модель присваивает каждому слову случайные вектора и далее на каждом шаге обучения, «изучая контекст», корректирует их значения.
Это жутко медленно. Можно использовать быстрый вариант: разбить w2v на классы (параметр при обучении), каждому слову присвоить класс (число — int), тогда пространство признаков сильно сокращается и сравнение (даже по косинусу) происходит быстро. А если разбивать на классы не встроенным в w2v алгоритмом (k-means), а написать свой, то можно получить пересекающиеся классы, что уже интереснее, и, ес-но, точнее работает.
Но помимо этого есть методы суммаризации, основанные на эмотивных характеристиках текста, что особенно важно в соц. медиа (да и в СМИ неплохо работает). Учитывается сила сентимента, агрессивность и пр. Получаются неплохие результаты.
А вот с бредогенераторами текста (даже на трансформерах) пока ничего толкового не видел…
НЛО прилетело и опубликовало эту надпись здесь
Надо понимать, что наши конкретные реализации подходов 1) ориентированы на русский язык 2) оптимизированы для краткой аннотации из нескольких предложений, а не одного заголовка.
Поэтому без особой переделки получилось:
0.148 на основе векторов,
0.15 на основе общих слов,
0.1 кластеризацией.
И это меньше weak baseline))
Хорошая демонстрация, что под разные задачи конкретная реализация подхода будет разной.
Поэтому без особой переделки получилось:
0.148 на основе векторов,
0.15 на основе общих слов,
0.1 кластеризацией.
И это меньше weak baseline))
Хорошая демонстрация, что под разные задачи конкретная реализация подхода будет разной.
У меня вопрос по лемматизации. Как поступать с предложениями, которые схожи по этой метрике, но по факту имеют существенно разный смысл:
«Я работаю на заводе» против «Я работал на заводе».
И второй вопрос: как поступать с синонимами или с синонимичными выражениями?
«Я работаю на заводе» против «Я работал на заводе».
И второй вопрос: как поступать с синонимами или с синонимичными выражениями?
По поводу словоформ — можно по-разному проводить подготовку текстов. Т.е. заделать какой-то условный механизм лемматизации, который будет глаголы приводить либо к инфинитивам, либо к другой интересной вам форме (т.е. например, с сохранением времени), можно посмотреть, например, тут: pymorphy2.readthedocs.io/en/latest/internals/dict.html. А можно вообще не лемматизировать. Но это надо поэкспериментировать. В плане эмбеддингов эти два предложения всё равно будут близкими друг к другу (даже при сохранении формы). А вот при подсчете общих слов — могут считаться разными или одинаковыми — в зависимости от подготовки текстов.
По поводу синонимов — при построении векторов они и так будут рядом относительно. А вот при подходе с выявлением общих слов они будут считаться разными словами. Особого смысла работать со словарем синонимов не вижу, разве что NER как-то выделять (например, упоминания в тексте одного документа с полным и кратким наименованием, аббревиатурой, в этом есть смысл). А вот синонимичность обычных слов часто зависит от контекста, необходимо не просто заменять одно слово другим, а учитывать его значение, для подхода с общими словами это излишне, на мой взгляд, мне такой подход нравится за его простоту :)
По поводу синонимов — при построении векторов они и так будут рядом относительно. А вот при подходе с выявлением общих слов они будут считаться разными словами. Особого смысла работать со словарем синонимов не вижу, разве что NER как-то выделять (например, упоминания в тексте одного документа с полным и кратким наименованием, аббревиатурой, в этом есть смысл). А вот синонимичность обычных слов часто зависит от контекста, необходимо не просто заменять одно слово другим, а учитывать его значение, для подхода с общими словами это излишне, на мой взгляд, мне такой подход нравится за его простоту :)
Сначала мы нанимаем копирайтеров и журналюг, что бы они писали нам много слоф, а потом учим машину сокращать текст… Л — Логика
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Суммаризация текста: подходы, алгоритмы, рекомендации и перспективы