Skip to content

Решение задачи поиска инновационной продукции на хакатоне UTM

Notifications You must be signed in to change notification settings

nikmedoed/qbt-productinnovations

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Команда QBt (кубит) - выявление инноваций

Идея

Ввиду странного изначального датасета было придумано две ветки развития:

  • Выделение особенностей продукта в анкете на включение в реестр инновационных предложений
    • Возможность анализа свежедобавленного описания
    • Подход: поиск ключевых слов в тексте -> восстановление словосочетаний по контексту -> фильтрация избыточных и нерелеватных выражений за счёт реестра существуюзей продукции
  • Ранжирование продукции внутри категории по "интересности" с точки зрения инновационности/необычности
    • Статистическая модель
    • Учитывает важность атрибутов
    • Учитывает заполненность описания
    • Учитывает необычность описания

План работ:

Ветка по оценки таблицы атрибутов
  • Инструменты для анализа и преобразвоания исходных данных
  • Анализ перечня продуктов и атрибутов, модель ранжированная по инновационности / интересности
  • Обсчитывание весов внутри категорий для каждого продукта
  • Фильтр частых атрибутов
  • УЧитываь вариативность значений внутри аттрибута
  • Умное проставление весов, учитывать тип информации
    • Числа от большого к меньшему
    • Текст - расстояние между словами
    • Размер - объём
    • Нормализация величин
  • Выделение ключевых слов в таблице по категори
    • Выделение ключевых слов
    • Возможно градиентный спуск
    • Возможно восстановление контекста слов w2v
    • Графы связей, кластеризация
  • Визуализировать таблицу с весами 30%/100%
    • Продукты в категории
    • Отображение ключевых атрибутов
    • Отсортированный список продуктов
    • Выделение причин победы того или иного продукта
    • Отображение ключевых слов
  • Интерфейс добавления новго продукта в категорию и его анализ
Ветка анализа анкет с текстовым описанием заявок на инновационный продукт
  • Анализ описаний инновационных продуктов
  • Минимальный алгоритм выделения ключевых слов, поиска особенностей продукта в описании
  • Средний вес по категории для фильтрации
  • Интерфейс описания инновационного продукта
    • Визуализация выделения кусков текста в тексте
    • Отображения рекомендаций по инновационности
  • Интерфейс добавления текстового описания инновационного продукта
  • Выделение ключевых характеристик из текста, опираясь на списки атрибутов в общей таблице продуктов
  • Переработать алгоритм выделения ключевых фраз
    • TF-IDF сравнение bag of words/ngramms/tf-idf
    • Обучить свою модель W2V на существующем тексте
    • Восстанавливать конктест
    • Опробовать logistic regression/random forest
    • Фильтровать выделенные ключевые слова с помощью базы обычной продукции
    • Фразы с восстановленным контекстом с помощью w2v, не найденные в исследуемом тексте использовать для выведения рекомендаций
    • Другие рекомендации

Команда

Image alt

Структура файлов и описание

analyseUtils/

Файл Смысл
getCategoryTable.py Генерирует одну таблицу с листами на каждую категорию и полным списком продуктов по категории
getCategoryTables.py Генеририет таблицы на каждую категорию, в каждой из которых построчно отображается описание продуктов
prepareData.py Считывает данные из исходных таблиц первого датасета, преобразуем в сжатый и удобный формат, пишет в бинарник, для быстрого восстановления

data/

Файл Смысл
data.bin База данных первого датасета в бинарном формате
inn.xlsx, cat.xlsx, att.xlsx, prod2.csv, prod.csv Исходные файлы датасета

dataBase/

Файл Смысл
categoryTable.py Создаёт объект, который производит аналитику по категории, выдаёт ранжированный список продуктов, хранит веса, генерирует матрицу для вывода информации, а также выводит данные в эксель таблицы по категориям
dataBase.bin База данных второго датасета, содержащая объект данных по категориям
workWithDatabase.py Считывает второй датасет и преобразует класс, содержащий описание продуктов по категориям. Кроме того, выполняет предварительные рассчёты весов и некоторых характеристик. Пишет и считывает себя из бинарного файла.
структура.txt Подсказка для нашего специалиста по связям с общественностью, который обещал сделать интерфейс

keyPhrases/

Файл Смысл
normalizeWords.py Нормализует слова
restab.xlsx Пример нахождения в анкете важных характеристик продукта
stopWordsFilter.py Фильтр стоп-слов
weightSearch.py Анализирует анкеты из таблицы и создаёт таблицу с найденными важными характеристиками
freqAnlz.py Выделяет в тексте анкет ключевые слова.

probAndFreqTable/

Файл Смысл
tableStat.py Анализирует перечень продуктов в категории и выдаёт в эксель

resultData/ - Пример работы выделения инновационных продуктов по аттрибутам

Методология

Выделение выражений:

  • Удаляем стоп-слова и символы
  • Нормализуем
  • Ищем веса слов tf-idf
  • Для каждого восстанавливаем контекст регрессионной моделью
  • Приводим выражение к тому виду, что были в исходном тексте с помощью word2vec

Ранжирование по "интересности":

  • Считаем частоту использования каждого атрибута по категориям
  • За вес "встречаемости" берем число атрибутов / частота атрибута
  • Внутри категории по каждому атрибуту считаем число значений
  • Вес "заполненности" = число продуктов / число атрибутов
  • Считаем частоту использования каждого значения в каждом атрибуте
  • Вес значения = число заполненных ячеек по атрибуту / частоту использования (идея, что такие ячейки могут сообщить больше интересной информации, далее надо будет убирать шум/мусор)
  • Нормализуем веса для атрибутов
  • Считаем вес по продукту суммой веса значения * ("встречаемость" + "заполненность") атрибута
  • Ранжируем, выводим

About

Решение задачи поиска инновационной продукции на хакатоне UTM

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages