validmind 2.9.1__py3-none-any.whl → 2.10.0rc1__py3-none-any.whl

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 (43) hide show
  1. validmind/__init__.py +16 -5
  2. validmind/__version__.py +1 -1
  3. validmind/datasets/credit_risk/lending_club.py +13 -1
  4. validmind/datasets/nlp/cnn_dailymail.py +15 -1
  5. validmind/tests/data_validation/ChiSquaredFeaturesTable.py +14 -2
  6. validmind/tests/data_validation/DickeyFullerGLS.py +13 -2
  7. validmind/tests/data_validation/PhillipsPerronArch.py +13 -2
  8. validmind/tests/data_validation/SeasonalDecompose.py +14 -2
  9. validmind/tests/data_validation/ShapiroWilk.py +14 -1
  10. validmind/tests/data_validation/TimeSeriesDescriptiveStatistics.py +14 -1
  11. validmind/tests/data_validation/WOEBinPlots.py +14 -1
  12. validmind/tests/data_validation/WOEBinTable.py +13 -2
  13. validmind/tests/data_validation/ZivotAndrewsArch.py +13 -2
  14. validmind/tests/data_validation/nlp/CommonWords.py +14 -2
  15. validmind/tests/data_validation/nlp/LanguageDetection.py +14 -1
  16. validmind/tests/data_validation/nlp/PolarityAndSubjectivity.py +13 -1
  17. validmind/tests/data_validation/nlp/Sentiment.py +13 -1
  18. validmind/tests/data_validation/nlp/StopWords.py +14 -2
  19. validmind/tests/data_validation/nlp/TextDescription.py +14 -2
  20. validmind/tests/data_validation/nlp/Toxicity.py +13 -1
  21. validmind/tests/model_validation/BertScore.py +13 -2
  22. validmind/tests/model_validation/BleuScore.py +13 -2
  23. validmind/tests/model_validation/ContextualRecall.py +13 -1
  24. validmind/tests/model_validation/MeteorScore.py +13 -2
  25. validmind/tests/model_validation/ModelPredictionResiduals.py +14 -1
  26. validmind/tests/model_validation/RegardScore.py +13 -2
  27. validmind/tests/model_validation/RougeScore.py +14 -1
  28. validmind/tests/model_validation/TimeSeriesPredictionWithCI.py +14 -1
  29. validmind/tests/model_validation/ToxicityScore.py +13 -1
  30. validmind/tests/model_validation/sklearn/KMeansClustersOptimization.py +14 -2
  31. validmind/tests/model_validation/sklearn/SHAPGlobalImportance.py +13 -2
  32. validmind/tests/model_validation/statsmodels/RegressionCoeffs.py +14 -2
  33. validmind/tests/ongoing_monitoring/ClassDiscriminationDrift.py +14 -1
  34. validmind/tests/ongoing_monitoring/PredictionProbabilitiesHistogramDrift.py +14 -1
  35. validmind/tests/ongoing_monitoring/ScorecardHistogramDrift.py +14 -1
  36. validmind/tests/ongoing_monitoring/TargetPredictionDistributionPlot.py +14 -1
  37. validmind/vm_models/result/result.py +4 -2
  38. validmind-2.10.0rc1.dist-info/METADATA +845 -0
  39. {validmind-2.9.1.dist-info → validmind-2.10.0rc1.dist-info}/RECORD +42 -42
  40. validmind-2.9.1.dist-info/METADATA +0 -137
  41. {validmind-2.9.1.dist-info → validmind-2.10.0rc1.dist-info}/LICENSE +0 -0
  42. {validmind-2.9.1.dist-info → validmind-2.10.0rc1.dist-info}/WHEEL +0 -0
  43. {validmind-2.9.1.dist-info → validmind-2.10.0rc1.dist-info}/entry_points.txt +0 -0
