bertrend 0.3.4__tar.gz → 0.3.6__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 (208) hide show
  1. {bertrend-0.3.4 → bertrend-0.3.6}/PKG-INFO +5 -4
  2. {bertrend-0.3.4 → bertrend-0.3.6}/README.md +1 -1
  3. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/config/bertopic_default_config.toml +1 -1
  4. bertrend-0.3.6/bertrend/demos/start_topic_analysis_app.sh +14 -0
  5. bertrend-0.3.6/bertrend/demos/start_weak_signals_app.sh +14 -0
  6. bertrend-0.3.6/bertrend/demos/topic_analysis/.streamlit/config.toml +6 -0
  7. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/demos/topic_analysis/demo_pages/explore_topics.py +3 -1
  8. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/demos/topic_analysis/demo_pages/newsletters_generation.py +8 -0
  9. bertrend-0.3.6/bertrend/demos/weak_signals/.streamlit/config.toml +6 -0
  10. bertrend-0.3.6/bertrend/services/embedding_server/README.md +31 -0
  11. bertrend-0.3.6/bertrend/services/embedding_server/config/default_config.toml +7 -0
  12. bertrend-0.3.6/bertrend/services/embedding_server/config/settings.py +34 -0
  13. bertrend-0.3.6/bertrend/services/embedding_server/main.py +14 -0
  14. bertrend-0.3.6/bertrend/services/embedding_server/models.py +12 -0
  15. bertrend-0.3.6/bertrend/services/embedding_server/routers/authentication.py +45 -0
  16. bertrend-0.3.6/bertrend/services/embedding_server/routers/embeddings.py +39 -0
  17. bertrend-0.3.6/bertrend/services/embedding_server/routers/info.py +29 -0
  18. bertrend-0.3.6/bertrend/services/embedding_server/security.py +368 -0
  19. bertrend-0.3.6/bertrend/services/embedding_server/start.py +26 -0
  20. bertrend-0.3.6/bertrend/services/embedding_server/status.py +30 -0
  21. bertrend-0.3.6/bertrend/services/embedding_server/stop.py +14 -0
  22. bertrend-0.3.6/bertrend/tests/test_installation.py +103 -0
  23. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/trend_analysis/data_structure.py +1 -1
  24. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/trend_analysis/prompts.py +84 -7
  25. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/trend_analysis/weak_signals.py +1 -1
  26. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/utils/data_loading.py +4 -0
  27. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/common/crontab_utils.py +28 -3
  28. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/data_provider/data_provider.py +12 -8
  29. bertrend-0.3.6/bertrend_apps/exploration/curebot/.streamlit/config.toml +6 -0
  30. bertrend-0.3.6/bertrend_apps/exploration/curebot/__init__.py +4 -0
  31. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/exploration/curebot/app_utils.py +21 -6
  32. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/exploration/curebot/prompts.py +1 -1
  33. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/exploration/curebot/start_newsletter_generator.sh +6 -1
  34. bertrend-0.3.6/bertrend_apps/newsletters/__init__.py +4 -0
  35. bertrend-0.3.6/bertrend_apps/prospective_demo/.streamlit/config.toml +6 -0
  36. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/prospective_demo/app.py +2 -2
  37. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/prospective_demo/feeds_config.py +60 -26
  38. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/prospective_demo/feeds_data.py +17 -11
  39. bertrend-0.3.6/bertrend_apps/prospective_demo/i18n_translations.py +380 -0
  40. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/prospective_demo/models_info.py +77 -54
  41. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/prospective_demo/report_generation.py +25 -24
  42. bertrend-0.3.6/bertrend_apps/prospective_demo/start_demo.sh +16 -0
  43. {bertrend-0.3.4 → bertrend-0.3.6}/pyproject.toml +4 -3
  44. bertrend-0.3.4/bertrend/demos/start_topic_analysis_app.sh +0 -9
  45. bertrend-0.3.4/bertrend/demos/start_weak_signals_app.sh +0 -9
  46. bertrend-0.3.4/bertrend/tests/test_installation.py +0 -181
  47. bertrend-0.3.4/bertrend_apps/exploration/curebot/old_veille_analyse.py +0 -298
  48. bertrend-0.3.4/bertrend_apps/prospective_demo/.streamlit/config.toml +0 -3
  49. bertrend-0.3.4/bertrend_apps/prospective_demo/i18n_translations.py +0 -91
  50. bertrend-0.3.4/bertrend_apps/prospective_demo/start_demo.sh +0 -9
  51. {bertrend-0.3.4 → bertrend-0.3.6}/AUTHORS.txt +0 -0
  52. {bertrend-0.3.4 → bertrend-0.3.6}/LICENSE.md +0 -0
  53. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/BERTopicModel.py +0 -0
  54. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/BERTrend.py +0 -0
  55. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/__init__.py +0 -0
  56. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/config/bertrend_default_config.toml +0 -0
  57. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/config/parameters.py +0 -0
  58. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/config/services_default_config.toml +0 -0
  59. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/demos/__init__.py +0 -0
  60. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/demos/demos_utils/__init__.py +0 -0
  61. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/demos/demos_utils/data_loading_component.py +0 -0
  62. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/demos/demos_utils/embed_documents_component.py +0 -0
  63. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/demos/demos_utils/i18n.py +0 -0
  64. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/demos/demos_utils/i18n_translations.py +0 -0
  65. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/demos/demos_utils/icons.py +0 -0
  66. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/demos/demos_utils/parameters_component.py +0 -0
  67. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/demos/demos_utils/state_utils.py +0 -0
  68. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/demos/start_summarizer_app.sh +0 -0
  69. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/demos/summarization/__init__.py +0 -0
  70. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/demos/summarization/summarizer_app.py +0 -0
  71. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/demos/topic_analysis/__init__.py +0 -0
  72. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/demos/topic_analysis/app.py +0 -0
  73. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/demos/topic_analysis/app_utils.py +0 -0
  74. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/demos/topic_analysis/demo_pages/__init__.py +0 -0
  75. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/demos/topic_analysis/demo_pages/temporal_visualizations.py +0 -0
  76. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/demos/topic_analysis/demo_pages/topic_visualizations.py +0 -0
  77. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/demos/topic_analysis/demo_pages/training_page.py +0 -0
  78. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/demos/topic_analysis/i18n_translations.py +0 -0
  79. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/demos/weak_signals/__init__.py +0 -0
  80. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/demos/weak_signals/app.py +0 -0
  81. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/demos/weak_signals/i18n_translations.py +0 -0
  82. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/demos/weak_signals/visualizations_utils.py +0 -0
  83. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/llm_utils/__init__.py +0 -0
  84. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/llm_utils/newsletter.css +0 -0
  85. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/llm_utils/newsletter_features.py +0 -0
  86. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/llm_utils/openai_client.py +0 -0
  87. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/llm_utils/prompts.py +0 -0
  88. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/metrics/__init__.py +0 -0
  89. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/metrics/temporal_metrics_embedding.py +0 -0
  90. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/metrics/topic_metrics.py +0 -0
  91. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/resources/common_ngrams.json +0 -0
  92. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/resources/stopwords-en.json +0 -0
  93. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/resources/stopwords-fr.json +0 -0
  94. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/resources/stopwords-rte.json +0 -0
  95. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/services/__init__.py +0 -0
  96. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/services/authentication.py +0 -0
  97. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/services/embedding_client.py +0 -0
  98. {bertrend-0.3.4/bertrend/services/summary → bertrend-0.3.6/bertrend/services/embedding_server}/__init__.py +0 -0
  99. {bertrend-0.3.4/bertrend/tests → bertrend-0.3.6/bertrend/services/embedding_server/routers}/__init__.py +0 -0
  100. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/services/embedding_service.py +0 -0
  101. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/services/summarizer.py +0 -0
  102. {bertrend-0.3.4/bertrend/topic_analysis → bertrend-0.3.6/bertrend/services/summary}/__init__.py +0 -0
  103. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/services/summary/abstractive_summarizer.py +0 -0
  104. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/services/summary/chatgpt_summarizer.py +0 -0
  105. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/services/summary/extractive_summarizer.py +0 -0
  106. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/services/summary/lexrank.py +0 -0
  107. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/services/summary/prompts.py +0 -0
  108. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/tests/README_integration_tests.md +0 -0
  109. {bertrend-0.3.4/bertrend/trend_analysis → bertrend-0.3.6/bertrend/tests}/__init__.py +0 -0
  110. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/tests/conftest.py +0 -0
  111. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/tests/test_abstractive_summarizer.py +0 -0
  112. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/tests/test_bertrend.py +0 -0
  113. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/tests/test_cache_utils.py +0 -0
  114. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/tests/test_chatgpt_summarizer.py +0 -0
  115. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/tests/test_config_utils.py +0 -0
  116. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/tests/test_data_loading.py +0 -0
  117. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/tests/test_data_structure.py +0 -0
  118. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/tests/test_embedding_client.py +0 -0
  119. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/tests/test_extractive_summarizer.py +0 -0
  120. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/tests/test_integration.py +0 -0
  121. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/tests/test_newsletter_features.py +0 -0
  122. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/tests/test_openai_client.py +0 -0
  123. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/tests/test_representative_docs.py +0 -0
  124. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/tests/test_summarizer.py +0 -0
  125. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/tests/test_temporal_metrics_embedding.py +0 -0
  126. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/tests/test_topic_description.py +0 -0
  127. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/tests/test_topic_metrics.py +0 -0
  128. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/tests/test_topic_model.py +0 -0
  129. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/tests/test_trend_analysis_data_structure.py +0 -0
  130. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/tests/test_trend_analysis_prompts.py +0 -0
  131. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/tests/test_trend_analysis_visualizations.py +0 -0
  132. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/tests/test_trend_analysis_weak_signals.py +0 -0
  133. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/tests/test_utils_init.py +0 -0
  134. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/tests/test_visualizations.py +0 -0
  135. {bertrend-0.3.4/bertrend_apps → bertrend-0.3.6/bertrend/topic_analysis}/__init__.py +0 -0
  136. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/topic_analysis/data_structure.py +0 -0
  137. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/topic_analysis/prompts.py +0 -0
  138. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/topic_analysis/representative_docs.py +0 -0
  139. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/topic_analysis/topic_description.py +0 -0
  140. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/topic_analysis/visualizations.py +0 -0
  141. {bertrend-0.3.4/bertrend_apps/common → bertrend-0.3.6/bertrend/trend_analysis}/__init__.py +0 -0
  142. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/trend_analysis/signal_llm_template_en.html +0 -0
  143. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/trend_analysis/signal_llm_template_fr.html +0 -0
  144. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/trend_analysis/visualizations.py +0 -0
  145. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/utils/__init__.py +0 -0
  146. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/utils/cache_utils.py +0 -0
  147. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend/utils/config_utils.py +0 -0
  148. {bertrend-0.3.4/bertrend_apps/exploration → bertrend-0.3.6/bertrend_apps}/__init__.py +0 -0
  149. {bertrend-0.3.4/bertrend_apps/exploration/curebot → bertrend-0.3.6/bertrend_apps/common}/__init__.py +0 -0
  150. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/common/mail_utils.py +0 -0
  151. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/config/feeds/arxiv_feed.toml +0 -0
  152. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/config/feeds/decarbonation_feed.toml +0 -0
  153. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/config/feeds/llm_en_feed.toml +0 -0
  154. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/config/feeds/llm_feed.toml +0 -0
  155. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/config/feeds/nlp_feed.toml +0 -0
  156. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/config/feeds/rte_feed.toml +0 -0
  157. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/config/gmail_credentials.json +0 -0
  158. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/config/newsletters/arxiv_newsletter_from_last.toml +0 -0
  159. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/config/newsletters/arxiv_newsletter_from_scratch.toml +0 -0
  160. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/config/newsletters/decarbonation_newsletter_from_last.toml +0 -0
  161. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/config/newsletters/decarbonation_newsletter_from_scratch.toml +0 -0
  162. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/config/newsletters/llm_en_newsletter_from_last.toml +0 -0
  163. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/config/newsletters/llm_newsletter_from_last.toml +0 -0
  164. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/config/newsletters/nlp_newsletter_from_last.toml +0 -0
  165. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/config/newsletters/rte_newsletter_from_last.toml +0 -0
  166. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/config/newsletters/rte_newsletter_from_scratch.toml +0 -0
  167. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/data_provider/__init__.py +0 -0
  168. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/data_provider/__main__.py +0 -0
  169. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/data_provider/arxiv_provider.py +0 -0
  170. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/data_provider/atom_feed_provider.py +0 -0
  171. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/data_provider/bing_news_provider.py +0 -0
  172. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/data_provider/google_news_provider.py +0 -0
  173. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/data_provider/newscatcher_provider.py +0 -0
  174. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/data_provider/utils.py +0 -0
  175. {bertrend-0.3.4/bertrend_apps/newsletters → bertrend-0.3.6/bertrend_apps/exploration}/__init__.py +0 -0
  176. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/exploration/curebot/app.py +0 -0
  177. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/exploration/curebot/config.toml +0 -0
  178. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/exploration/curebot/import_extraction_article.ipynb +0 -0
  179. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/exploration/curebot/tabs/tab1.py +0 -0
  180. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/exploration/curebot/tabs/tab2.py +0 -0
  181. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/exploration/curebot/tabs/tab3.py +0 -0
  182. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/exploration/dataviz/Main_page.py +0 -0
  183. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/exploration/dataviz/__init__.py +0 -0
  184. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/exploration/dataviz/pages/1_Data_feeds.py +0 -0
  185. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/exploration/geolocalization/__init__.py +0 -0
  186. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/exploration/geolocalization/entity_utils.py +0 -0
  187. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/exploration/geolocalization/spacy/__init__.py +0 -0
  188. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/exploration/geolocalization/spacy/common_factory.py +0 -0
  189. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/exploration/geolocalization/spacy/dbpedia.py +0 -0
  190. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/exploration/geolocalization/spacy/nlp.config +0 -0
  191. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/exploration/geolocalization/spacy/utils.py +0 -0
  192. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/install_feeds_and_newsletters.py +0 -0
  193. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/newsletters/__main__.py +0 -0
  194. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/prospective_demo/.streamlit/secrets.toml +0 -0
  195. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/prospective_demo/__init__.py +0 -0
  196. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/prospective_demo/authentication.py +0 -0
  197. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/prospective_demo/dashboard_analysis.py +0 -0
  198. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/prospective_demo/dashboard_common.py +0 -0
  199. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/prospective_demo/dashboard_signals.py +0 -0
  200. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/prospective_demo/feeds_common.py +0 -0
  201. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/prospective_demo/llm_utils.py +0 -0
  202. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/prospective_demo/perf_utils.py +0 -0
  203. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/prospective_demo/process_new_data.py +0 -0
  204. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/prospective_demo/report_template.html +0 -0
  205. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/prospective_demo/report_utils.py +0 -0
  206. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/prospective_demo/streamlit_utils.py +0 -0
  207. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/start_apps.sh +0 -0
  208. {bertrend-0.3.4 → bertrend-0.3.6}/bertrend_apps/stop_apps.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bertrend
