Skip to content

Contextual classification and filtered classifications

Compare
Choose a tag to compare
@fefi42 fefi42 released this 09 Dec 10:48

New Features:

  • Contextual classification
  • Filter on classifications

Breaking changes:
All logic connected to classification has been moved to Client.classification.

Example:
Classify products according to their description into a category.
Only use products from the same country to classify.

# Create a configuration for a contextual classification
context_configuration = client.classification.get_contextual_config("Product", ["description"], ["hasCategory"])

# Create a filter (assumes that both the source and target class have a property inCountry)
country_filter = {
        "operator": "Equal",
        "path": ["inCountry"],
        "valueString": "Germany"
    }

# Add the filters
germany_config = client.classification.add_filter_to_config(
        weaviate.SOURCE_WHERE_FILTER, country_filter, context_configuration)
germany_config = client.classification.add_filter_to_config(
        weaviate.TARGET_WHERE_FILTER, data_filter, germany_config)

# Classify
classification_info = client.classification.start(germany_config)
while not client.classification.is_classification_complete(classification_info["id"]):
    print("Classifying ...")
    time.sleep(3.0)

# Change filter
country_filter["valueString"] = "Estonia"

# Add the filter
estonia_config = client.classification.add_filter_to_config(
        weaviate.SOURCE_WHERE_FILTER, country_filter, context_configuration)
estonia_config = client.classification.add_filter_to_config(
        weaviate.TARGET_WHERE_FILTER, data_filter, estonia_config)

# Classify
classification_info = client.classification.start(estonia_config)
while not client.classification.is_classification_complete(classification_info["id"]):
    print("Classifying ...")
    time.sleep(3.0)