bertrend 0.3.14__tar.gz → 0.3.16__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (217) hide show
  1. {bertrend-0.3.14 → bertrend-0.3.16}/PKG-INFO +1 -1
  2. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/BERTrend.py +15 -1
  3. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/prospective_demo/.streamlit/secrets.toml +1 -0
  4. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/prospective_demo/__init__.py +1 -1
  5. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/prospective_demo/i18n_translations.py +2 -2
  6. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/prospective_demo/models_info.py +11 -0
  7. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/prospective_demo/process_new_data.py +44 -12
  8. bertrend-0.3.16/bertrend_apps/tests/__init__.py +4 -0
  9. bertrend-0.3.16/bertrend_apps/tests/test_process_new_data.py +679 -0
  10. {bertrend-0.3.14 → bertrend-0.3.16}/pyproject.toml +1 -1
  11. {bertrend-0.3.14 → bertrend-0.3.16}/AUTHORS.txt +0 -0
  12. {bertrend-0.3.14 → bertrend-0.3.16}/LICENSE.md +0 -0
  13. {bertrend-0.3.14 → bertrend-0.3.16}/README.md +0 -0
  14. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/BERTopicModel.py +0 -0
  15. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/__init__.py +0 -0
  16. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/article_scoring/__init__.py +0 -0
  17. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/article_scoring/article_scoring.py +0 -0
  18. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/article_scoring/prompts.py +0 -0
  19. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/article_scoring/scoring_agent.py +0 -0
  20. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/config/bertopic_default_config.toml +0 -0
  21. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/config/bertrend_default_config.toml +0 -0
  22. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/config/parameters.py +0 -0
  23. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/config/services_default_config.toml +0 -0
  24. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/demos/__init__.py +0 -0
  25. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/demos/demos_utils/__init__.py +0 -0
  26. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/demos/demos_utils/data_loading_component.py +0 -0
  27. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/demos/demos_utils/embed_documents_component.py +0 -0
  28. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/demos/demos_utils/i18n.py +0 -0
  29. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/demos/demos_utils/i18n_translations.py +0 -0
  30. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/demos/demos_utils/icons.py +0 -0
  31. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/demos/demos_utils/parameters_component.py +0 -0
  32. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/demos/demos_utils/state_utils.py +0 -0
  33. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/demos/start_summarizer_app.sh +0 -0
  34. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/demos/start_topic_analysis_app.sh +0 -0
  35. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/demos/start_weak_signals_app.sh +0 -0
  36. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/demos/streamlit_components/__init__.py +0 -0
  37. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/demos/streamlit_components/clickable_df_component.py +0 -0
  38. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/demos/streamlit_components/input_with_pills_components.py +0 -0
  39. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/demos/summarization/__init__.py +0 -0
  40. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/demos/summarization/summarizer_app.py +0 -0
  41. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/demos/topic_analysis/.streamlit/config.toml +0 -0
  42. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/demos/topic_analysis/__init__.py +0 -0
  43. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/demos/topic_analysis/app.py +0 -0
  44. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/demos/topic_analysis/app_utils.py +0 -0
  45. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/demos/topic_analysis/demo_pages/__init__.py +0 -0
  46. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/demos/topic_analysis/demo_pages/explore_topics.py +0 -0
  47. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/demos/topic_analysis/demo_pages/newsletters_generation.py +0 -0
  48. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/demos/topic_analysis/demo_pages/temporal_visualizations.py +0 -0
  49. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/demos/topic_analysis/demo_pages/topic_visualizations.py +0 -0
  50. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/demos/topic_analysis/demo_pages/training_page.py +0 -0
  51. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/demos/topic_analysis/i18n_translations.py +0 -0
  52. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/demos/weak_signals/.streamlit/config.toml +0 -0
  53. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/demos/weak_signals/__init__.py +0 -0
  54. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/demos/weak_signals/app.py +0 -0
  55. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/demos/weak_signals/i18n_translations.py +0 -0
  56. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/demos/weak_signals/visualizations_utils.py +0 -0
  57. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/llm_utils/__init__.py +0 -0
  58. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/llm_utils/agent_utils.py +0 -0
  59. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/llm_utils/newsletter.css +0 -0
  60. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/llm_utils/newsletter_features.py +0 -0
  61. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/llm_utils/newsletter_model.py +0 -0
  62. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/llm_utils/newsletter_outlook_template.html +0 -0
  63. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/llm_utils/newsletter_template.html +0 -0
  64. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/llm_utils/openai_client.py +0 -0
  65. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/llm_utils/prompts.py +0 -0
  66. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/metrics/__init__.py +0 -0
  67. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/metrics/temporal_metrics_embedding.py +0 -0
  68. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/metrics/topic_metrics.py +0 -0
  69. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/resources/common_ngrams.json +0 -0
  70. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/resources/stopwords-en.json +0 -0
  71. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/resources/stopwords-fr.json +0 -0
  72. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/resources/stopwords-rte.json +0 -0
  73. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/services/__init__.py +0 -0
  74. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/services/authentication.py +0 -0
  75. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/services/embedding_client.py +0 -0
  76. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/services/embedding_server/README.md +0 -0
  77. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/services/embedding_server/__init__.py +0 -0
  78. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/services/embedding_server/bertrend_client_registry.json +0 -0
  79. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/services/embedding_server/config/default_config.toml +0 -0
  80. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/services/embedding_server/config/settings.py +0 -0
  81. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/services/embedding_server/main.py +0 -0
  82. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/services/embedding_server/models.py +0 -0
  83. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/services/embedding_server/routers/__init__.py +0 -0
  84. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/services/embedding_server/routers/authentication.py +0 -0
  85. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/services/embedding_server/routers/embeddings.py +0 -0
  86. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/services/embedding_server/routers/info.py +0 -0
  87. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/services/embedding_server/security.py +0 -0
  88. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/services/embedding_server/start.py +0 -0
  89. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/services/embedding_server/status.py +0 -0
  90. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/services/embedding_server/stop.py +0 -0
  91. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/services/embedding_service.py +0 -0
  92. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/services/summarizer.py +0 -0
  93. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/services/summary/__init__.py +0 -0
  94. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/services/summary/abstractive_summarizer.py +0 -0
  95. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/services/summary/chatgpt_summarizer.py +0 -0
  96. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/services/summary/extractive_summarizer.py +0 -0
  97. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/services/summary/lexrank.py +0 -0
  98. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/services/summary/prompts.py +0 -0
  99. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/tests/README_integration_tests.md +0 -0
  100. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/tests/__init__.py +0 -0
  101. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/tests/conftest.py +0 -0
  102. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/tests/test_abstractive_summarizer.py +0 -0
  103. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/tests/test_agent_utils.py +0 -0
  104. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/tests/test_article_scoring.py +0 -0
  105. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/tests/test_article_scoring_models.py +0 -0
  106. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/tests/test_bertrend.py +0 -0
  107. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/tests/test_cache_utils.py +0 -0
  108. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/tests/test_chatgpt_summarizer.py +0 -0
  109. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/tests/test_config_utils.py +0 -0
  110. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/tests/test_data_loading.py +0 -0
  111. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/tests/test_data_structure.py +0 -0
  112. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/tests/test_embedding_client.py +0 -0
  113. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/tests/test_extractive_summarizer.py +0 -0
  114. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/tests/test_installation.py +0 -0
  115. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/tests/test_integration.py +0 -0
  116. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/tests/test_mail_utils.py +0 -0
  117. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/tests/test_newsletter_features.py +0 -0
  118. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/tests/test_newsletter_model.py +0 -0
  119. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/tests/test_openai_client.py +0 -0
  120. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/tests/test_representative_docs.py +0 -0
  121. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/tests/test_summarizer.py +0 -0
  122. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/tests/test_temporal_metrics_embedding.py +0 -0
  123. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/tests/test_topic_description.py +0 -0
  124. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/tests/test_topic_metrics.py +0 -0
  125. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/tests/test_topic_model.py +0 -0
  126. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/tests/test_trend_analysis_data_structure.py +0 -0
  127. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/tests/test_trend_analysis_prompts.py +0 -0
  128. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/tests/test_trend_analysis_visualizations.py +0 -0
  129. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/tests/test_trend_analysis_weak_signals.py +0 -0
  130. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/tests/test_utils_init.py +0 -0
  131. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/tests/test_visualizations.py +0 -0
  132. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/topic_analysis/__init__.py +0 -0
  133. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/topic_analysis/data_structure.py +0 -0
  134. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/topic_analysis/prompts.py +0 -0
  135. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/topic_analysis/representative_docs.py +0 -0
  136. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/topic_analysis/topic_description.py +0 -0
  137. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/topic_analysis/visualizations.py +0 -0
  138. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/trend_analysis/__init__.py +0 -0
  139. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/trend_analysis/data_structure.py +0 -0
  140. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/trend_analysis/prompts.py +0 -0
  141. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/trend_analysis/signal_llm_template_en.html +0 -0
  142. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/trend_analysis/signal_llm_template_fr.html +0 -0
  143. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/trend_analysis/visualizations.py +0 -0
  144. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/trend_analysis/weak_signals.py +0 -0
  145. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/utils/__init__.py +0 -0
  146. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/utils/cache_utils.py +0 -0
  147. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/utils/config_utils.py +0 -0
  148. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend/utils/data_loading.py +0 -0
  149. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/__init__.py +0 -0
  150. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/common/__init__.py +0 -0
  151. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/common/crontab_utils.py +0 -0
  152. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/common/mail_utils.py +0 -0
  153. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/config/feeds/arxiv_feed.toml +0 -0
  154. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/config/feeds/decarbonation_feed.toml +0 -0
  155. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/config/feeds/llm_en_feed.toml +0 -0
  156. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/config/feeds/llm_feed.toml +0 -0
  157. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/config/feeds/nlp_feed.toml +0 -0
  158. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/config/feeds/rte_feed.toml +0 -0
  159. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/config/newsletters/arxiv_newsletter_from_last.toml +0 -0
  160. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/config/newsletters/decarbonation_newsletter_from_last.toml +0 -0
  161. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/config/newsletters/decarbonation_newsletter_from_scratch.toml +0 -0
  162. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/config/newsletters/llm_en_newsletter_from_last.toml +0 -0
  163. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/config/newsletters/llm_newsletter_from_last.toml +0 -0
  164. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/config/newsletters/nlp_newsletter_from_last.toml +0 -0
  165. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/config/newsletters/rte_newsletter_from_last.toml +0 -0
  166. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/config/newsletters/rte_newsletter_from_scratch.toml +0 -0
  167. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/data_provider/__init__.py +0 -0
  168. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/data_provider/__main__.py +0 -0
  169. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/data_provider/arxiv_provider.py +0 -0
  170. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/data_provider/atom_feed_provider.py +0 -0
  171. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/data_provider/bing_news_provider.py +0 -0
  172. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/data_provider/data_provider.py +0 -0
  173. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/data_provider/google_news_provider.py +0 -0
  174. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/data_provider/newscatcher_provider.py +0 -0
  175. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/data_provider/utils.py +0 -0
  176. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/exploration/__init__.py +0 -0
  177. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/exploration/curebot/.streamlit/config.toml +0 -0
  178. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/exploration/curebot/__init__.py +0 -0
  179. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/exploration/curebot/app.py +0 -0
  180. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/exploration/curebot/app_utils.py +0 -0
  181. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/exploration/curebot/config.toml +0 -0
  182. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/exploration/curebot/import_extraction_article.ipynb +0 -0
  183. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/exploration/curebot/prompts.py +0 -0
  184. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/exploration/curebot/start_newsletter_generator.sh +0 -0
  185. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/exploration/curebot/tabs/tab1.py +0 -0
  186. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/exploration/curebot/tabs/tab2.py +0 -0
  187. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/exploration/curebot/tabs/tab3.py +0 -0
  188. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/exploration/dataviz/Main_page.py +0 -0
  189. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/exploration/dataviz/__init__.py +0 -0
  190. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/exploration/dataviz/pages/1_Data_feeds.py +0 -0
  191. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/exploration/geolocalization/__init__.py +0 -0
  192. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/exploration/geolocalization/entity_utils.py +0 -0
  193. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/exploration/geolocalization/spacy/__init__.py +0 -0
  194. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/exploration/geolocalization/spacy/common_factory.py +0 -0
  195. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/exploration/geolocalization/spacy/dbpedia.py +0 -0
  196. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/exploration/geolocalization/spacy/nlp.config +0 -0
  197. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/exploration/geolocalization/spacy/utils.py +0 -0
  198. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/install_feeds_and_newsletters.py +0 -0
  199. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/newsletters/__init__.py +0 -0
  200. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/newsletters/__main__.py +0 -0
  201. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/prospective_demo/.streamlit/config.toml +0 -0
  202. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/prospective_demo/app.py +0 -0
  203. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/prospective_demo/authentication.py +0 -0
  204. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/prospective_demo/dashboard_analysis.py +0 -0
  205. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/prospective_demo/dashboard_common.py +0 -0
  206. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/prospective_demo/dashboard_signals.py +0 -0
  207. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/prospective_demo/data_model.py +0 -0
  208. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/prospective_demo/detailed_report_template.html +0 -0
  209. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/prospective_demo/feeds_common.py +0 -0
  210. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/prospective_demo/feeds_config.py +0 -0
  211. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/prospective_demo/feeds_data.py +0 -0
  212. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/prospective_demo/llm_utils.py +0 -0
  213. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/prospective_demo/perf_utils.py +0 -0
  214. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/prospective_demo/report_generation.py +0 -0
  215. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/prospective_demo/start_demo.sh +0 -0
  216. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/start_apps.sh +0 -0
  217. {bertrend-0.3.14 → bertrend-0.3.16}/bertrend_apps/stop_apps.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bertrend
