A computer-implemented method of generating information for use in identifying a property of a communication device, the method comprising: receiving training data comprising a character string that identifies the communication device; and identifying one or more substrings within the character string; determining a character position at which each identified substring begins or ends within the character string; characterised in that the method further comprises: adding an entry for each identified substring to a respective one of a plurality of data structures, each of the plurality of data structures being designated for storing substrings that begin or end at a different numbered character position counted from the first character of the character string, wherein each entry comprises an identified substring and a unique identifier, and wherein each entry is added to the data structure designated for storing substrings that begin or end at the character position at which that substring occurs; defining a signature that identifies the communication device by combining the unique identifiers of each of the entries that were added to the plurality of data structures; associating the signature with one or more profiles, wherein each profile includes a value of at least one property of the communication device; and storing the plurality of data structures, the signature, and data representing the association between the signature and the one or more profiles. receiving training data comprising a character string that identifies the communication device; and identifying one or more substrings within the character string; determining a character position at which each identified substring begins or ends within the character string; characterised in that the method further comprises: adding an entry for each identified substring to a respective one of a plurality of data structures, each of the plurality of data structures being designated for storing substrings that begin or end at a different numbered character position counted from the first character of the character string, wherein each entry comprises an identified substring and a unique identifier, and wherein each entry is added to the data structure designated for storing substrings that begin or end at the character position at which that substring occurs; defining a signature that identifies the communication device by combining the unique identifiers of each of the entries that were added to the plurality of data structures; associating the signature with one or more profiles, wherein each profile includes a value of at least one property of the communication device; and storing the plurality of data structures, the signature, and data representing the association between the signature and the one or more profiles. adding an entry for each identified substring to a respective one of a plurality of data structures, each of the plurality of data structures being designated for storing substrings that begin or end at a different numbered character position counted from the first character of the character string, wherein each entry comprises an identified substring and a unique identifier, and wherein each entry is added to the data structure designated for storing substrings that begin or end at the character position at which that substring occurs; defining a signature that identifies the communication device by combining the unique identifiers of each of the entries that were added to the plurality of data structures; associating the signature with one or more profiles, wherein each profile includes a value of at least one property of the communication device; and storing the plurality of data structures, the signature, and data representing the association between the signature and the one or more profiles.