3
- Version: 0.3.4
3
+ Version: 0.3.6
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
  Keywords: topics,BERTopic,transformers,weak signals,LLM
@@ -11,6 +11,7 @@ Maintainer-email: jerome.picault@rte-france.com
11
11
  Requires-Python: >=3.12,<4.0
12
12
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
13
13
  Provides-Extra: apps
14
+ Requires-Dist: PyJWT (>=2.10.1)
14
15
  Requires-Dist: Pyqtree (==1.0.0)
15
16
  Requires-Dist: arxiv (>=2.2.0) ; extra == "apps"
16
17
  Requires-Dist: bertopic (==0.16.2)
@@ -48,7 +49,7 @@ Requires-Dist: plotly (>=5.24.1)
48
49
  Requires-Dist: plotly-resampler (>=0.10.0)
49
50
  Requires-Dist: pygooglenews (>=0.1.3) ; extra == "apps"
50
51
  Requires-Dist: pylabeladjust (==0.1.13)
51
- Requires-Dist: pytest (>=8.3.3)
52
+ Requires-Dist: pytest (>=8.4.0)
52
53
  Requires-Dist: requests (>=2.32.3)
53
54
  Requires-Dist: scikit-learn (>=1.5.2)
54
55
  Requires-Dist: scipy (==1.12)