3
- Version: 0.3.14
3
+ Version: 0.3.16
4
4
  Summary: BERTrend analyses topic evolution over time using state-of-the-art transformer models: topic modelling and LLM
5
5
  License: LICENSE.md
6
6
  License-File: AUTHORS.txt
@@ -282,6 +282,9 @@ class BERTrend:
282
282
  (period, group) for period, group in grouped_data.items() if not group.empty
283
283
  ]
284
284
 
285
+ failed_periods = []
286
+ successful_periods = []
287
+
285
288
  for i, (period, group) in enumerate(non_empty_groups):
286
289
  try:
287
290
  logger.info(f"Training topic model {i+1}/{len(non_empty_groups)}...")
@@ -308,15 +311,26 @@ class BERTrend:
308
311
  self.last_topic_model_timestamp = period
309
312
 
310
313
  logger.debug(f"Successfully processed period: {period}")
314
+ successful_periods.append(period)
311
315
 
312
316
  except Exception as e:
313
317
  logger.error(f"Error processing period {period}: {e}")
314
318
  logger.exception("Traceback:")
319
+ failed_periods.append(period)
315
320
  continue # TODO: better error handling
316
321
 
317
322
  self._is_fitted = True
318
323
 
319
- logger.success("Finished training all topic models")
324
+ if failed_periods:
325
+ logger.error(
326
+ f"Training completed with failures for {len(failed_periods)} periods: {failed_periods}"
327
+ )
328
+ if successful_periods:
329
+ logger.warning(
330
+ f"Successfully trained topic models for {len(successful_periods)} periods: {successful_periods}"
331
+ )
332
+ else:
333
+ logger.success("Finished training all topic models")
320
334
 