validmind/__init__.py CHANGED
@@ -32,15 +32,21 @@ After you have pasted the code snippet into your development source code and exe
32
32
  """
33
33
  import threading
34
34
  import warnings
35
+ from importlib import metadata
35
36
 
36
- import pkg_resources
37
37
  from IPython.display import HTML, display
38
38
 
39
39
  # Ignore Numba warnings. We are not requiring this package directly
40
- from numba.core.errors import NumbaDeprecationWarning, NumbaPendingDeprecationWarning
40
+ try:
41
+ from numba.core.errors import (
42
+ NumbaDeprecationWarning,
43
+ NumbaPendingDeprecationWarning,
44
+ )
41
45
 
42
- warnings.simplefilter("ignore", category=NumbaDeprecationWarning)
43
- warnings.simplefilter("ignore", category=NumbaPendingDeprecationWarning)
46
+ warnings.simplefilter("ignore", category=NumbaDeprecationWarning)
47
+ warnings.simplefilter("ignore", category=NumbaPendingDeprecationWarning)
48
+ except ImportError:
49
+ ...
44
50
 
45
51
  from .__version__ import __version__ # noqa: E402
46
52
  from .api_client import init, log_metric, log_text, reload
@@ -81,7 +87,12 @@ def check_version():
81
87
  # get the installed vs running version of validmind
82
88
  # to make sure we are using the latest installed version
83
89
  # in case user has updated the package but forgot to restart the kernel
84
- installed = pkg_resources.get_distribution("validmind").version
90
+ try:
91
+ installed = metadata.version("validmind")
92
+ except metadata.PackageNotFoundError:
93
+ # Package metadata not found, skip version check
94
+ return
95
+
85
96
  running = __version__
86
97
 
87
98
  if parse_version(installed) > parse_version(running):
validmind/__version__.py CHANGED
@@ -1 +1 @@
1
- __version__ = "2.9.1"
1
+ __version__ = "2.10.0-rc.1"
@@ -9,13 +9,25 @@ from typing import Any, Dict, Optional, Tuple
9
9
 
10
10
  import numpy as np
11
11
  import pandas as pd
12
- import scorecardpy as sc
13
12
  import statsmodels.api as sm
14
13
  import xgboost as xgb
15
14
  from sklearn.ensemble import RandomForestClassifier
16
15
  from sklearn.model_selection import train_test_split
17
16
 
18
17
  import validmind as vm
18
+ from validmind.errors import MissingDependencyError
19
+
20
+ try:
21
+ import scorecardpy as sc
22
+ except ImportError as e:
23
+ if "scorecardpy" in str(e):
24
+ raise MissingDependencyError(
25
+ "Missing required package `scorecardpy` for credit risk demos. "
26
+ "Please run `pip install validmind[credit_risk]` or `pip install scorecardpy`.",
27
+ required_dependencies=["scorecardpy"],
28
+ extra="credit_risk",
29
+ ) from e
30
+ raise e
19
31
 
20
32
  current_path = os.path.dirname(os.path.abspath(__file__))
21
33
  dataset_path = os.path.join(current_path, "datasets")
@@ -7,10 +7,11 @@ import textwrap
7
7
  from typing import Optional, Tuple
8
8
 
9
9
  import pandas as pd
10
- from datasets import load_dataset
11
10
  from IPython.display import HTML, display
12
11
  from tabulate import tabulate
13
12
 
13
+ from validmind.errors import MissingDependencyError
14
+
14
15
  # Define column names
15
16
  text_column = "article"
16
17
  target_column = "highlights"
@@ -37,6 +38,19 @@ def load_data(
37
38
  Tuple containing (train_df, test_df) DataFrames with the loaded data.
38
39
  """
39
40
  if source == "online":
41
+ try:
42
+ from datasets import load_dataset
43
+ except ImportError as e:
44
+ if "datasets" in str(e):
45
+ raise MissingDependencyError(
46
+ "Missing required package `datasets` for CNN Daily Mail. "
47
+ "Please run `pip install validmind[datasets]` or "
48
+ "`pip install datasets` to use CNN Daily Mail dataset",
49
+ required_dependencies=["datasets"],
50
+ extra="datasets",
51
+ ) from e
52
+ raise e
53
+
40
54
  # Load online data without predictions
41
55
  cnn_dataset = load_dataset("cnn_dailymail", "3.0.0")
42
56
  train_df = cnn_dataset["train"].to_pandas()