@@ -56,7 +57,7 @@ Requires-Dist: seaborn (>=0.13.2)
56
57
  Requires-Dist: sentence-transformers (==3.0.1)
57
58
  Requires-Dist: sentencepiece (>=0.2.0)
58
59
  Requires-Dist: starlette (>=0.46.2)
59
- Requires-Dist: streamlit (>=1.45.0)
60
+ Requires-Dist: streamlit (>=1.45.1)
60
61
  Requires-Dist: streamlit-code-editor (>=0.1.22)
61
62
  Requires-Dist: thefuzz (>=0.22.1)
62
63
  Requires-Dist: tiktoken (>=0.8.0)
@@ -259,7 +260,7 @@ We recommend using a remote embedding service (this is now the default config) a
259
260
 
260
261
  The change of configuration can be done in: [services_default_config.toml](bertrend/config/services_default_config.toml).
261
262
 
262
- An example of a very simple implementation to deploy a separate embedding service can be found here: https://github.com/rte-france/wattelse/tree/main/wattelse/api/embedding. (this implementation is compatible with our code)
263
+ An example of a very simple implementation to deploy a separate embedding service can be found here: `bertrend/services/embedding_server`
263
264
 
264
265
 
265
266
  ![parameters](docs/images/parameters.png)
@@ -186,7 +186,7 @@ We recommend using a remote embedding service (this is now the default config) a
186
186
 