321
335
  def merge_models_with(
322
336
  self,
@@ -11,3 +11,4 @@ celine = "celine"
11
11
  lucas = "lucas"
12
12
  laurent = "laurent"
13
13
  diese = "diese"
14
+ test = "test"
@@ -33,7 +33,7 @@ DEFAULT_ANALYSIS_CFG = {
33
33
  "model_config": {
34
34
  "granularity": DEFAULT_GRANULARITY,
35
35
  "window_size": DEFAULT_WINDOW_SIZE,
36
- "language": "French",
36
+ "language": "English",
37
37
  "split_by_paragraph": True,
38
38
  },
39
39
  "analysis_config": {
@@ -383,8 +383,8 @@ TRANSLATIONS = {
383
383
  "fr": "Retenir seulement les articles de meilleure qualité",
384
384
  },
385
385
  "evaluate_articles_quality_help": {
386
- "en": "Score each article using a LLM-based approach ($$) and keep only high-quality articles",
387
- "fr": "Evalue chaque article avec une approche basée sur des LLM ($$) et ne retient que les articles de meilleure qualité",
386
+ "en": "Score each article using a LLM-based approach (💶) and keep only high-quality articles",
387
+ "fr": "Evalue chaque article avec une approche basée sur des LLM (💶) et ne retient que les articles de meilleure qualité",
388
388
  },
389
389
  "minimum_quality_level": {
390
390
  "en": "Minimum quality level",
@@ -60,7 +60,17 @@ def models_monitoring():
60
60
  try:
61
61
  load_model_config(model_id)
62
62
  except Exception:
63
+ # create default config if not found
63
64
  st.session_state.model_analysis_cfg[model_id] = DEFAULT_ANALYSIS_CFG
65
+ # align language with the feed
66
+ st.session_state.model_analysis_cfg[model_id]["model_config"][
67
+ "language"
68
+ ] = (
69
+ "French"
70
+ if st.session_state.user_feeds[model_id]["data-feed"]["language"]
71
+ == "fr"
72
+ else "English"
73
+ )
64
74
  # special case for split by paragraphs
65
75
  st.session_state.model_analysis_cfg[model_id]["model_config"][
66
76
  "split_by_paragraph"
@@ -68,6 +78,7 @@ def models_monitoring():
68
78
  st.session_state.user_feeds[model_id]["data-feed"]["provider"]
69
79
  != "arxiv"
70
80
  )
81
+ save_model_config(model_id, st.session_state.model_analysis_cfg[model_id])
71
82
 
72
83
  list_models = get_models_info(model_id)
73
84
  displayed_list.append(
@@ -4,6 +4,7 @@
4
4
  # This file is part of BERTrend.
5
5
  from datetime import timedelta
6
6
  from pathlib import Path
7
+ from concurrent.futures import ThreadPoolExecutor, as_completed
7
8
 
8
9
  import pandas as pd
9
10
  import typer
@@ -78,7 +79,7 @@ def get_relevant_model_config(
78
79
  window_size = model_analysis_cfg["model_config"]["window_size"]
79
80
  language = model_analysis_cfg["model_config"]["language"]
80
81
  if language not in ["French", "English"]:
81
- language = "French"
82
+ language = "English"
82
83
  return granularity, window_size, language
83
84
 
84
85
 
@@ -89,6 +90,7 @@ def generate_llm_interpretation(
89
90
  df_name: str,
90
91
  output_path: Path,
91
92
  top_k: int = DEFAULT_TOP_K,
93
+ max_workers: int = 5,
92
94
  ):
93
95
  """
94
96
  Generate detailed analysis for the top k topics using parallel processing.
@@ -100,23 +102,53 @@ def generate_llm_interpretation(
100
102
  df_name: Name of the DataFrame for output
101
103
  output_path: Path to save the results
102
104
  top_k: Number of top topics to analyze
105
+ max_workers: Maximum number of concurrent workers for parallel processing
103
106
  """
104
107
 
105
- interpretation = []
106
- for topic in df.sort_values(by=["Latest_Popularity"], ascending=False).head(top_k)[
107
- "Topic"
108
- ]:
109
- summary, analysis = analyze_signal(bertrend, topic, reference_timestamp)
110
- if not summary or not analysis:
111
- logger.warning(f"Skipping topic {topic} as analysis of signal failed.")
112
- continue
113
- interpretation.append(
114
- {
108
+ # Get topics sorted by popularity
109
+ topics = (
110
+ df.sort_values(by=["Latest_Popularity"], ascending=False)
111
+ .head(top_k)["Topic"]
112
+ .tolist()
113
+ )
114
+
115
+ def process_topic(topic):
116
+ """Process a single topic and return the result or None if failed"""
117
+ try:
118
+ summary, analysis = analyze_signal(bertrend, topic, reference_timestamp)
119
+ if not summary or not analysis:
120
+ logger.warning(f"Skipping topic {topic} as analysis of signal failed.")
121
+ return None
122
+ return {
115
123
  "topic": topic,
116
124
  "summary": summary.model_dump_json(),
117
125
  "analysis": analysis.model_dump_json(),
118
126
  }
119
- )
127
+ except Exception as e:
128
+ logger.error(f"Error processing topic {topic}: {str(e)}")
129
+ return None
130
+
131
+ interpretation = []
132
+
133
+ # Use ThreadPoolExecutor for parallel processing of I/O-bound analyze_signal calls
134
+ with ThreadPoolExecutor(max_workers=max_workers) as executor:
135
+ # Submit all topic analysis tasks
136
+ future_to_topic = {
137
+ executor.submit(process_topic, topic): topic for topic in topics
138
+ }
139
+
140
+ # Collect results as they complete
141
+ for future in as_completed(future_to_topic):
142
+ topic = future_to_topic[future]
143
+ try:
144
+ result = future.result()
145
+ if result:
146
+ interpretation.append(result)
147
+ except Exception as e:
148
+ logger.error(f"Exception occurred for topic {topic}: {str(e)}")
149
+
150
+ # Sort results by topic number to maintain consistent output order
151
+ interpretation.sort(key=lambda x: x["topic"])
120
152
 
121
153
  # Save interpretation
122
154
  output_file_name = output_path / f"{df_name}_interpretation.jsonl"
@@ -0,0 +1,4 @@
1
+ # Copyright (c) 2024, RTE (https://www.rte-france.com)
2
+ # See AUTHORS.txt
3
+ # SPDX-License-Identifier: MPL-2.0
4
+ # This file is part of BERTrend.