Package: work-set-clustering
Work-set ClusteringA Python script to perform a clustering based on descriptive keys.
It can be used to identifyworkclusters formanifestationsaccording to the FRBR (IFLA-LRM) model.This tool only performs the clustering. It needs a list of manifestation identifiers and their descriptive keys as input.
If already computed cluster identifiers and descriptive keys from a previous run are provided, they can be reused.Usage via the command lineCreate and activate a Python virtual environment# Create a new Python virtual environmentpython3-mvenvpy-request-isni-env# Activate the virtual environmentsourcepy-request-isni-env/bin/activate# There are no depdendenies to install# install the toolpipinstall.Available options:usage: clustering.py [-h] -i INPUT_FILE -o OUTPUT_FILE --id-column ID_COLUMN --key-column KEY_COLUMN [--delimiter DELIMITER] [--existing-clusters EXISTING_CLUSTERS]
                     [--existing-clusters-keys EXISTING_CLUSTERS_KEYS]

optional arguments:
  -h, --help            show this help message and exit
  -i INPUT_FILE, --input-file INPUT_FILE
                        The CSV file(s) with columns for elements and descriptive keys, one row is one element and descriptive key relationship
  -o OUTPUT_FILE, --output-file OUTPUT_FILE
                        The name of the output CSV file containing two columns: elementID and clusterID
  --id-column ID_COLUMN
                        The name of the column with element identifiers
  --key-column KEY_COLUMN
                        The name of the column that contains a descriptive key
  --delimiter DELIMITER
                        Optional delimiter of the input/output CSV, default is ','
  --existing-clusters EXISTING_CLUSTERS
                        Optional file with existing element-cluster mapping
  --existing-clusters-keys EXISTING_CLUSTERS_KEYS
                        Optional file with element-descriptive key mapping for existing clusters mappingClustering from scratchGiven a CSV file where each row contains the relationship
between one manifestation identifier and one descriptive key,
the tool can be called the following to create cluster assignments.python-mwork_set_clustering.clustering\--input-file"descriptive-keys.csv"\--output-file"clusters.csv"\--id-column"elementID"\--key-column"descriptiveKey"Example CSV which should result in two clusters, one for book1 and book2 (due to a similar key) and one for book3:elementIDdescriptiveKeybook1theTitle/author1book1isbnOfTheBook/author1book2isbnOfTheBook/author1book3otherBookTitle/author1The script can also read descriptive keys that are distributed across several files.
Therefore you only have to use the--input-fileparameter several times.
Please note that all of those input files should have the same column names specified with--id-columnand--key-column.You can find more examples of cluster input in thetest/resourcesdirectory.Reuse existing clustersYou can reuse the clusters created from an earlier run,
but you also have to provide the mapping between the previous elements and their descriptive keys.python-mwork_set_clustering.clustering\--input-file"descriptive-keys.csv"\--output-file"clusters.csv"\--id-column"elementID"\--key-column"descriptiveKey"\--existing-clusters"existing-clusters.csv"\--existing-cluster-keys"initial-descriptive-keys.csv"Please note that with the two parameters--existing-clustersand--existing-cluster-keysthe data from a previous run are provided.Similar to the initial clustering, you can provide several input files.Usage as a libraryThe tool can also be used as a library within another Python script or a Jupyter notebook.fromwork_set_clustering.clusteringimportclusterFromScratchasclusteringclustering(inputFilename=["descriptive-keys.csv"],outputFilename="cluster-assignments.csv",idColumnName="elementID",keyColumnName="descriptiveKey",delimiter=',')Or if you want to reuse existing clusters:fromwork_set_clustering.clusteringimportupdateClustersasclusteringclustering(inputFilename=["descriptive-keys.csv"],outputFilename="cluster-assignments.csv",idColumnName="elementID",keyColumnName="descriptiveKey",delimiter=',',existingClustersFilename="existing-clusters.csv",existingClusterKeysFilename="initial-descriptive-keys.csv")Software TestsYou can execute the unit tests of thelib.pyfile with the following command:python work_set_clustering.lib.You can execute the integration tests with the following command:python -m unittest discover -s testContactSven Lieber -Sven.Lieber@kbr.be- Royal Library of Belgium (KBR) -https://www.kbr.be/en/