187
187
  The change of configuration can be done in: [services_default_config.toml](bertrend/config/services_default_config.toml).
188
188
 
189
- An example of a very simple implementation to deploy a separate embedding service can be found here: https://github.com/rte-france/wattelse/tree/main/wattelse/api/embedding. (this implementation is compatible with our code)
189
+ An example of a very simple implementation to deploy a separate embedding service can be found here: `bertrend/services/embedding_server`
190
190
 
191
191
 
192
192
  ![parameters](docs/images/parameters.png)
@@ -30,7 +30,7 @@ prediction_data = true
30
30
 
31
31
  # CountVectorizer: https://scikit-learn.org/1.5/modules/generated/sklearn.feature_extraction.text.CountVectorizer.html
32
32
  [vectorizer_model]
33
- ngram_range = [1, 1]
33
+ ngram_range = [1, 2]
34
34
  stop_words = true # If true, will check `language` parameter and load associated stopwords file
35
35
  min_df = 2
36
36
 
@@ -0,0 +1,14 @@
1
+ #
2
+ # Copyright (c) 2024, RTE (https://www.rte-france.com)
3
+ # See AUTHORS.txt
4
+ # SPDX-License-Identifier: MPL-2.0
5
+ # This file is part of BERTrend.
6
+ #
7
+
8
+
9
+ # Set logs directory and create if not exists
10
+ export BERTREND_LOGS_DIR=$BERTREND_BASE_DIR/logs/bertrend
11
+ mkdir -p $BERTREND_LOGS_DIR
12
+
13
+ echo "Starting BERTrend Topic Analysis demo"
14
+ cd `pwd`/topic_analysis && CUDA_VISIBLE_DEVICES=0 streamlit run app.py 2>&1 | tee -a $BERTREND_LOGS_DIR/topic_analysis_demo.log
@@ -0,0 +1,14 @@
1
+ #
2
+ # Copyright (c) 2024, RTE (https://www.rte-france.com)
3
+ # See AUTHORS.txt
4
+ # SPDX-License-Identifier: MPL-2.0
5
+ # This file is part of BERTrend.
6
+ #
7
+
8
+
9
+ # Set logs directory and create if not exists
10
+ export BERTREND_LOGS_DIR=$BERTREND_BASE_DIR/logs/bertrend
11
+ mkdir -p $BERTREND_LOGS_DIR
12
+
13
+ echo "Starting BERTrend Weak Signal Analysis demo"
14
+ cd `pwd`/weak_signals && CUDA_VISIBLE_DEVICES=0 streamlit run app.py 2>&1 | tee -a $BERTREND_LOGS_DIR/weak_signals_demo.log
@@ -0,0 +1,6 @@
1
+ [theme]
2
+ primaryColor = "royalblue"
3
+ baseFontSize = 13
4
+
5
+ [server]
6
+ port = 8083
@@ -291,7 +291,9 @@ def _display_topic_description(filtered_df: pd.DataFrame):
291
291
  ):
292
292
  with st.spinner(translate("generating_description")):
293
293
  language_code = (
294
- "fr" if SessionStateManager.get("language") == "French" else "en"
294
+ "fr"
295
+ if SessionStateManager.get("internationalization_language") == "French"
296
+ else "en"
295
297
  )
296
298
  gpt_description = generate_topic_description(
297
299
  st.session_state["topic_model"],
@@ -14,6 +14,7 @@ from bertrend.demos.demos_utils.state_utils import (
14
14
  save_widget_state,
15
15
  restore_widget_state,
16
16
  register_multiple_widget,
17
+ SessionStateManager,
17
18
  )
18
19
  from bertrend.services.summary.abstractive_summarizer import AbstractiveSummarizer
19
20
  from bertrend.services.summary.chatgpt_summarizer import GPTSummarizer
@@ -48,6 +49,12 @@ def generate_newsletter_wrapper(
48
49
  else st.session_state["newsletter_nb_docs"]
49
50
  )
50
51
 
52
+ language_code = (
53
+ "fr"
54
+ if SessionStateManager.get("internationalization_language") == "French"
55
+ else "en"
56
+ )
57
+
51
58
  return generate_newsletter(
52
59
  topic_model=st.session_state["topic_model"],
53
60
  df=df,
@@ -60,6 +67,7 @@ def generate_newsletter_wrapper(
60
67
  st.session_state["summarizer_classname"]
61
68
  ],
62
69
  summary_mode=st.session_state["summary_mode"],
70
+ prompt_language=language_code,
63
71
  )
64
72
 
65
73
 
@@ -0,0 +1,6 @@
1
+ [theme]
2
+ primaryColor = "royalblue"
3
+ baseFontSize = 13
4
+
5
+ [server]
6
+ port = 8084
@@ -0,0 +1,31 @@
1
+ # How to use the embedding server
2
+
3
+ ## Launch the embedding server
4
+
5
+ - check the file `config/default_config.toml`
6
+
7
+ - run the embedding server
8
+
9
+ ```
10
+ python start.py
11
+ ```
12
+
13
+ ## Check the embedding server
14
+ Ensure the API is launched.
15
+
16
+ ```python
17
+ from bertrend.services.embedding_client import EmbeddingAPIClient
18
+
19
+ embedding_service_endpoint = "https://yourservice:1234"
20
+
21
+ # Initialize the API
22
+ api = EmbeddingAPIClient(embedding_service_endpoint)
23
+
24
+ # Get embedding model name
25
+ print(api.get_api_model_name())
26
+
27
+ # Transform text to embedding
28
+ text = "Hello, world!"
29
+ embedding = api.embed_query(text)
30
+ print(embedding)
31
+ ```
@@ -0,0 +1,7 @@
1
+ host = "0.0.0.0"
2
+ port = 6464
3
+ model_name = "OrdalieTech/Solon-embeddings-large-0.1"
4
+ #model_name=dangvantuan/sentence-camembert-large
5
+ #model_name=antoinelouis/biencoder-camembert-base-mmarcoFR
6
+ number_workers = 2
7
+ cuda_visible_devices = "0"
@@ -0,0 +1,34 @@
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.
5
+
6
+ import os
7
+ from pathlib import Path
8
+ import tomllib
9
+ from pydantic_settings import BaseSettings
10
+
11
+ DEFAULT_CONFIG_FILE = Path(__file__).parent / "default_config.toml"
12
+
13
+
14
+ class EmbeddingAPIConfig(BaseSettings):
15
+ host: str
16
+ port: int
17
+ model_name: str
18
+ number_workers: int
19
+ cuda_visible_devices: str
20
+
21
+
22
+ # Use environment variable to specify which config to load
23
+ def get_config() -> EmbeddingAPIConfig:
24
+ """
25
+ Return the configuration for the embedding API.
26
+ The configuration is loaded from a toml file.
27
+ The path to the toml file can be specified using the environment variable `EMBEDDING_API_CONFIG_FILE`.
28
+ If the environment variable is not set, the default configuration file is used.
29
+ """
30
+ config_file = os.environ.get("EMBEDDING_API_CONFIG_FILE", None)
31
+ if config_file is None:
32
+ config_file = DEFAULT_CONFIG_FILE
33
+ with open(config_file, "rb") as f:
34
+ return EmbeddingAPIConfig(**tomllib.load(f))
@@ -0,0 +1,14 @@
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.
5
+
6
+ from fastapi import FastAPI
7
+
8
+ from bertrend.services.embedding_server.routers import embeddings, info, authentication
9
+
10
+ app = FastAPI()
11
+
12
+ app.include_router(info.router, tags=["Info"])
13
+ app.include_router(embeddings.router, tags=["Embedding"])
14
+ app.include_router(authentication.router, tags=["Authentication"])
@@ -0,0 +1,12 @@
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.
5
+
6
+ # Pydantic class for FastAPI typing control
7
+ from pydantic import BaseModel
8
+
9
+
10
+ class InputText(BaseModel):
11
+ text: str | list[str]
12
+ show_progress_bar: bool
@@ -0,0 +1,45 @@
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.
5
+ from typing import Annotated
6
+
7
+ from fastapi import Depends, APIRouter, Security
8
+ from fastapi.security import OAuth2PasswordRequestForm
9
+
10
+ from bertrend.services.embedding_server.security import (
11
+ ADMIN,
12
+ Token,
13
+ TokenData,
14
+ get_token,
15
+ list_registered_clients,
16
+ get_current_client,
17
+ view_rate_limits,
18
+ )
19
+
20
+ router = APIRouter()
21
+
22
+
23
+ @router.post("/token")
24
+ async def login_for_access_token(
25
+ form_data: Annotated[OAuth2PasswordRequestForm, Depends()],
26
+ ) -> Token:
27
+ return get_token(form_data)
28
+
29
+
30
+ @router.get(
31
+ "/list_registered_clients", summary="List registered clients (requires admin scope)"
32
+ )
33
+ async def list_clients(
34
+ current_client: TokenData = Security(get_current_client, scopes=[ADMIN])
35
+ ):
36
+ return list_registered_clients()
37
+
38
+
39
+ @router.get(
40
+ "/rate-limits", summary="Check current rate limit usage (requires admin scope)"
41
+ )
42
+ async def get_rate_limits(
43
+ current_client: TokenData = Security(get_current_client, scopes=[ADMIN]),
44
+ ):
45
+ return view_rate_limits()
@@ -0,0 +1,39 @@
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.
5
+
6
+ from fastapi import APIRouter, Security
7
+ from loguru import logger
8
+ from sentence_transformers import SentenceTransformer
9
+
10
+ from bertrend.services.embedding_server.security import (
11
+ TokenData,
12
+ get_current_client,
13
+ FULL_ACCESS,
14
+ )
15
+
16
+ from bertrend.services.embedding_server.config.settings import get_config
17
+ from bertrend.services.embedding_server.models import InputText
18
+
19
+ # Load the configuration
20
+ CONFIG = get_config()
21
+
22
+ # Load embedding model
23
+ logger.debug(f"Loading embedding model : {CONFIG.model_name}")
24
+ EMBEDDING_MODEL = SentenceTransformer(CONFIG.model_name, trust_remote_code=True)
25
+
26
+ # Fix max model length error
27
+ if EMBEDDING_MODEL.max_seq_length == 514:
28
+ EMBEDDING_MODEL.max_seq_length = 512
29
+ router = APIRouter()
30
+
31
+
32
+ @router.post("/encode", summary="Embed data (requires full_access scope)")
33
+ def embed(
34
+ input: InputText,
35
+ current_client: TokenData = Security(get_current_client, scopes=[FULL_ACCESS]),
36
+ ):
37
+ logger.debug(f"Request by: {current_client.client_id}")
38
+ emb = EMBEDDING_MODEL.encode(input.text, show_progress_bar=input.show_progress_bar)
39
+ return {"embeddings": emb.tolist()}
@@ -0,0 +1,29 @@
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.
5
+
6
+ from fastapi import APIRouter
7
+
8
+ from bertrend.services.embedding_server.config.settings import get_config
9
+
10
+ # Load the configuration
11
+ CONFIG = get_config()
12
+
13
+
14
+ router = APIRouter()
15
+
16
+
17
+ @router.get("/health")
18
+ def health():
19
+ return {"status": "ok"}
20
+
21
+
22
+ @router.get("/model_name")
23
+ def get_model_name():
24
+ return CONFIG.model_name
25
+
26
+
27
+ @router.get("/num_workers")
28
+ def get_num_workers():
29
+ return CONFIG.number_workers