GithubHelp home page GithubHelp logo

machine-intelligence-laboratory / optimalnumberoftopics Goto Github PK

View Code? Open in Web Editor NEW
14.0 14.0 3.0 22.81 MB

A set of methods for finding an appropriate number of topics in a text collection

License: MIT License

Python 100.00%
artm bigartm computational-linguistics nlp number-of-clusters topic-modeling topic-modelling

optimalnumberoftopics's People

Contributors

alvant avatar bt2901 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

optimalnumberoftopics's Issues

Arun score may break sometimes

arun

The dataset was synthetic and contained only 2 topics (a notebook for data creation may be provided).
The model was trained with 20 topics.

Test for scores save/load

#43 (comment)

Неплохо бы было сделать тест, когда в модель добавляются все скоры, она тренируется, сохраняется, загружается, снова тренируется, и все скоры успешно обновляются (то есть они не FrozenScore)

Dataset.load: only once for each dataset

загрузка датасета — в несколько раз замедляет загрузку моделей с диска (при том что от скора нам нужна только значения сейчас). Кажется, для SO это разница между "три часа" и "меньше пяти минут"

...

лучше мб какой-то глобальный флаг включить?

ещё вариант делать загрузку датасета "лениво" (т.е. просто кэшировать его по сути)
по-хорошему вообще это должен быть референс на один и тот же объект, а не куча клонов

Про один инстанс – это в точку! Чё-то этот момент пропустили при оформлении загрузки скоров (что "сколько скоров – столько раз и датасет поднимется"). В идеале должно быть так. При обучении они ведь один датасет используют

Возможно это вообще на стороне топикнета надо чинить? Как в джаве строки интернируются

Да, возможно... То есть при Dataset.load(path) можно не тупо загружать, а проверять, не загружен ли уже датасет с таким path. И если да, то возвращать его. Единственное, не совсем ясно, что делать, когда например, датасет загрузили и, скажем, словарь отфильтровали. Отдавать при Dataset.load изменённый датасет (с фильтрованным словарём), или загружать с нуля с диска?

Current workaround: https://github.com/machine-intelligence-laboratory/OptimalNumberOfTopics/blob/fix/load_models_hack/topnum/scores/base_custom_score.py#L13

RPC

а можешь сделать RPC? это по формуле
(perplexity(t2) - perplexity(t1))/(t2-t1)
где t_i — это число тем на графике, в соседних точках

Big data mode

  • remove all dataset._data from code
  • add tests for keep_in_memory=False
  • add keep_in_memory param in some dataset-related places (if needed)

Stability method: speed up subdatasets creation

with open(subsample_dataset_file_path, 'w') as f:
    writer = csv.writer(f)
    writer.writerow(dataset._data.columns)

    document_df_rows = dataset._data.iloc[current_document_indices, :]

    # TODO: check this!
    if not dataset._small_data:
        document_df_rows = document_df_row.compute().iloc[current_document_indices]

    writer.writerows([r.to_list() for _, r in document_df_rows.iterrows()])

list index out of range

Запускаю питоновский код из примера на своих данных и получаю следующую ошибку:

    194         document_words = self._get_words(document)
    195         top_words = self._get_top_words(topic, word_topic_relatednesses)
--> 196         top_words_cooccurrences = self._get_top_words_cooccurrences(top_words, document_words)
    197 
    198         return self._compute_newman_coherence(

~/Data Science/Notebooks/topnum/topnum/scores/sophisticated_toptok_coherence_score.py in _get_top_words_cooccurrences(self, top_words, document_words)
    264         self._update_cooccurrences(cooccurrences, top_words, words_num_appearances_in_window)
    265 
--> 266         last_word_in_window = start_window[0]
    267 
    268         for w in document_words[self._window:]:

IndexError: list index out of range

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.