class_docstr: Search for under annotated data segments.
  
  The check is designed to help you easily identify under annotated segments of your data. The segments are
  based on the text properties - which are features extracted from the text, such as "language" and
  "number of words". For more on properties, see the `NLP Properties Guide
  <https://docs.deepchecks.com/stable/nlp/usage_guides/nlp_properties.html>`_.
  
  In order to achieve this, the check trains several simple tree based models which try to predict given a sample
  properties whether it will have a label. The relevant segments are detected by analyzing the different
  leafs of the trained trees.
  
  Parameters
  ----------
  properties : Union[Hashable, List[Hashable]] , default: None
      Properties to check, if none are given checks all properties except ignored ones.
  ignore_properties : Union[Hashable, List[Hashable]] , default: None
      Properties to ignore, if none given checks based on properties variable
  n_top_properties : Optional[int] , default: 10
      Number of properties to use for segment search. Top properties are selected based on feature importance.
  segment_minimum_size_ratio: float , default: 0.05
      Minimum size ratio for segments. Will only search for segments of
      size >= segment_minimum_size_ratio * data_size.
  max_categories_weak_segment: Optional[int] , default: None
      Maximum number of categories that can be included in a weak segment per categorical feature.
      If None, the number of categories is not limited.
  n_samples : int , default: 10_000
      Maximum number of samples to use for this check.
  n_to_show : int , default: 3
      number of segments with the weakest performance to show.
  categorical_aggregation_threshold : float , default: 0.05
      In each categorical column, categories with frequency below threshold will be merged into "Other" category.
  multiple_segments_per_property : bool , default: False
      If True, will allow the same property to be a segmenting feature in multiple segments,
      otherwise each property can appear in one segment at most.
code: def __init__(
      self,
      properties: Union[Hashable, List[Hashable], None] = None,
      ignore_properties: Union[Hashable, List[Hashable], None] = None,
      n_top_properties: Optional[int] = 10,
      segment_minimum_size_ratio: float = 0.05,
      max_categories_weak_segment: Optional[int] = None,
      n_samples: int = 10_000,
      categorical_aggregation_threshold: float = 0.05,
      n_to_show: int = 3,
      multiple_segments_per_property: bool = False,
      **kwargs,
  ):
      super().__init__(
          segment_by="properties",
          columns=properties,
          ignore_columns=ignore_properties,
          n_top_features=n_top_properties,
          segment_minimum_size_ratio=segment_minimum_size_ratio,
          max_categories_weak_segment=max_categories_weak_segment,
          n_samples=n_samples,
          n_to_show=n_to_show,
          categorical_aggregation_threshold=categorical_aggregation_threshold,
          multiple_segments_per_feature=multiple_segments_per_property,
          **kwargs,
      )
  
imports: from typing import Dict, List, Optional, Tuple, Union
  import numpy
  import pandas
  import plotly.graph_objects
  from deepchecks import ConditionCategory, ConditionResult
  from deepchecks.core import CheckResult
  from deepchecks.core.check_result import DisplayMap
  from deepchecks.core.errors import NotEnoughSamplesError
  from deepchecks.nlp import Context, SingleDatasetCheck
  from deepchecks.nlp.utils.text import break_to_lines_and_trim
  from deepchecks.nlp.utils.weak_segments import get_relevant_data_table
  from deepchecks.utils.abstracts.weak_segment_abstract import WeakSegmentAbstract
  from deepchecks.utils.metrics import is_label_none
  from deepchecks.utils.strings import format_percent
  from deepchecks.utils.typing import Hashable
label_desc: Use image node_id 1 to create a new UnderAnnotatedPropertySegments object from inherited base classes: UnderAnnotatedSegments with example: obj = UnderAnnotatedPropertySegments(properties, ignore_properties, n_top_properties, segment_minimum_size_ratio, max_categories_weak_segment, n_samples, categorical_aggregation_threshold, n_to_show, multiple_segments_per_property)