aait 2.2.2__tar.gz → 2.2.2.2__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.
- aait-2.2.2.2/PKG-INFO +28 -0
- aait-2.2.2.2/aait.egg-info/PKG-INFO +28 -0
- {aait-2.2.2 → aait-2.2.2.2}/aait.egg-info/SOURCES.txt +3 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/llm/process_documents.py +70 -99
- aait-2.2.2.2/orangecontrib/AAIT/widgets/OWKeywords.py +153 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owkeyword.ui +1 -1
- aait-2.2.2.2/orangecontrib/AAIT/widgets/icons/owkeywords.png +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/setup.py +1 -1
- aait-2.2.2/PKG-INFO +0 -9
- aait-2.2.2/aait.egg-info/PKG-INFO +0 -9
- {aait-2.2.2 → aait-2.2.2.2}/License.txt +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/aait.egg-info/dependency_links.txt +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/aait.egg-info/entry_points.txt +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/aait.egg-info/namespace_packages.txt +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/aait.egg-info/requires.txt +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/aait.egg-info/top_level.txt +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/__init__.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/audit_widget/SignalReceiver.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/audit_widget/__init__.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/audit_widget/audit_widget.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (2).TIF +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (3).TIF +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (4).TIF +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0001.csv +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0002.csv +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/audit_widget/dataTests/Tir 81mm_0003.csv +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/audit_widget/dynamic_results.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/audit_widget/test_all_widgets.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/audit_widget/test_server.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/audit_widget/widget_4all.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/audit_widget/widget_chunking.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/audit_widget/widget_edit_table.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/audit_widget/widget_mpnet_create_embeddings.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/audit_widget/widget_optimisation.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/audit_widget/widget_optimisationselection.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/audit_widget/widget_powfactory.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/audit_widget/widget_queryllm.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/audit_widget/widget_spacy_md_fr_lemmatizer.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/audit_widget/widget_traduction.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/audit_widget/widgets_model.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/encapsulation/__init__.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/fix_torch/fix_torch_dll_error.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/fix_torch/libomp140.x86_64.dll +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/llm/MergeBaseLora.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/llm/SERV_kill_workflow.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/llm/SERV_requests.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/llm/SERV_start_workflow.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/llm/Tutorial_Finetuning.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/llm/Tutorial_TestFinetuning.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/llm/__init__.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/llm/answers.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/llm/chunking.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/llm/embeddings.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/llm/finetuning.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/llm/functions_DatasetGeneration.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/llm/functions_Finetuning.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/llm/lemmes.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/llm/lmstudio.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/llm/main_DatasetGeneration.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/llm/main_Finetuning.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/llm/prompt_management.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/llm/quickpy.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/llm/test.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/llm/test_functions.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/llm/translations.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/optimiser/__init__.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/optimiser/optuna_multi.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/utils/CheckMetaData.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/utils/MetManagement.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/utils/SimpleDialogQt.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/utils/__init__.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/utils/aait_repo_file.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/utils/check_data_in.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/utils/delta_local_shared_fodler.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/utils/import_uic.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/utils/initialize_from_ini.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/utils/mac_utils.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/utils/shared_functions.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/utils/shared_variables.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/utils/subprocess_management.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/utils/thread_management.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/utils/tools/__init__.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/utils/tools/change_owcorpus.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/utils/tools/concat_splitted_pypi.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/utils/tools/first_time_check.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/utils/tools/owcorpus_ok.txt +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/utils/windows_utils.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWAAITResourcesManager.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWAddColumns.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWApplyRules.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWCN2rule_view.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWChunking.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWConcatRules.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWConverseLLM.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWCreateEmbeddings.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWDisplayMD.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWEditTable.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWEmptySwitch.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWEndLoop.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWExecuteScript.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWExtraChunks.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWExtractTokens.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWFileMetadata.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWFileSyncChecker.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWFileWithPath.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWFindFilesFromDir.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWFusionNM.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWGenerateQuestions.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWGenerateSynthesis.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWGenerateWord.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWInputSelector.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWKeywordsDetection.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWLMStudio.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWLanguageDetection.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWLemmatizer.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWModel_CE_MiniLML6.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWModel_Falcon.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWModel_HelsinkiEnFr.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWModel_HelsinkiFrEn.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWModel_MPNET.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWModel_Mistral.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWModel_Qwen.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWModel_Qwen1B5_Q6.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWModel_Qwen2_5_32B.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWModel_Qwen3B_Q4.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWModel_Qwen7B_Q4.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWModel_Qwen7B_Q6.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWModel_Solar.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWModel_SolarUncensored.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWModel_SpacyMD_EN.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWModel_SpacyMD_FR.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWOptimisation.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWOptimisationSelection.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWOptimisationSendScore.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWProcessDocumentsFromPath.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWQueryLLM.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWRandomData.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWReranking.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWSaveFilepathEntry.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWSelectColumnDynamique.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWSelectRowsDynamic.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWStartLoop.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWTable2Corpus.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWTranslation.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWTrigger.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/OWUnzipFolder.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/POW_Wfactory.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/__init__.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owMarkdown.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/ow_in_or_out_path.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/ow_widget_random_data.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owaddcolumns.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owapplyrules.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owchunking.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owconcatrules.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owconversellm.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owembeddings.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owemptyswitch.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owendloop.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owexecutescript.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owextrachunks.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owextracttokens.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owfilemetadata.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owfilesyncchecker.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owfilewithpath.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owfindfilesfromdir.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owfusion_nm.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owgenerate_word.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owgeneratequestions.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owgeneratesynthesis.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owkeywordsdetection.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owlangdetect.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owlemmatizer.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owloadworkflow.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owmodel_ce_minilml6.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owmodel_falcon.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owmodel_helsinki_en_fr.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owmodel_helsinki_fr_en.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owmodel_mistral.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owmodel_mpnet.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owmodel_qwen.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_2.5_32b.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_instruct_1.5b_q6.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_instruct_3b_q4.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_instruct_7b_q4.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owmodel_qwen_instruct_7b_q6.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owmodel_qwencoder_7b.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owmodel_solar.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owmodel_solar_uncensored.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owmodel_spacymd_en.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owmodel_spacymd_fr.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/ownumberpointinrules.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owprocessdocuments.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owqueryllm.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owreranking.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owsavewithpath.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owselect_column_dynamic.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owselect_row_dynamic.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owstartloop.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owtable2corpus.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owtranslation.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owtrigger.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/designer/owunzipfolder.ui +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/CN2RuleViewer.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/MDViewer.png +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/Mistral.png +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/apply_rules.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/category.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/dark_green.txt +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/de.png +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/document_generator.png +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/documents.png +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/endloop.png +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/extra_chunks.png +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/in_or_out.png +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/input.png +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/languages.png +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/lm_studio.png +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/local_interf_img_multi_pull.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/local_interf_multi_pull.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/local_interf_pull.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/local_interf_push.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/local_interf_text_pull.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/logo_solar.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/logo_uncensoredsolar.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/logo_upload.png +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/models.png +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/optimisation.png +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/optimizer.png +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/output.png +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/owCN2_intersect_rules.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/owchunking.png +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/owconversellm.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/owedittable.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/owembeddings.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/owemptyswitch.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/owenvinfo.png +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/owexecutescript.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/owextracttokens.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/owfilemetadata.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/owfilesfromdir.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/owfilesyncchecker.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/owfilewithpath.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/owfusion_nm.png +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/owgeneratequestions.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/owgeneratesynthesis.png +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/owkeywordsdetection.png +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/owlemmatizer.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/owmodel_ce_minilml6.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/owmodel_falcon.png +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/owmodel_helsinki_en_fr.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/owmodel_helsinki_fr_en.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/owmodel_mpnet.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/owmodel_spacymd_en.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/owmodel_spacymd_fr.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/owoptimisation.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/owoptimisationselection.png +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/owqueryllm.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/owreranking.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/owsavefilepathentry.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/owselectcolumndynamique.png +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/owtable2corpus.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/owtranslation.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/owtrigger.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/processdocuments.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/qwen-color.png +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/select_dynamic_row.png +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/startloop.png +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/tools.png +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/widgetFactory.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/widgets/icons/zip.svg +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/orangecontrib/__init__.py +0 -0
- {aait-2.2.2 → aait-2.2.2.2}/setup.cfg +0 -0
aait-2.2.2.2/PKG-INFO
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: aait
|
|
3
|
+
Version: 2.2.2.2
|
|
4
|
+
Summary: Advanced Artificial Intelligence Tools is a package meant to develop and enable advanced AI functionalities in Orange
|
|
5
|
+
Home-page:
|
|
6
|
+
Author: Orange community
|
|
7
|
+
Author-email:
|
|
8
|
+
Keywords: orange3 add-on
|
|
9
|
+
License-File: License.txt
|
|
10
|
+
Requires-Dist: torch
|
|
11
|
+
Requires-Dist: sentence-transformers==5.0.0
|
|
12
|
+
Requires-Dist: gpt4all[all]==2.8.2
|
|
13
|
+
Requires-Dist: sacremoses==0.1.1
|
|
14
|
+
Requires-Dist: transformers==4.51.3
|
|
15
|
+
Requires-Dist: sentencepiece==0.2.0
|
|
16
|
+
Requires-Dist: optuna
|
|
17
|
+
Requires-Dist: spacy==3.7.6
|
|
18
|
+
Requires-Dist: markdown
|
|
19
|
+
Requires-Dist: python-multipart
|
|
20
|
+
Requires-Dist: PyMuPDF==1.24.14
|
|
21
|
+
Requires-Dist: chonkie==0.4.1
|
|
22
|
+
Requires-Dist: GPUtil==1.4.0
|
|
23
|
+
Requires-Dist: unidecode==1.3.8
|
|
24
|
+
Requires-Dist: python-docx==1.1.2
|
|
25
|
+
Requires-Dist: psutil
|
|
26
|
+
Requires-Dist: thefuzz==0.22.1
|
|
27
|
+
Requires-Dist: beautifulsoup4==4.12.3
|
|
28
|
+
Requires-Dist: CATEGORIT
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: aait
|
|
3
|
+
Version: 2.2.2.2
|
|
4
|
+
Summary: Advanced Artificial Intelligence Tools is a package meant to develop and enable advanced AI functionalities in Orange
|
|
5
|
+
Home-page:
|
|
6
|
+
Author: Orange community
|
|
7
|
+
Author-email:
|
|
8
|
+
Keywords: orange3 add-on
|
|
9
|
+
License-File: License.txt
|
|
10
|
+
Requires-Dist: torch
|
|
11
|
+
Requires-Dist: sentence-transformers==5.0.0
|
|
12
|
+
Requires-Dist: gpt4all[all]==2.8.2
|
|
13
|
+
Requires-Dist: sacremoses==0.1.1
|
|
14
|
+
Requires-Dist: transformers==4.51.3
|
|
15
|
+
Requires-Dist: sentencepiece==0.2.0
|
|
16
|
+
Requires-Dist: optuna
|
|
17
|
+
Requires-Dist: spacy==3.7.6
|
|
18
|
+
Requires-Dist: markdown
|
|
19
|
+
Requires-Dist: python-multipart
|
|
20
|
+
Requires-Dist: PyMuPDF==1.24.14
|
|
21
|
+
Requires-Dist: chonkie==0.4.1
|
|
22
|
+
Requires-Dist: GPUtil==1.4.0
|
|
23
|
+
Requires-Dist: unidecode==1.3.8
|
|
24
|
+
Requires-Dist: python-docx==1.1.2
|
|
25
|
+
Requires-Dist: psutil
|
|
26
|
+
Requires-Dist: thefuzz==0.22.1
|
|
27
|
+
Requires-Dist: beautifulsoup4==4.12.3
|
|
28
|
+
Requires-Dist: CATEGORIT
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
License.txt
|
|
2
|
+
setup.cfg
|
|
2
3
|
setup.py
|
|
3
4
|
aait.egg-info/PKG-INFO
|
|
4
5
|
aait.egg-info/SOURCES.txt
|
|
@@ -104,6 +105,7 @@ orangecontrib/AAIT/widgets/OWGenerateQuestions.py
|
|
|
104
105
|
orangecontrib/AAIT/widgets/OWGenerateSynthesis.py
|
|
105
106
|
orangecontrib/AAIT/widgets/OWGenerateWord.py
|
|
106
107
|
orangecontrib/AAIT/widgets/OWInputSelector.py
|
|
108
|
+
orangecontrib/AAIT/widgets/OWKeywords.py
|
|
107
109
|
orangecontrib/AAIT/widgets/OWKeywordsDetection.py
|
|
108
110
|
orangecontrib/AAIT/widgets/OWLMStudio.py
|
|
109
111
|
orangecontrib/AAIT/widgets/OWLanguageDetection.py
|
|
@@ -240,6 +242,7 @@ orangecontrib/AAIT/widgets/icons/owfilewithpath.svg
|
|
|
240
242
|
orangecontrib/AAIT/widgets/icons/owfusion_nm.png
|
|
241
243
|
orangecontrib/AAIT/widgets/icons/owgeneratequestions.svg
|
|
242
244
|
orangecontrib/AAIT/widgets/icons/owgeneratesynthesis.png
|
|
245
|
+
orangecontrib/AAIT/widgets/icons/owkeywords.png
|
|
243
246
|
orangecontrib/AAIT/widgets/icons/owkeywordsdetection.png
|
|
244
247
|
orangecontrib/AAIT/widgets/icons/owlemmatizer.svg
|
|
245
248
|
orangecontrib/AAIT/widgets/icons/owmodel_ce_minilml6.svg
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import os
|
|
2
2
|
import json
|
|
3
3
|
import ntpath
|
|
4
|
-
from pathlib import Path
|
|
5
4
|
|
|
6
5
|
from Orange.data import Table, Domain, StringVariable
|
|
7
6
|
|
|
@@ -9,37 +8,31 @@ import fitz
|
|
|
9
8
|
import docx
|
|
10
9
|
|
|
11
10
|
|
|
11
|
+
|
|
12
12
|
def process_documents(dirpath):
|
|
13
|
-
if dirpath is None or not
|
|
13
|
+
if dirpath is None or not os.path.exists(dirpath):
|
|
14
14
|
return None, None
|
|
15
15
|
|
|
16
|
-
# Normalize dirpath
|
|
17
|
-
dirpath = Path(dirpath).resolve()
|
|
18
|
-
|
|
19
16
|
# get path from user selection
|
|
20
17
|
embeddings = check_for_embeddings(dirpath)
|
|
18
|
+
dirpath = dirpath.replace("\\","/")
|
|
21
19
|
|
|
22
20
|
# Set selected path in the saved embeddings
|
|
23
21
|
if embeddings is not None:
|
|
24
|
-
common_path =
|
|
22
|
+
common_path = find_common_root(embeddings).replace("\\","/")
|
|
25
23
|
for row in embeddings:
|
|
26
|
-
|
|
27
|
-
# Replace common root with the current dirpath
|
|
28
|
-
try:
|
|
29
|
-
row["path"] = str(dirpath / row_path.relative_to(common_path))
|
|
30
|
-
except ValueError:
|
|
31
|
-
# If relative_to fails (paths not matching), just normalize
|
|
32
|
-
row["path"] = str(row_path)
|
|
24
|
+
row["path"] = row["path"].value.replace("\\","/").replace(common_path, dirpath)
|
|
33
25
|
|
|
34
26
|
# Verify which files are already processed
|
|
35
27
|
files_to_process = get_files_to_process(dirpath, embeddings)
|
|
36
28
|
|
|
37
29
|
rows = []
|
|
38
30
|
for file in files_to_process:
|
|
39
|
-
|
|
40
|
-
content = extract_text(
|
|
41
|
-
filename = file
|
|
42
|
-
|
|
31
|
+
# Get the text content from the file
|
|
32
|
+
content = extract_text(file)
|
|
33
|
+
filename = ntpath.basename(file)
|
|
34
|
+
# Build a row containing dirpath | filename | content
|
|
35
|
+
row = [file, filename, content]
|
|
43
36
|
rows.append(row)
|
|
44
37
|
|
|
45
38
|
# Build a table with the constructed rows
|
|
@@ -51,115 +44,93 @@ def process_documents(dirpath):
|
|
|
51
44
|
return out_data, embeddings
|
|
52
45
|
|
|
53
46
|
|
|
54
|
-
def check_for_embeddings(folder_path):
|
|
55
|
-
"""
|
|
56
|
-
Check for an embeddings.pkl file in a given folder. Return its content if it exists.
|
|
57
|
-
|
|
58
|
-
Parameters:
|
|
59
|
-
folder_path (str | Path): The path to the folder where embeddings.pkl may exist.
|
|
60
|
-
|
|
61
|
-
Returns:
|
|
62
|
-
Table or None: The content of embeddings.pkl, or None if not found.
|
|
63
|
-
"""
|
|
64
|
-
folder_path = Path(folder_path).resolve()
|
|
65
|
-
|
|
66
|
-
filepaths = [
|
|
67
|
-
folder_path / "embeddings_question.pkl",
|
|
68
|
-
folder_path / "embeddings.pkl"
|
|
69
|
-
]
|
|
70
|
-
|
|
71
|
-
for filepath in filepaths:
|
|
72
|
-
if filepath.exists():
|
|
73
|
-
return Table.from_file(str(filepath)) # Table.from_file expects a str
|
|
74
|
-
return None
|
|
75
|
-
|
|
76
|
-
|
|
77
47
|
def find_common_root(data_table, column_name="path"):
|
|
78
48
|
"""Finds the common root path from a column of file paths in an Orange Data Table."""
|
|
79
|
-
paths = [
|
|
80
|
-
for row in data_table if row[column_name] is not None]
|
|
49
|
+
paths = [str(row[column_name]) for row in data_table if row[column_name] is not None]
|
|
81
50
|
if not paths:
|
|
82
51
|
return ""
|
|
83
|
-
return
|
|
52
|
+
return os.path.commonpath(paths)
|
|
84
53
|
|
|
85
54
|
|
|
86
55
|
def get_files_to_process(folder_path, table=None):
|
|
87
56
|
"""
|
|
88
|
-
Finds all PDF
|
|
89
|
-
|
|
57
|
+
Finds all PDF files in a folder (including subfolders) that are not already in the table.
|
|
58
|
+
The comparison is based on "name" (relative path from the main folder) instead of full paths.
|
|
90
59
|
|
|
91
60
|
:param folder_path: Path to the folder to scan for documents.
|
|
92
|
-
:param table: Orange Data Table with
|
|
93
|
-
:return: List of
|
|
61
|
+
:param table: Orange Data Table with columns "path", "name", and "content".
|
|
62
|
+
:return: List of paths to files not present in the table (by name, including subfolder structure).
|
|
94
63
|
"""
|
|
95
|
-
|
|
64
|
+
#TODO
|
|
65
|
+
# Supported file extensions
|
|
66
|
+
supported_extensions = [".pdf", ".docx"]
|
|
96
67
|
|
|
97
|
-
|
|
98
|
-
filepath_sizes = folder_path
|
|
99
|
-
|
|
100
|
-
print(filepath_sizes)
|
|
101
|
-
print(filepath_sizes.exists())
|
|
102
|
-
|
|
103
|
-
# Load previous file sizes
|
|
104
|
-
if filepath_sizes.exists():
|
|
68
|
+
# Read the json containing file sizes
|
|
69
|
+
filepath_sizes = os.path.join(folder_path, "sizes.json")
|
|
70
|
+
if os.path.exists(filepath_sizes):
|
|
105
71
|
with open(filepath_sizes, "r") as json_file:
|
|
106
|
-
sizes =
|
|
72
|
+
sizes = json.load(json_file)
|
|
107
73
|
else:
|
|
108
|
-
sizes =
|
|
74
|
+
sizes = dict()
|
|
109
75
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
# Extract the existing paths from the Orange Data Table
|
|
76
|
+
# Extract the existing file names from the Orange Data Table
|
|
113
77
|
if table:
|
|
114
|
-
|
|
115
|
-
existing_paths = {Path(str(p)).resolve() for p in table[:, "path"].metas.flatten()}
|
|
78
|
+
existing_paths = set(table[:, "path"].metas.flatten()) # Extract names from the table
|
|
116
79
|
else:
|
|
117
80
|
existing_paths = set()
|
|
118
81
|
|
|
119
|
-
new_files = []
|
|
120
|
-
|
|
121
|
-
# Walk through the folder and subfolders
|
|
122
|
-
for file in folder_path.rglob("*"):
|
|
123
|
-
if file.suffix.lower() in supported_extensions:
|
|
124
|
-
file = file.resolve()
|
|
125
|
-
size = file.stat().st_size
|
|
126
|
-
|
|
127
|
-
if file not in existing_paths:
|
|
128
|
-
# New file
|
|
129
|
-
new_files.append(str(file))
|
|
130
|
-
sizes[Path(ntpath.basename(file))] = size
|
|
131
|
-
else:
|
|
132
|
-
# File already in table: check if size changed
|
|
133
|
-
print("File: ", Path(ntpath.basename(file)))
|
|
134
|
-
old_size = sizes.get(Path(ntpath.basename(file)))
|
|
135
|
-
print(old_size)
|
|
136
|
-
if old_size is None or old_size != size:
|
|
137
|
-
new_files.append(str(file))
|
|
138
|
-
table = remove_from_table(file, table)
|
|
139
|
-
sizes[Path(ntpath.basename(file))] = size
|
|
140
82
|
|
|
141
|
-
|
|
142
|
-
|
|
83
|
+
# Walk through the folder and its subfolders
|
|
84
|
+
new_files = []
|
|
85
|
+
for root, _, files in os.walk(folder_path):
|
|
86
|
+
for file in files:
|
|
87
|
+
# Check if the file has a supported extension
|
|
88
|
+
if os.path.splitext(file)[1].lower() in supported_extensions:
|
|
89
|
+
# Add the file if it is not already in the table
|
|
90
|
+
filepath = os.path.join(root, file).replace("\\","/")
|
|
91
|
+
if filepath not in existing_paths:
|
|
92
|
+
new_files.append(filepath)
|
|
93
|
+
sizes[filepath] = os.path.getsize(filepath)
|
|
94
|
+
# If the file is in the table, verify if the file has been modified (comparing the size)
|
|
95
|
+
else:
|
|
96
|
+
new_size = os.path.getsize(filepath)
|
|
97
|
+
if filepath not in sizes.keys():
|
|
98
|
+
sizes[filepath] = new_size
|
|
99
|
+
else:
|
|
100
|
+
old_size = sizes[filepath]
|
|
101
|
+
if old_size != new_size:
|
|
102
|
+
new_files.append(filepath)
|
|
103
|
+
table = remove_from_table(filepath, table)
|
|
104
|
+
sizes[filepath] = new_size
|
|
143
105
|
with open(filepath_sizes, "w") as json_file:
|
|
144
|
-
json.dump(
|
|
145
|
-
|
|
106
|
+
json.dump(sizes, json_file, indent=4)
|
|
146
107
|
return new_files
|
|
147
108
|
|
|
148
109
|
|
|
149
110
|
def remove_from_table(filepath, table):
|
|
111
|
+
filtered_table = Table.from_list(domain=table.domain,
|
|
112
|
+
rows=[row for row in table if row["path"].value != filepath])
|
|
113
|
+
return filtered_table
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
def check_for_embeddings(folder_path):
|
|
150
117
|
"""
|
|
151
|
-
|
|
118
|
+
Check for an embeddings.pkl file in a given folder. Return its content if it exists.
|
|
119
|
+
|
|
120
|
+
Parameters:
|
|
121
|
+
folder_path (str): The path to the folder where embeddings.pkl may exist.
|
|
122
|
+
|
|
123
|
+
Returns:
|
|
124
|
+
Table or None: The content of embeddings.pkl.
|
|
152
125
|
"""
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
)
|
|
162
|
-
return filtered_table
|
|
126
|
+
filepaths = [os.path.join(folder_path, "embeddings_question.pkl"),
|
|
127
|
+
os.path.join(folder_path, "embeddings.pkl")]
|
|
128
|
+
for filepath in filepaths:
|
|
129
|
+
if os.path.exists(filepath):
|
|
130
|
+
data = Table.from_file(filepath)
|
|
131
|
+
return data
|
|
132
|
+
else:
|
|
133
|
+
return None
|
|
163
134
|
|
|
164
135
|
|
|
165
136
|
def extract_text(filepath):
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import sys
|
|
3
|
+
|
|
4
|
+
from Orange.widgets import widget
|
|
5
|
+
from Orange.widgets.utils.signals import Input, Output
|
|
6
|
+
from Orange.data import Table, Domain, ContinuousVariable
|
|
7
|
+
from thefuzz import fuzz
|
|
8
|
+
from AnyQt.QtWidgets import QApplication
|
|
9
|
+
from AnyQt.QtCore import QObject, QThread, pyqtSignal
|
|
10
|
+
|
|
11
|
+
# Import intelligent selon contexte
|
|
12
|
+
if "site-packages/Orange/widgets" in os.path.dirname(os.path.abspath(__file__)).replace("\\", "/"):
|
|
13
|
+
from Orange.widgets.orangecontrib.AAIT.utils.import_uic import uic
|
|
14
|
+
from Orange.widgets.orangecontrib.AAIT.utils.initialize_from_ini import apply_modification_from_python_file
|
|
15
|
+
else:
|
|
16
|
+
from orangecontrib.AAIT.utils.import_uic import uic
|
|
17
|
+
from orangecontrib.AAIT.utils.initialize_from_ini import apply_modification_from_python_file
|
|
18
|
+
|
|
19
|
+
# Worker pour exécution asynchrone
|
|
20
|
+
class KeywordWorker(QObject):
|
|
21
|
+
finished = pyqtSignal(Table)
|
|
22
|
+
error = pyqtSignal(str)
|
|
23
|
+
|
|
24
|
+
def __init__(self, data, keywords, threshold=80):
|
|
25
|
+
super().__init__()
|
|
26
|
+
self.data = data
|
|
27
|
+
self.keywords = keywords
|
|
28
|
+
self.threshold = threshold
|
|
29
|
+
|
|
30
|
+
def extract_matched_keywords(self, text, keywords):
|
|
31
|
+
words = text.split(" ")
|
|
32
|
+
matched_keywords = []
|
|
33
|
+
for keyword in keywords:
|
|
34
|
+
best_score = max(fuzz.ratio(word.lower(), keyword.lower()) for word in words)
|
|
35
|
+
if best_score >= self.threshold:
|
|
36
|
+
matched_keywords.append(keyword)
|
|
37
|
+
return matched_keywords
|
|
38
|
+
|
|
39
|
+
def run(self):
|
|
40
|
+
try:
|
|
41
|
+
if "Content" not in self.data.domain or "Keywords" not in self.keywords.domain:
|
|
42
|
+
self.error.emit("Missing 'Content' or 'Keywords' column")
|
|
43
|
+
return
|
|
44
|
+
|
|
45
|
+
keyword_list = [
|
|
46
|
+
str(row["Keywords"])
|
|
47
|
+
for row in self.keywords
|
|
48
|
+
if str(row["Keywords"]).strip() != ""
|
|
49
|
+
]
|
|
50
|
+
|
|
51
|
+
new_metas_vars = list(self.data.domain.metas)
|
|
52
|
+
if not any(var.name == "Keywords" for var in new_metas_vars):
|
|
53
|
+
new_metas_vars.append(ContinuousVariable("Keywords"))
|
|
54
|
+
|
|
55
|
+
new_domain = Domain(
|
|
56
|
+
self.data.domain.attributes,
|
|
57
|
+
self.data.domain.class_vars,
|
|
58
|
+
new_metas_vars
|
|
59
|
+
)
|
|
60
|
+
|
|
61
|
+
new_metas = []
|
|
62
|
+
for row in self.data:
|
|
63
|
+
text = str(row["Content"])
|
|
64
|
+
matched_keywords = self.extract_matched_keywords(text, keyword_list)
|
|
65
|
+
score = (
|
|
66
|
+
sum(fuzz.ratio(word.lower(), kw.lower()) for kw in matched_keywords for word in text.split())
|
|
67
|
+
/ len(keyword_list)
|
|
68
|
+
if matched_keywords else 0.0
|
|
69
|
+
)
|
|
70
|
+
new_metas.append(list(row.metas) + [score])
|
|
71
|
+
|
|
72
|
+
out_data = Table(new_domain, self.data.X, self.data.Y, new_metas)
|
|
73
|
+
self.finished.emit(out_data)
|
|
74
|
+
|
|
75
|
+
except Exception as e:
|
|
76
|
+
self.error.emit(str(e))
|
|
77
|
+
|
|
78
|
+
# Définition du widget principal
|
|
79
|
+
@apply_modification_from_python_file(filepath_original_widget=__file__)
|
|
80
|
+
class OWKeywords(widget.OWWidget):
|
|
81
|
+
name = "Keywords Detection"
|
|
82
|
+
description = "Give the amount of keywords from in_object in in_data"
|
|
83
|
+
icon = "icons/keywords.png"
|
|
84
|
+
category = "AAIT - LLM INTEGRATION"
|
|
85
|
+
if "site-packages/Orange/widgets" in os.path.dirname(os.path.abspath(__file__)).replace("\\", "/"):
|
|
86
|
+
icon = "icons_dev/keywords.png"
|
|
87
|
+
gui = os.path.join(os.path.dirname(os.path.abspath(__file__)), "designer/owkeyword.ui")
|
|
88
|
+
want_control_area = False
|
|
89
|
+
priority = 1050
|
|
90
|
+
|
|
91
|
+
class Inputs:
|
|
92
|
+
data = Input("Content", Table)
|
|
93
|
+
keywords = Input("Keywords", Table)
|
|
94
|
+
|
|
95
|
+
class Outputs:
|
|
96
|
+
data = Output("Keywords per Content", Table)
|
|
97
|
+
|
|
98
|
+
def __init__(self):
|
|
99
|
+
super().__init__()
|
|
100
|
+
self.data = None
|
|
101
|
+
self.keywords = None
|
|
102
|
+
self.setFixedWidth(470)
|
|
103
|
+
self.setFixedHeight(300)
|
|
104
|
+
uic.loadUi(self.gui, self)
|
|
105
|
+
self.autorun = True
|
|
106
|
+
self.thread = None
|
|
107
|
+
self.worker = None
|
|
108
|
+
|
|
109
|
+
@Inputs.data
|
|
110
|
+
def set_data(self, in_data):
|
|
111
|
+
self.data = in_data
|
|
112
|
+
if self.autorun and self.keywords:
|
|
113
|
+
self.process()
|
|
114
|
+
|
|
115
|
+
@Inputs.keywords
|
|
116
|
+
def set_keywords(self, in_keywords):
|
|
117
|
+
self.keywords = in_keywords
|
|
118
|
+
if self.autorun and self.data:
|
|
119
|
+
self.process()
|
|
120
|
+
|
|
121
|
+
def process(self):
|
|
122
|
+
if self.data is None or self.keywords is None:
|
|
123
|
+
self.Outputs.data.send(None)
|
|
124
|
+
return
|
|
125
|
+
|
|
126
|
+
self.error("") # Clear errors
|
|
127
|
+
self.thread = QThread()
|
|
128
|
+
self.worker = KeywordWorker(self.data, self.keywords)
|
|
129
|
+
self.worker.moveToThread(self.thread)
|
|
130
|
+
|
|
131
|
+
self.thread.started.connect(self.worker.run)
|
|
132
|
+
self.worker.finished.connect(self.on_worker_finished)
|
|
133
|
+
self.worker.error.connect(self.on_worker_error)
|
|
134
|
+
self.worker.finished.connect(self.thread.quit)
|
|
135
|
+
self.worker.finished.connect(self.worker.deleteLater)
|
|
136
|
+
self.thread.finished.connect(self.thread.deleteLater)
|
|
137
|
+
|
|
138
|
+
self.thread.start()
|
|
139
|
+
|
|
140
|
+
def on_worker_finished(self, out_data):
|
|
141
|
+
print("[INFO] Thread finished. Output ready.")
|
|
142
|
+
self.Outputs.data.send(out_data)
|
|
143
|
+
|
|
144
|
+
def on_worker_error(self, message):
|
|
145
|
+
print(f"[ERROR] Worker error: {message}")
|
|
146
|
+
self.error(message)
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
if __name__ == "__main__":
|
|
150
|
+
app = QApplication(sys.argv)
|
|
151
|
+
ow = OWKeywords()
|
|
152
|
+
ow.show()
|
|
153
|
+
app.exec_()
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
</rect>
|
|
36
36
|
</property>
|
|
37
37
|
<property name="text">
|
|
38
|
-
<string>The input Data must contain a column "
|
|
38
|
+
<string>The input Data must contain a column "Content". The input Keywords must contain a column "Keywords". This widget will count the number of keywords that occur in the content with a fuzzy matching (percentage based on small variations).</string>
|
|
39
39
|
</property>
|
|
40
40
|
<property name="textFormat">
|
|
41
41
|
<enum>Qt::AutoText</enum>
|
|
Binary file
|
|
@@ -4,7 +4,7 @@ from setuptools import setup, find_packages
|
|
|
4
4
|
NAME = "aait"
|
|
5
5
|
|
|
6
6
|
# Version du package PyPI
|
|
7
|
-
VERSION = "2.2.2" # la version doit être supérieure à la précédente sinon la publication sera refusée
|
|
7
|
+
VERSION = "2.2.2.2" # la version doit être supérieure à la précédente sinon la publication sera refusée
|
|
8
8
|
|
|
9
9
|
# Facultatif / Adaptable à souhait
|
|
10
10
|
AUTHOR = "Orange community"
|
aait-2.2.2/PKG-INFO
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.1
|
|
2
|
-
Name: aait
|
|
3
|
-
Version: 2.2.2
|
|
4
|
-
Summary: Advanced Artificial Intelligence Tools is a package meant to develop and enable advanced AI functionalities in Orange
|
|
5
|
-
Home-page:
|
|
6
|
-
Author: Orange community
|
|
7
|
-
Author-email:
|
|
8
|
-
Keywords: orange3 add-on
|
|
9
|
-
License-File: License.txt
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.1
|
|
2
|
-
Name: aait
|
|
3
|
-
Version: 2.2.2
|
|
4
|
-
Summary: Advanced Artificial Intelligence Tools is a package meant to develop and enable advanced AI functionalities in Orange
|
|
5
|
-
Home-page:
|
|
6
|
-
Author: Orange community
|
|
7
|
-
Author-email:
|
|
8
|
-
Keywords: orange3 add-on
|
|
9
|
-
License-File: License.txt
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (2).TIF
RENAMED
|
File without changes
|
{aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (3).TIF
RENAMED
|
File without changes
|
{aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/audit_widget/dataTests/00079473A - Copie (4).TIF
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/audit_widget/widget_mpnet_create_embeddings.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aait-2.2.2 → aait-2.2.2.2}/orangecontrib/AAIT/audit_widget/widget_spacy_md_fr_lemmatizer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|