/ src / evidently / legacy / descriptors / words_descriptor.py
words_descriptor.py
 1  from typing import List
 2  
 3  from evidently.legacy.features import words_feature
 4  from evidently.legacy.features.generated_features import FeatureDescriptor
 5  from evidently.legacy.features.generated_features import GeneratedFeature
 6  
 7  
 8  class ExcludesWords(FeatureDescriptor):
 9      class Config:
10          type_alias = "evidently:descriptor:ExcludesWords"
11  
12      words_list: List[str]
13      mode: str = "all"
14      lemmatize: bool = True
15  
16      def feature(self, column_name: str) -> GeneratedFeature:
17          return words_feature.ExcludesWords(
18              column_name,
19              self.words_list,
20              self.mode,
21              self.lemmatize,
22              self.display_name,
23          )
24  
25  
26  class IncludesWords(FeatureDescriptor):
27      class Config:
28          type_alias = "evidently:descriptor:IncludesWords"
29  
30      words_list: List[str]
31      mode: str = "any"
32      lemmatize: bool = True
33  
34      def feature(self, column_name: str) -> GeneratedFeature:
35          return words_feature.IncludesWords(
36              column_name,
37              self.words_list,
38              self.mode,
39              self.lemmatize,
40              self.display_name,
41          )
42  
43  
44  class WordMatch(FeatureDescriptor):
45      class Config:
46          type_alias = "evidently:descriptor:WordMatch"
47  
48      with_column: str
49      mode: str = "any"
50      lemmatize: bool = True
51  
52      def feature(self, column_name: str) -> GeneratedFeature:
53          return words_feature.WordMatch(
54              columns=[column_name, self.with_column],
55              mode=self.mode,
56              lemmatize=self.lemmatize,
57              display_name=self.display_name,
58          )
59  
60  
61  class WordNoMatch(FeatureDescriptor):
62      class Config:
63          type_alias = "evidently:descriptor:WordNoMatch"
64  
65      with_column: str
66      mode: str = "any"
67      lemmatize: bool = True
68  
69      def feature(self, column_name: str) -> GeneratedFeature:
70          return words_feature.WordNoMatch(
71              columns=[column_name, self.with_column],
72              mode=self.mode,
73              lemmatize=self.lemmatize,
74              display_name=self.display_name,
75          )