@@ -4,10 +4,22 @@
4
4
 
5
5
 
6
6
  import pandas as pd
7
- from scipy.stats import chi2_contingency
8
7
 
9
8
  from validmind import tags, tasks
10
- from validmind.errors import SkipTestError
9
+ from validmind.errors import MissingDependencyError, SkipTestError
10
+
11
+ try:
12
+ from scipy.stats import chi2_contingency
13
+ except ImportError as e:
14
+ if "scipy" in str(e):
15
+ raise MissingDependencyError(
16
+ "Missing required package `scipy` for ChiSquaredFeaturesTable. "
17
+ "Please run `pip install validmind[stats]` to use statistical tests",
18
+ required_dependencies=["scipy"],
19
+ extra="stats",
20
+ ) from e
21
+
22
+ raise e
11
23
 
12
24
 
13
25
  @tags("tabular_data", "categorical_data", "statistical_test")
@@ -5,14 +5,25 @@
5
5
  from typing import Any, Dict, Tuple
6
6
 
7
7
  import pandas as pd
8
- from arch.unitroot import DFGLS
9
8
  from numpy.linalg import LinAlgError
10
9
 
11
10
  from validmind import RawData, tags, tasks
12
- from validmind.errors import SkipTestError
11
+ from validmind.errors import MissingDependencyError, SkipTestError
13
12
  from validmind.logging import get_logger
14
13
  from validmind.vm_models import VMDataset
15
14
 
15
+ try:
16
+ from arch.unitroot import DFGLS
17
+ except ImportError as e:
18
+ if "arch" in str(e):
19
+ raise MissingDependencyError(
20
+ "Missing required package `arch` for DickeyFullerGLS. "
21
+ "Please run `pip install validmind[stats]` to use statistical tests",
22
+ required_dependencies=["arch"],
23
+ extra="stats",
24
+ ) from e
25
+ raise e
26
+
16
27
  logger = get_logger(__name__)
17
28
 
18
29
 
@@ -6,14 +6,25 @@ from typing import Any, Dict
6
6
 
7
7
  import numpy as np
8
8
  import pandas as pd
9
- from arch.unitroot import PhillipsPerron
10
9
  from numpy.linalg import LinAlgError
11
10
 
12
11
  from validmind import tags, tasks
13
- from validmind.errors import SkipTestError
12
+ from validmind.errors import MissingDependencyError, SkipTestError
14
13
  from validmind.logging import get_logger
15
14
  from validmind.vm_models import VMDataset
16
15
 
16
+ try:
17
+ from arch.unitroot import PhillipsPerron
18
+ except ImportError as e:
19
+ if "arch" in str(e):
20
+ raise MissingDependencyError(
21
+ "Missing required package `arch` for PhillipsPerronArch. "
22
+ "Please run `pip install validmind[stats]` to use statistical tests",
23
+ required_dependencies=["arch"],
24
+ extra="stats",
25
+ ) from e
26
+ raise e
27
+
17
28
  logger = get_logger(__name__)
18
29
 
19
30
 
@@ -9,11 +9,23 @@ import numpy as np
9
9
  import pandas as pd
10
10
  import plotly.graph_objects as go
11
11
  from plotly.subplots import make_subplots
12
- from scipy import stats
13
12
  from statsmodels.tsa.seasonal import seasonal_decompose
14
13
 
15
14
  from validmind import RawData, tags, tasks
16
- from validmind.errors import SkipTestError
15
+ from validmind.errors import MissingDependencyError, SkipTestError
16
+
17
+ try:
18
+ from scipy import stats
19
+ except ImportError as e:
20
+ if "scipy" in str(e):
21
+ raise MissingDependencyError(
22
+ "Missing required package `scipy` for SeasonalDecompose. "
23
+ "Please run `pip install validmind[stats]` to use statistical tests",
24
+ required_dependencies=["scipy"],
25
+ extra="stats",
26
+ ) from e
27
+
28
+ raise e
17
29
  from validmind.logging import get_logger
18
30
  from validmind.vm_models import VMDataset
19
31
 
@@ -6,9 +6,22 @@
6
6
  from typing import Tuple
7
7
 
8
8
  import pandas as pd
9
- from scipy import stats
10
9
 
11
10
  from validmind import RawData, tags, tasks
11
+ from validmind.errors import MissingDependencyError
12
+
13
+ try:
14
+ from scipy import stats
15
+ except ImportError as e:
16
+ if "scipy" in str(e):
17
+ raise MissingDependencyError(
18
+ "Missing required package `scipy` for ShapiroWilk. "
19
+ "Please run `pip install validmind[stats]` to use statistical tests",
20
+ required_dependencies=["scipy"],
21
+ extra="stats",
22
+ ) from e
23
+
24
+ raise e
12
25
 
13
26
 
14
27
  @tasks("classification", "regression")
@@ -3,9 +3,22 @@
3
3
  # SPDX-License-Identifier: AGPL-3.0 AND ValidMind Commercial
4
4
 
5
5
  import pandas as pd
6
- from scipy.stats import kurtosis, skew
7
6
 
8
7
  from validmind import tags, tasks
8
+ from validmind.errors import MissingDependencyError
9
+
10
+ try:
11
+ from scipy.stats import kurtosis, skew
12
+ except ImportError as e:
13
+ if "scipy" in str(e):
14
+ raise MissingDependencyError(
15
+ "Missing required package `scipy` for TimeSeriesDescriptiveStatistics. "
16
+ "Please run `pip install validmind[stats]` to use statistical tests",
17
+ required_dependencies=["scipy"],
18
+ extra="stats",
19
+ ) from e
20
+
21
+ raise e
9
22
 
10
23
 
11
24
  @tags("time_series_data", "analysis")
@@ -9,7 +9,20 @@ import numpy as np
9
9
  import pandas as pd
10
10
  import plotly.express as px
11
11
  import plotly.graph_objects as go
12
- import scorecardpy as sc
12
+
13
+ from validmind.errors import MissingDependencyError
14
+
15
+ try:
16
+ import scorecardpy as sc
17
+ except ImportError as e:
18
+ if "scorecardpy" in str(e):
19
+ raise MissingDependencyError(
20
+ "Missing required package `scorecardpy` for WOEBinPlots. "
21
+ "Please run `pip install validmind[credit_risk]` to use these tests",
22
+ required_dependencies=["scorecardpy"],
23
+ extra="credit_risk",
24
+ ) from e
25
+ raise e
13
26
  from plotly.subplots import make_subplots
14
27
 
15
28
  from validmind import RawData, tags, tasks
@@ -5,12 +5,23 @@
5
5
  from typing import Dict, Tuple
6
6
 
7
7
  import pandas as pd
8
- import scorecardpy as sc
9
8
 
10
9
  from validmind import RawData, tags, tasks
11
- from validmind.errors import SkipTestError
10
+ from validmind.errors import MissingDependencyError, SkipTestError
12
11
  from validmind.vm_models import VMDataset
13
12
 
13
+ try:
14
+ import scorecardpy as sc
15
+ except ImportError as e:
16
+ if "scorecardpy" in str(e):
17
+ raise MissingDependencyError(
18
+ "Missing required package `scorecardpy` for WOEBinTable. "
19
+ "Please run `pip install validmind[credit_risk]` to use these tests",
20
+ required_dependencies=["scorecardpy"],
21
+ extra="credit_risk",
22
+ ) from e
23
+ raise e
24
+
14
25
 
15
26
  @tags("tabular_data", "categorical_data")
16
27
  @tasks("classification")
@@ -5,14 +5,25 @@
5
5
  from typing import Any, Dict, Tuple
6
6
 
7
7
  import pandas as pd
8
- from arch.unitroot import ZivotAndrews
9
8
  from numpy.linalg import LinAlgError
10
9
 
11
10
  from validmind import RawData, tags, tasks
12
- from validmind.errors import SkipTestError
11
+ from validmind.errors import MissingDependencyError, SkipTestError
13
12
  from validmind.logging import get_logger
14
13
  from validmind.vm_models import VMDataset
15
14
 
15
+ try:
16
+ from arch.unitroot import ZivotAndrews
17
+ except ImportError as e:
18
+ if "arch" in str(e):
19
+ raise MissingDependencyError(
20
+ "Missing required package `arch` for ZivotAndrewsArch. "
21
+ "Please run `pip install validmind[stats]` to use statistical tests",
22
+ required_dependencies=["arch"],
23
+ extra="stats",
24
+ ) from e
25
+ raise e
26
+
16
27
  logger = get_logger(__name__)
17
28
 
18
29
 
@@ -5,13 +5,25 @@
5
5
  from collections import Counter
6
6
  from typing import Tuple
7
7
 
8
- import nltk
9
8
  import plotly.graph_objects as go
10
- from nltk.corpus import stopwords
11
9
 
12
10
  from validmind import RawData, tags, tasks
11
+ from validmind.errors import MissingDependencyError
13
12
  from validmind.vm_models import VMDataset
14
13
 
14
+ try:
15
+ import nltk
16
+ from nltk.corpus import stopwords
17
+ except ImportError as e:
18
+ if "nltk" in str(e).lower():
19
+ raise MissingDependencyError(
20
+ "Missing required package `nltk` for CommonWords. "
21
+ "Please run `pip install validmind[nlp]` to use NLP tests",
22
+ required_dependencies=["nltk"],
23
+ extra="nlp",
24
+ ) from e
25
+ raise e
26
+
15
27
 
16
28
  @tags("nlp", "text_data", "visualization", "frequency_analysis")
17
29
  @tasks("text_classification", "text_summarization")
@@ -6,9 +6,22 @@ from typing import Tuple
6
6
 
7
7
  import plotly.express as px
8
8
  import plotly.graph_objects as go
9
- from langdetect import LangDetectException, detect
10
9
 
11
10
  from validmind import RawData, tags, tasks
11
+ from validmind.errors import MissingDependencyError
12
+
13
+ try:
14
+ from langdetect import LangDetectException, detect
15
+ except ImportError as e:
16
+ if "langdetect" in str(e):
17
+ raise MissingDependencyError(
18
+ "Missing required package `langdetect` for LanguageDetection. "
19
+ "Please run `pip install validmind[nlp]` to use NLP tests",
20
+ required_dependencies=["langdetect"],
21
+ extra="nlp",
22
+ ) from e
23
+
24
+ raise e
12
25
 
13
26
 
14
27
  @tags("nlp", "text_data", "visualization")
@@ -8,9 +8,21 @@ from typing import Dict, Tuple
8
8
  import pandas as pd
9
9
  import plotly.express as px
10
10
  import plotly.graph_objects as go
11
- from textblob import TextBlob
12
11
 
13
12
  from validmind import RawData, tags, tasks
13
+ from validmind.errors import MissingDependencyError
14
+
15
+ try:
16
+ from textblob import TextBlob
17
+ except ImportError as e:
18
+ if "textblob" in str(e).lower():
19
+ raise MissingDependencyError(
20
+ "Missing required package `textblob` for PolarityAndSubjectivity. "
21
+ "Please run `pip install validmind[nlp]` to use NLP tests",
22
+ required_dependencies=["textblob"],
23
+ extra="nlp",
24
+ ) from e
25
+ raise e
14
26
 
15
27
 
16
28
  @tags("nlp", "text_data", "data_validation")
@@ -8,9 +8,21 @@ from typing import Tuple
8
8
  import matplotlib.pyplot as plt
9
9
  import nltk
10
10
  import seaborn as sns
11
- from nltk.sentiment import SentimentIntensityAnalyzer
12
11
 
13
12
  from validmind import RawData, tags, tasks
13
+ from validmind.errors import MissingDependencyError
14
+
15
+ try:
16
+ from nltk.sentiment import SentimentIntensityAnalyzer
17
+ except ImportError as e:
18
+ if "nltk" in str(e).lower():
19
+ raise MissingDependencyError(
20
+ "Missing required package `nltk` for Sentiment. "
21
+ "Please run `pip install validmind[nlp]` to use NLP tests",
22
+ required_dependencies=["nltk"],
23
+ extra="nlp",
24
+ ) from e
25
+ raise e
14
26
 
15
27
 
16
28
  @tags("nlp", "text_data", "data_validation")
@@ -9,14 +9,26 @@ Threshold based tests
9
9
  from collections import defaultdict
10
10
  from typing import Dict, Tuple
11
11
 
12
- import nltk
13
12
  import pandas as pd
14
13
  import plotly.graph_objects as go
15
- from nltk.corpus import stopwords
16
14
 
17
15
  from validmind import RawData, tags, tasks
16
+ from validmind.errors import MissingDependencyError
18
17
  from validmind.vm_models import VMDataset
19
18
 
19
+ try:
20
+ import nltk
21
+ from nltk.corpus import stopwords
22
+ except ImportError as e:
23
+ if "nltk" in str(e).lower():
24
+ raise MissingDependencyError(
25
+ "Missing required package `nltk` for StopWords. "
26
+ "Please run `pip install validmind[nlp]` to use NLP tests",
27
+ required_dependencies=["nltk"],
28
+ extra="nlp",
29
+ ) from e
30
+ raise e
31
+
20
32
 
21
33
  @tags("nlp", "text_data", "frequency_analysis", "visualization")
22
34
  @tasks("text_classification", "text_summarization")
@@ -5,15 +5,27 @@
5
5
  import string
6
6
  from typing import Tuple
7
7
 
8
- import nltk
9
8
  import pandas as pd
10
9
  import plotly.express as px
11
10
  import plotly.graph_objects as go
12
- from nltk.corpus import stopwords
13
11
 
14
12
  from validmind import RawData, tags, tasks
13
+ from validmind.errors import MissingDependencyError
15
14
  from validmind.vm_models import VMDataset
16
15
 
16
+ try:
17
+ import nltk
18
+ from nltk.corpus import stopwords
19
+ except ImportError as e:
20
+ if "nltk" in str(e).lower():
21
+ raise MissingDependencyError(
22
+ "Missing required package `nltk` for TextDescription. "
23
+ "Please run `pip install validmind[nlp]` to use NLP tests",
24
+ required_dependencies=["nltk"],
25
+ extra="nlp",
26
+ ) from e
27
+ raise e
28
+
17
29
 
18
30
  def create_metrics_df(df, text_column, unwanted_tokens, lang):
19
31
  stop_words = set(word.lower() for word in stopwords.words(lang))
@@ -4,11 +4,23 @@
4
4
 
5
5
  from typing import Tuple
6
6
 
7
- import evaluate
8
7
  import matplotlib.pyplot as plt
9
8
  import seaborn as sns
10
9
 
11
10
  from validmind import RawData, tags, tasks
11
+ from validmind.errors import MissingDependencyError
12
+
13
+ try:
14
+ import evaluate
15
+ except ImportError as e:
16
+ if "evaluate" in str(e):
17
+ raise MissingDependencyError(
18
+ "Missing required package `evaluate` for Toxicity. "
19
+ "Please run `pip install validmind[nlp]` to use NLP tests",
20
+ required_dependencies=["evaluate"],
21
+ extra="nlp",
22
+ ) from e
23
+ raise e
12
24
 
13
25
 
14
26
  @tags("nlp", "text_data", "data_validation")
@@ -4,14 +4,26 @@
4
4
 
5
5
  from typing import Tuple
6
6
 
7
- import evaluate
8
7
  import pandas as pd
9
8
  import plotly.graph_objects as go
10
9
 
11
10
  from validmind import RawData, tags, tasks
11
+ from validmind.errors import MissingDependencyError
12
12
  from validmind.tests.utils import validate_prediction
13
13
  from validmind.vm_models import VMDataset, VMModel
14
14
 
15
+ try:
16
+ import evaluate
17
+ except ImportError as e:
18
+ if "evaluate" in str(e):
19
+ raise MissingDependencyError(
20
+ "Missing required package `evaluate` for BertScore. "
21
+ "Please run `pip install validmind[nlp]` to use NLP tests",
22
+ required_dependencies=["evaluate"],
23
+ extra="nlp",
24
+ ) from e
25
+ raise e
26
+
15
27
 
