Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Premaster #61

Merged
merged 3 commits into from
Jun 24, 2020
Merged

Premaster #61

merged 3 commits into from
Jun 24, 2020

Conversation

bt2901
Copy link
Contributor

@bt2901 bt2901 commented May 23, 2020

No description provided.

@bt2901 bt2901 requested a review from Alvant as a code owner May 23, 2020 00:08
@@ -154,6 +154,13 @@ def init_lda(
dataset, modalities_to_use, main_modality, num_topics
)

# found in doi.org/10.1007/s10664-015-9379-3
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ок, только не понятно, к чему этот коммент)

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А, ок. Ну, стоит тогда хотя бы туду сделать в духе: implement this LDA also.

@bt2901
Copy link
Contributor Author

bt2901 commented May 23, 2020 via email

@Alvant
Copy link
Collaborator

Alvant commented May 24, 2020

@bt2901 Виктор, предлагаю сделать небольшую перестановку. Сейчас в ветке в репозитории такой распорядок

<root>
    demos
        ...
        NumTopics_all_datasets.ipynb
    topnum
        ...
        configs
        utils.py

Давай сделаем так?

<root>
    demos
        ...
    experiments
        NumTopics_all_datasets.ipynb

        # и ещё пару ноутбуков потом сюда стоит перенести

        src
            configs
            utils.py
    topnum
        ...

Просто utils.py и configs — это имхо не должно лежать в основной библиотеке (уж utils.py 100% не должен быть в корне: там есть функции типа "построить график", у которых очень локальное применение; configs... наверно, тоже надо убрать из topnum). Это, по-моему, опять в тему разговора про библиотеку для использования vs. библиотека aka код экспериментов для статьи, и сейчас это немного смешивается. Папку demos тоже надо бы потом причесать: изначально там планировалось складывать небольшие простые примеры, как чем пользоваться, а мы в неё и большие эксперименты теперь кладём. Кажется неплохим решением создать папку experiments на самом верхнем уровне и перенести туда часть .py кода, который только для экспериментов, и большие ноутбуки с экспериментами.

def search_for_optimum(self, text_collection: VowpalWabbitTextCollection) -> None:
_logger.info('Starting to search for optimum...')

dataset = text_collection._to_dataset()

# seed == None is too similar to seed == 0
seeds = [None] + list(range(1, self._num_restarts))
seeds = [None] + [abs(RandomState(i).tomaxint()) for i in range(1, self._num_restarts)]
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Здесь не хватает коммента, почему такая жесть. Плюс, если это не даёт эффекта, мб это стоит убрать?

test_dataset = Dataset(f'{dn}_test.csv', batch_vectorizer_path=f'{dn}_test_internals')

# quick hack, i'm not sure what for
test_dataset._to_dataset = lambda: test_dataset
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Мне кажется, это можно убрать (и при этом не должно ничего сломаться)


assert len(train_documents) + len(test_documents) == len(documents)

train_data = dataset._data.loc[train_documents]
Copy link
Collaborator

@Alvant Alvant May 24, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Вроде норм, но с keep_in_memory=False я бы тут проверил на всякий случай.

P.S.
Вообще, более глобальная проблема: _data может вести себя по-разному в зависимости от keep_in_memory. То есть либо надо стараться всегда дёргать только публичные методы датасета (или добавлять такие, если их нет, но что-то нужно), либо надо _data сделать свойством, которое будет кое-какую логику содержать, чтобы не было отличий между dask и pandas. Со вторым не понятно, но про публичные методы вроде как раз ничего вариант :)

@Alvant
Copy link
Collaborator

Alvant commented May 24, 2020

Прикольно, что ты ещё датасет добавил (StackOverflow). Надо только мне будет и на нём тоже ренормализацию и стабильность прогнать

word: "@word"

min_num_topics: 10
max_num_topics: 30
Copy link
Collaborator

@Alvant Alvant May 24, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Если для каждого датасета делать свой max_num_topics, то кмк надо с большим запасом, например x2 или x3 или больше (то есть для 20 NG это будет 40 или 60). И если range топиков разный для разных датасетов, то на графики может быть сложнее смотреть, если их объединять в один figure в ТеХ-е

style = ':'
else:
style = '-'
my_ax.plot(data.T.mean(axis=0), linestyle=style, label=mfv)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Маркер добавь!) точки не видны. И сетку стоит сделать

@Alvant
Copy link
Collaborator

Alvant commented May 24, 2020

Мысли про эксперимент

  • у diversity такой чёткий минимум в 15 топиках!
  • ...и у Реньи! (причём видно, как зависимость изменяется с порогом)
  • очень хотелось бы увидеть какую-то иерархичность по графикам; пока не видно; возможно, надо попробовать max_num_topics побольше
  • TopicKernel монотонный (то есть это типа не очень хорошо), но у него 15 топиков это точка без производной (или как там это называется? 😅 точка излома?), а это неплохо?..;
  • ...у Перплексии тоже небольшой заворот в районе 15 тем
  • ...и у Интры!
  • разницы между моделями как бы особой не видно: если по скору есть минимум/максимум, то он есть примерно в той же точке у всех моделей

В целом неплохо! Единственное, надо

  • решить, стоит ли увеличивать max_num_topics
  • отметить жирным точки на графиках (по-хорошему, точки — это единственное, что мы можем отметить; линия в принципе лишняя, она только для большей наглядности)
  • подумать, мб ещё какие-то характеристики добавить к скорам: сейчас проверяется только монотонность; наличие особых точек (излом-перегиб) это тоже о чём-то говорит (хотя не очень понятно, о чём 😅); фрактальность (или как это лучше назвать), если по скору можно оценить число тем для уровней иерархии — это тоже хорошо; правда, все такие штуки может быть сложно оценивать автоматически по набору точек...
  • и пока не очень понятно, что мы ожидаем получить как ответ; то есть все коллекции несбалансированные — вряд ли будет прям то число тем, которое указано в описании датасета; скорее всего, надо ожидать число тем из [true_num_topics - eps, true_num_topics]
  • ...ух ты, так ведь есть регуляризатор для балансировки! хм, а модель с таким регуляризатором можно добавить в семейство моделей?.. хотя можно без неё, и так нормально, как решили

@Alvant Alvant merged commit 74589fc into master Jun 24, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants