sparknlp_jsl.annotator.deid.deidentication_params
#
Module Contents#
Classes#
It is a base class that contains all the params that are common between DeIdentificationModel |
- class DeIdentificationParams#
Bases:
sparknlp_jsl.annotator.deid.base_deidentification_params.BaseDeIdentificationParams
It is a base class that contains all the params that are common between DeIdentificationModel and DeIdentification annotators.
- Parameters:
dateTag – Tag representing dates in the obfuscate reference file (default: DATE)
dateToYear – True if we want the model to transform dates into years, False otherwise.
minYear – Minimum year to be used when transforming dates into years. Default: ‘1929’
consistentObfuscation – Whether to replace very similar entities in a document with the same randomized term (default: true) The similarity is based on the Levenshtein Distance between the words.
sameEntityThreshold – Similarity threshold [0.0-1.0] to consider two appearances of an entity as
the same
(default: 0.9).regexOverride – If is true prioritize the regex entities, if is false prioritize the ner.
ignoreRegex – Select if you want to use the regex file loaded in the model. If true the default regex file will be not used. The default value is false.
isRandomDateDisplacement – Use a random displacement days in dates entities, that random number is based on the seed parameter. If true use random displacement days in dates entities, if false use the days parameter. The default value is false.
mappingsColumn – This is the mapping column that will return the Annotations chunks with the fake entities.
returnEntityMappings – With this property, you can select if you want to return mapping column
blackList – List of entities that will be ignored in the regex rules. The rest will be processed. The default values are “IBAN”,”ZIP”,”NPI”,”DLN”,”PASSPORT”,”C_CARD”,”DEA”,”SSN”, “IP”, “DEA”.
blackListEntities – List of entities coming from NER or regex rules that will be ignored for masking or obfuscation. The rest entities will be processed. Default: []
obfuscationStrategyOnException – Sets the obfuscation strategy to be applied when an exception occurs. Four possible values are supported: - “mask”: The original chunk is replaced with a masking pattern. - “default”: The original chunk is replaced with a default faker. - “skip”: The original chunk is not replaced with any faker. - “exception”: Throws the exception. The default obfuscation strategy is “default”.
metadataMaskingPolicy – If specified, the metadata includes the masked form of the document. Select the following masking policy if you want to return the masked form in the metadata: - ‘entity_labels’: Replace the values with the entity value. - ‘same_length_chars’: Replace the name with the asterix with same length minus two plus brackets on both end.If the entity is less than 3 chars (like Jo, or 5), we can just use asterix without brackets. - ‘fixed_length_chars’: Replace the obfuscated entity with a masking sequence composed of a fixed number of asterisk. - ‘same_length_chars_without_brackets’: Replace the name with the asterix with same length without brackets. - ‘entity_labels_without_brackets’: Replace the values with the entity value without brackets. - Default: “”
obfuscateByAgeGroups – Whether to obfuscate ages based on age groups. When True, the age groups specified in the
ageGroups
parameter will be used to obfuscate ages. When False, the age ranges specified in theageRanges
parameter will be used to obfuscate ages. Default: FalseageGroups (dict[str, List[int]]) – A dictionary of age groups to obfuscate ages. For this parameter to be active, the
obfuscateByAgeGroups
parameter must be true. If the givenageGroups
do not fully contain the ages, the ages continue to be obfuscated according to theageRanges
parameter. The dictionary should contain the age group name as the key and an list of two integers as the value. The first integer is the lower bound of the age group, and the second integer is the upper bound of the age group. Default age groups are as follows in the English language: >>> { “baby”: [0, 1], … “toddler”: [1, 4], … “child”: [4, 13], … “teenager”: [13, 20], … “adult”: [20, 65], … “senior”: [65, 100] }groupByCol (str) – The column name used to group the dataset. This parameter is used in conjunction with consistentObfuscation to ensure consistent obfuscation within each group. When groupByCol is set, the dataset is partitioned into groups based on the values of the specified column. Default: “” (empty string, meaning no grouping)
chunkMatching (dict) – Performs entity chunk matching across rows or within groups in a DataFrame. This function is useful in de-identification pipelines where certain entity labels like “NAME” or “DATE” may be missing in some rows and need to be filled from other rows within the same group.
- additionalDateFormats#
- ageRanges#
- ageRangesByHipaa#
- blackList#
- blackListEntities#
- consistentAcrossNameParts#
- consistentObfuscation#
- countryObfuscation#
- dateEntities#
- dateFormats#
- dateTag#
- dateToYear#
- days#
- fakerLengthOffset#
- fixedMaskLength#
- genderAwareness#
- geoConsistency#
- groupByCol#
- ignoreRegex#
- isRandomDateDisplacement#
- keepMonth#
- keepTextSizeForObfuscation#
- keepYear#
- language#
- mappingsColumn#
- maskingPolicy#
- metadataMaskingPolicy#
- minYear#
- mode#
- obfuscateByAgeGroups#
- obfuscateDate#
- obfuscateRefSource#
- obfuscationStrategyOnException#
- outputAsDocument#
- regexOverride#
- region#
- returnEntityMappings#
- sameEntityThreshold#
- sameLengthFormattedEntities#
- seed#
- unnormalizedDateMode#
- useShifDays#
- useShiftDays#
- zipCodeTag#
- getChunkMatching()#
Gets the value of chunkMatching or its default value.
- getSelectiveObfuscateRefSource()#
Returns the dictionary of entity names to their obfuscate ref sources.
- getUseShiftDays()#
Return the useShiftDays value.
- setAdditionalDateFormats(formats: list)#
Sets additional date formats to be considered during date obfuscation. This allows users to specify custom date formats in addition to the default date formats.
- Parameters:
formats (list[str]) – List of additional date formats to be considered during date obfuscation.
- setAgeGroups(value: dict)#
Sets a dictionary of age groups to obfuscate ages. For this parameter to be active, the
obfuscateByAgeGroups
parameter must be true. If the givenageGroups
do not fully contain the ages, the ages continue to be obfuscated according to theageRanges
parameter. The dictionary should contain the age group name as the key and an list of two integers as the value. The first integer is the lower bound of the age group, and the second integer is the upper bound of the age group. Default age groups are as follows in the English language:Default and example dictionary#
>>> { "baby": [0, 1], ... "toddler": [1, 4], ... "child": [4, 13], ... "teenager": [13, 20], ... "adult": [20, 65], ... "senior": [65, 100] }
- param value:
A dictionary of age groups to obfuscate ages.
- type value:
dict[str, List[int]]
- setAgeRanges(value: list)#
Sets list of integer specifying limits of the age groups to preserve during obfuscation.
- Parameters:
value (List[int]) – List of integer specifying limits of the age groups to preserve during obfuscation.
- setAgeRangesByHipaa(value: bool)#
Sets whether to obfuscate ages based on HIPAA (Health Insurance Portability and Accountability Act) Privacy Rule.
The HIPAA Privacy Rule mandates that ages from patients older than 90 years must be obfuscated, while age for patients 90 years or younger can remain unchanged.
- Parameters:
value (bool) – If True, age entities larger than 90 will be obfuscated as per HIPAA Privacy Rule, the others will remain unchanged. If False, ageRanges parameter is valid. Default: False.
- setBlackList(s)#
Sets a list of entities that will be ignored in the regex file. The rest will be processed. The default values are: “IBAN”, “ZIP”, “NPI”, “DLN”, “PASSPORT”, “C_CARD”, “DEA”, “SSN”, “IP”, “DEA”.
- Parameters:
s (list) – List of entities that will be ignored in the regex file. The rest will be processed.
- setBlackListEntities(value)#
Sets a list of entities coming from NER or regex rules that will be ignored for masking or obfuscation. The rest entities will be processed. Default: []
- Parameters:
value (list) – List of entities coming from NER or regex rules that will be ignored for masking or obfuscation.
- setChunkMatching(chunkMatching)#
Sets entity chunk matching configuration for de-identification pipelines.
This method enables matching of entity chunks (e.g., “NAME”, “DATE”) across multiple rows or within grouped data. Useful when certain entity labels are missing in some rows and need to be inferred from others in the same group.
- Parameters:
chunkMatching (dict[str, float]) – A dictionary specifying entity labels and associated confidence thresholds for chunk matching logic.
Notes
When applying the method across multiple rows, the groupByCol parameter is required.
- setConsistentAcrossNameParts(value: bool)#
Sets whether to enforce consistent obfuscation across name parts, even when they appear separately. When set to True, the same transformation or obfuscation will be applied consistently to all parts of the same name entity, even if those parts appear separately.
- For example, if “John Smith” is obfuscated as “Liam Brown”, then:
When the full name “John Smith” appears, it will be replaced with “Liam Brown”
When “John” or “Smith” appear individually, they will still be obfuscated as “Liam” and “Brown” respectively, ensuring consistency in name transformation.
Default: True
- Parameters:
value (bool) – Whether to enforce consistent obfuscation across name parts.
- setConsistentObfuscation(s)#
Sets whether to replace very similar entities in a document with the same randomized term (default: true). The similarity is based on the Levenshtein Distance between the words.
- Parameters:
s (str) – Whether to replace very similar entities in a document with the same randomized term. The similarity is based on the Levenshtein Distance between the words.
- setCountryObfuscation(value: bool)#
Sets whether to obfuscate country entities or not. If True, country entities will be obfuscated. If False, country entities will not be obfuscated.
- Parameters:
value (bool) – Whether to obfuscate country entities or not. Default: False.
- setDateEntities(entities: list)#
Sets list of date entities. Default: [‘DATE’, ‘DOB’, ‘DOD’, ‘EFFDATE’, ‘FISCAL_YEAR’]
- Parameters:
entities (list[str]) – List of date entities.
- setDateFormats(formats: list)#
Sets list of date formats to automatically displace if parsed
- Parameters:
formats (list[str]) – List of date formats to automatically displace if parsed
- setDateTag(tag: str)#
Set Tag representing what are the NER entity (default: DATE)
- Parameters:
tag (str) – Tag representing what are the NER entity (default: DATE)
- setDateToYear(s)#
Sets transform dates into years.
- Parameters:
s (bool) – True if we want the model to transform dates into years, False otherwise.
- setDays(day: int)#
Sets number of days to obfuscate by displacement the dates. If not provided a random integer between 1 and 60 will be used.
- Parameters:
day (int) – Number of days to obfuscate by displacement the dates.
- setFakerLengthOffset(value)#
It specifies how much length deviation is accepted in obfuscation, with keepTextSizeForObfuscation enabled. Must be greater than 0. Default: 3
- Parameters:
value (int) – Integer value to specify length deviation.
- setFixedMaskLength(length)#
The length of the masking sequence in case of fixed_length_chars masking policy. Default: 7 :param length: The length of the masking sequence in case of fixed_length_chars masking policy. :type length: int
- setGenderAwareness(value: bool)#
Set whether to use gender-aware names or not during obfuscation. This param effects only names. If value is true, it might decrease performance. Default: False
- Parameters:
value (str) – Whether to use gender-aware names or not during obfuscation. This param effects only names. If value is true, it might decrease performance. Default: False
- setGeoConsistency(value: bool)#
Sets whether to enforce consistent obfuscation across geographical entities: state, city, street, zip and phone.
Functionality Overview#
This parameter enables intelligent geographical entity obfuscation that maintains realistic relationships between different geographic components. When enabled, the system ensures that obfuscated addresses form coherent, valid combinations rather than random replacements.
Supported Entity Types#
The following geographical entities are processed with priority order:
state (Priority: 0) - US state names
city (Priority: 1) - City names
zip (Priority: 2) - Zip codes
street (Priority: 3) - Street addresses
phone (Priority: 4) - Phone numbers
Language Requirement#
IMPORTANT: Geographic consistency is only applied when:
geoConsistency
parameter is set toTrue
ANDlanguage
parameter is set to"en"
For non-English configurations, this feature is automatically disabled regardless of the parameter setting.
Consistency Algorithm#
When geographical entities comes from the chunk columns:
Entity Grouping: All geographic entities are identified and grouped by type
Fake Address Selection: A consistent set of fake US addresses is selected using hash-based deterministic selection to ensure reproducibility
Priority-Based Mapping: Entities are mapped to fake addresses following the priority order (state → city → zip → street → phone)
Consistent Replacement: All entities of the same type within a document use the same fake address pool, maintaining geographical coherence
Parameter Interactions#
IMPORTANT: Enabling this parameter automatically disables:
keepTextSizeForObfuscation
- Text size preservation is not maintainedconsistentObfuscation
- Standard consistency rules are overriddenfile-based fakers
This is necessary because geographic consistency requires specific fake address selection that may not preserve original text lengths or follow standard obfuscation patterns.
Examples
Basic usage:
>>> from sparknlp_jsl.annotator import DeIdentification >>> deid = DeIdentification() \ ... .setInputCols(["sentence", "token", "ner_chunk"]) \ ... .setOutputCol("deidentified") \ ... .setGeoConsistency(True) \ ... .setLanguage("en")
- param value:
Whether to enforce consistent obfuscation across geographical entities. Default is False.
- type value:
bool
- setGroupByCol(value)#
Sets the column name used to group the dataset. This parameter is used in conjunction with consistentObfuscation to ensure consistent obfuscation within each group. When groupByCol is set, the dataset is partitioned into groups based on the values of the specified column.
Default: “” (empty string, meaning no grouping)
Notes
The column name must be a valid string in the input dataset.
The column must be of StringType.
This functionality can change order of the dataset, so it is recommended to use it with caution.
This functionality cannot be supported by LightPipeline.
- Parameters:
value (str) – The column name used to group the dataset.
- setIgnoreRegex(s)#
Sets whether you want to use regex or not. If the value is ‘True’, it can increase performance but might decrease accuracy. Default: False.
- Parameters:
s (bool) – Whether to use regex or not. If the value is ‘True’,
Default (it can increase performance but might decrease accuracy.) –
- setIsRandomDateDisplacement(s)#
Sets if you want to use random displacement in dates
- Parameters:
s (bool) – Boolean value to select if you want to use random displacement in dates
- setKeepMonth(value: bool)#
Sets whether to keep the month intact when obfuscating date entities. If True, the month will remain unchanged during the obfuscation process. If False, the month will be modified along with the year and day. Default: False.
- Parameters:
value (bool) – Whether to keep the month intact when obfuscating date entities.
- setKeepTextSizeForObfuscation(value: bool)#
It specifies whether the output should maintain the same character length as the input text. If True, the output text will remain the same if same length is available, else length might vary. If False, the output will be completely random. Default: False
- Parameters:
value (bool) – Whether to keep the text length same obfuscating entities.
- setKeepYear(value: bool)#
Sets whether to keep the year intact when obfuscating date entities. If True, the year will remain unchanged during the obfuscation process. If False, the year will be modified along with the month and day. Default: False.
- Parameters:
value (bool) – Whether to keep the year intact when obfuscating date entities.
- setLanguage(lang: str)#
The language used to select the regex file and some faker entities. The values are the following: ‘en’(English), ‘de’(German), ‘es’(Spanish), ‘fr’(French), ‘ar’(Arabic) or ‘ro’(Romanian). Default:’en’
- Parameters:
lang (str) – The language used to select the regex file and some faker entities. Default:’en’.
- setMappingsColumn(s)#
Sets the name of mapping column that will return the Annotations chunks with the fake entities
- Parameters:
s (str) – Mapping column that will return the Annotations chunks with the fake entities
- setMaskingPolicy(mask: str)#
- Sets the masking policy:
same_length_chars: Replace the obfuscated entity with a masking sequence composed of asterisks and surrounding squared brackets,
being the total length of the masking sequence of the same length as the original sequence. Example, Smith -> [***]. If the entity is less than 3 chars (like Jo, or 5), asterisks without brackets will be returned.
entity_labels: Replace the values with the corresponding entity labels.
fixed_length_chars: Replace the obfuscated entity with a masking sequence composed of a fixed number of asterisks.
entity_labels_without_brackets: Replace the values with the entity value without brackets.
same_length_chars_without_brackets: Replace the name with the asterisks with same length without brackets.
- Parameters:
mask (str) – The masking policy
- setMetadataMaskingPolicy(value: str)#
Sets metadata masking policy. If specified, the metadata includes the masked form of the document. Select the following masking policy if you want to return mask form in the metadata:
‘entity_labels’: Replace the values with the entity value.
‘same_length_chars’: Replace the name with the asterix with same length minus two plus brackets on both end.If the entity is less than 3 chars (like Jo, or 5), we can just use asterix without brackets.
‘fixed_length_chars’: Replace the obfuscated entity with a masking sequence composed of a fixed number of asterisk.
‘same_length_chars_without_brackets’: Replace the name with the asterix with same length without brackets.
‘entity_labels_without_brackets’: Replace the values with the entity value without brackets.
Default: “”
- Parameters:
value (str) – If specified, the metadata includes the masked form of the document.
- setMinYear(s)#
Sets minimum year to be used when transforming dates into years. Default: ‘1929’
- Parameters:
s (int) – Minimum year to be used when transforming dates into years. Default: ‘1929’
- setMode(mode: str)#
Sets mode for Anonymizer [‘mask’|’obfuscate’]
- Parameters:
mode (str) – Mode for Anonymizer [‘mask’|’obfuscate’]
- setObfuscateByAgeGroups(value: bool)#
Sets whether to obfuscate ages based on age groups. When True, the age groups specified in the
ageGroups
parameter will be used to obfuscate ages. When False, the age ranges specified in theageRanges
parameter will be used to obfuscate ages.- Parameters:
value (bool) – Whether to obfuscate ages based on age groups.
- setObfuscateDate(value: bool)#
When mode==’obfuscate’ whether to obfuscate dates or not. This param helps in consistency to make dateFormats more visible. When setting to
True
, make sure dateFormats param fits the needs. If the value isTrue
and obfuscation is failed, then unnormalizedDateMode param will be activated. When setting toFalse
, then the date will be masked to <DATE>. Default: False- Parameters:
value (bool) – When mode==’obfuscate’ whether to obfuscate dates or not. Default: False.
- setObfuscateRefSource(source: str)#
The source of obfuscation to obfuscate the entities. For dates entities, This property is invalid. The values ar the following:
custom: Takes the entities from the setCustomFakers function. faker: Takes the entities from the Faker module both : Takes the entities from the setCustomFakers function and the faker module randomly.
- Parameters:
source (str) – The source of obfuscation to obfuscate the entities. Default: faker.
- setObfuscationStrategyOnException(value: str)#
Sets the obfuscation strategy to be applied when an exception occurs. Four possible values are supported:
“mask”: The original chunk is replaced with a masking pattern.
“default”: The original chunk is replaced with a default faker.
“skip”: The original chunk is not replaced with any faker.
“exception”: Throws the exception.
The default obfuscation strategy is “default”.
- Parameters:
value (str) – The obfuscation strategy to set. Should be one of [“mask”, “skip”, “default”, “exception”].
- setOutputAsDocument(l)#
Set whether to return all sentences joined into a single document
- Parameters:
l (str) – Whether to return all sentences joined into a single document
- setRegexOverride(s)#
Sets whether to prioritize regex over ner entities. If the value is true, prioritize the regex entities; if the value is false, prioritize the ner. The default value is false.
- Parameters:
s (bool) – Whether to prioritize regex over ner entities
- setRegion(value: str)#
With this property, you can select particular dateFormats. This property is especially used when obfuscating dates. For example: Decide whether the first part of 11/11/2023 is a day or the second part is a day when obfuscating dates. The values are following: ‘eu’ for European Union ‘us’ for the USA Default: ‘eu’
- Parameters:
value (str) – The region to use select date formats. Options: ‘eu’ for European Union, ‘us’ for the USA, Default: ‘eu’
- setReturnEntityMappings(s)#
Sets if you want to return mapping column
- Parameters:
s (bool) – Whether to return the mapping column.
- setSameEntityThreshold(s)#
Sets similarity threshold [0.0-1.0] to consider two appearances of an entity as the same (default: 0.9).
- Parameters:
s (float) – Similarity threshold [0.0-1.0] to consider two appearances of an entity as the same (default: 0.9).
- setSameLengthFormattedEntities(value: list)#
Sets list of formatted entities to generate the same length outputs as original ones during obfuscation
- Parameters:
value (List[str]) –
are (The supported and default formatted entities) –
- setSeed(s)#
Sets the seed to select the entities on obfuscate mode. With the seed, you can reply to an execution several times with the same output.
- Parameters:
s (int) – The seed to select the entities on obfuscate mode.
- setSelectiveObfuscateRefSource(source: dict)#
A dictionary of entity names to their obfuscation modes. This is used to selectively apply different obfuscation methods to specific entities. The keys are entity names and the values are the obfuscation sources. If an entity is not specified in this map, the obfuscateRefSource param is used to determine the obfuscation source.
Example:#
>>> selective_sources = { ... 'PHONE': 'file', ... 'ADDRESS': 'both' ... } >>> deid.setObfuscateRefSource('faker').setSelectiveObfuscateRefSource(selective_sources)
- param source:
A dictionary of entity names to their obfuscation modes. The keys are entity names and the values are the obfuscation sources.
- type source:
dict[str, str]
- setStaticObfuscationPairs(pairs: list)#
Sets the static obfuscation pairs This method is used to set static obfuscation pairs that will be used for de-identification. Each pair should contain three elements: original, entity type, and fake. The pairs must have exactly 3 elements: [original, entityType, fake].
Example:#
>>> pairs = [ ... ["John Doe", "PERSON", "Jane Smith"], ... ["Los Angeles", "LOCATION", "New York City"], ... ]
- param pairs:
List of static obfuscation pairs. Each pair should contain three elements: [original, entityType, fake]. The pairs must have exactly 3 elements: [original, entityType, fake].
- type pairs:
list
- setUnnormalizedDateMode(mode: str)#
Sets the mode to use if the date is not formatted. Options: [mask, obfuscate, skip]. Default: obfuscate.
- Parameters:
mode (str) – The mode to use if the date is not formatted.
- setUseShifDays(s)#
- setUseShiftDays(s)#
Sets if you want to use the random shift day when the document has this in its metadata. Default: False
- Parameters:
s (bool) – Whether to use the random shift day when the document has this in its metadata. Default: False
- setZipCodeTag(tag: str)#
Tag representing zip codes in the obfuscate reference file (default: ZIP)
- Parameters:
tag (str) – Tag representing zip codes in the obfuscate reference file (default: ZIP)