16
28
  @tags("nlp", "text_data", "visualization")
17
29
  @tasks("text_classification", "text_summarization")
@@ -75,7 +87,6 @@ def BertScore(
75
87
  # Ensure equal lengths and get truncated data if necessary
76
88
  y_true, y_pred = validate_prediction(y_true, y_pred)
77
89
 
78
- # Load the BERT evaluation metric
79
90
  bert = evaluate.load("bertscore")
80
91
 
81
92
  # Compute the BERT score
@@ -4,14 +4,26 @@
4
4
 
5
5
  from typing import Tuple
6
6
 
7
- import evaluate
8
7
  import pandas as pd
9
8
  import plotly.graph_objects as go
10
9
 
11
10
  from validmind import RawData, tags, tasks
11
+ from validmind.errors import MissingDependencyError
12
12
  from validmind.tests.utils import validate_prediction
13
13
  from validmind.vm_models import VMDataset, VMModel
14
14
 
15
+ try:
16
+ import evaluate
17
+ except ImportError as e:
18
+ if "evaluate" in str(e):
19
+ raise MissingDependencyError(
20
+ "Missing required package `evaluate` for BleuScore. "
21
+ "Please run `pip install validmind[nlp]` to use NLP tests",
22
+ required_dependencies=["evaluate"],
23
+ extra="nlp",
24
+ ) from e
25
+ raise e
26
+
15
27
 
16
28
  @tags("nlp", "text_data", "visualization")
17
29
  @tasks("text_classification", "text_summarization")
@@ -70,7 +82,6 @@ def BleuScore(
70
82
  # Ensure equal lengths and get truncated data if necessary
71
83
  y_true, y_pred = validate_prediction(y_true, y_pred)
72
84
 
73
- # Load the BLEU evaluation metric
74
85
  bleu = evaluate.load("bleu")
75
86
 
76
87
  # Calculate BLEU scores
@@ -4,11 +4,23 @@
4
4
 
5
5
  from typing import Tuple
6
6
 
7
- import nltk
8
7
  import pandas as pd
9
8
  import plotly.graph_objects as go
10
9
 
11
10
  from validmind import RawData, tags, tasks
11
+ from validmind.errors import MissingDependencyError
12
+
13
+ try:
14
+ import nltk
15
+ except ImportError as e:
16
+ if "nltk" in str(e).lower():
17
+ raise MissingDependencyError(
18
+ "Missing required package `nltk` for ContextualRecall. "
19
+ "Please run `pip install validmind[nlp]` to use NLP tests",
20
+ required_dependencies=["nltk"],
21
+ extra="nlp",
22
+ ) from e
23
+ raise e
12
24
  from validmind.tests.utils import validate_prediction
13
25
  from validmind.vm_models import VMDataset, VMModel
14
26
 
@@ -4,14 +4,26 @@
4
4
 
5
5
  from typing import Tuple
6
6
 
7
- import evaluate
8
7
  import pandas as pd
9
8
  import plotly.graph_objects as go
10
9
 
11
10
  from validmind import RawData, tags, tasks
11
+ from validmind.errors import MissingDependencyError
12
12
  from validmind.tests.utils import validate_prediction
13
13
  from validmind.vm_models import VMDataset, VMModel
14
14
 
15
+ try:
16
+ import evaluate
17
+ except ImportError as e:
18
+ if "evaluate" in str(e):
19
+ raise MissingDependencyError(
20
+ "Missing required package `evaluate` for MeteorScore. "
21
+ "Please run `pip install validmind[nlp]` to use NLP tests",
22
+ required_dependencies=["evaluate"],
23
+ extra="nlp",
24
+ ) from e
25
+ raise e
26
+
15
27
 
16
28
  @tags("nlp", "text_data", "visualization")
17
29
  @tasks("text_classification", "text_summarization")
@@ -73,7 +85,6 @@ def MeteorScore(
73
85
 
74
86
  validate_prediction(y_true, y_pred)
75
87
 
76
- # Load the METEOR evaluation metric
77
88
  meteor = evaluate.load("meteor")
78
89
 
79
90
  # Calculate METEOR scores