How the Engine Works

From raw Sreality listings to resolved dwelling entities.

This page describes the methodological framework behind the Entity Resolution Engine, including listing preparation, pairwise comparison, Random Forest classification, graph-based entity resolution, and the construction of final entity-level information.

1

Data Input and Preparation

The engine extracts the data, either by mining it from sreality.cz or by reading it from a JSON or CSV file. The information is then structured according to the expected input framework.

2

Candidate-Pair Construction

The listings are regrouped by a common street. Within each street group, every advertisement is compared with the other advertisements in that group. The engine then calculates the feature distance between the attributes of each pair (e.g., the absolute difference in Price between Ad 1 and Ad 2).

3

RF2 Duplicate Classification

For each street, the resulting pairwise distance matrix is passed to a Random Forest model. This model, RF2, is trained on 974 carefully curated listing pairs with a high level of human-validated confidence in their duplicate status.

We expect the model to capture around 81% of all duplicate pairs (Recall) and to be correct in approximately 83% of its positive-class predictions (Precision). RF2 returns a duplicate probability and a corresponding binary prediction for each pair of advertisements on the same street. The retained cutoff threshold is .51, selected to provide a strong balance between Recall and Precision.

4

Graph Entity Resolution

The RF2 predictions are used to construct graph components, where nodes represent listings and edges represent RF2 pairwise duplicate-status evidence. When p ≥ .51, the relationship is classified as positive; otherwise, it is classified as negative.

  • Components with fully positive internal relationships are treated as complete and represent groups of duplicate advertisements referring to the same underlying dwelling.

  • Components containing both positive and negative internal relationships are treated as incomplete. These components are processed by a Correlation Clustering algorithm, which evaluates alternative partitions of the component and seeks the solution that minimizes disagreement with the RF2 pairwise evidence.

5

Entity-Level Weighted Information

For each listing inside each final duplicate group, the engine calculates the listing's average internal RF2 pairwise probability. This is obtained by averaging the RF2 probabilities linking that listing to the other listings belonging to the same resolved entity.

These internal confidence scores are then normalized into listing-specific weights, which determine how strongly each listing contributes to the final entity-level information (e.g., Price and Surface Area). Therefore, listings with stronger average RF2 support within the resolved entity receive a greater contribution weight.

6

Final Engine Output

The engine returns the final resolved entities. Each entity represents one unique dwelling and may contain one or several SReality listings associated with that dwelling. For example, a single dwelling entity may contain five duplicate advertisements published at different times or by different agencies.

The demonstration interface allows each resolved entity to be reviewed in detail, including its constituent listings, RF2 pairwise evidence, graph-resolution information, listing images, and final entity-level weighted information.

© 2026 Dempsey Pasternak.
All rights reserved.