Information retrieval systems are widely used by users to search for information on a given subject. Web search systems are an example of one type of information retrieval system. Users submit a query to the web search system and obtain a list of results comprising links to documents that are relevant to the entered query.
However, the web contains many duplicate and near-duplicate documents. Given that user satisfaction is negatively affected by redundant information in search results, a significant amount of research has been devoted to developing duplicate detection algorithms However, most such algorithms rely solely on document content to detect duplication/redundancy, ignoring the fact that a primary goal of duplicate detection is to identify documents that contain redundant information with respect to a given user query.
Previous techniques for identifying duplicates are based on identifying similarities between document contents. Since discovering all possible duplicate documents in a document set of size N uses O(N2) comparisons, efficiency as well as accuracy are two main concerns of existing algorithms The simplest approach for detecting exact duplicates is based on a fingerprint that is a succinct digest of the characters in a document. When the fingerprints of two documents are identical, the documents are further compared, and identical documents are identified as duplicates. This technique does not identify near duplicates: web pages that are not identical but still very similar in content. Previous algorithms for identifying near duplicates are based on generating n-gram vectors from documents and computing a similarity score between these vectors based on a certain similarity metric. If the similarity between two documents is above a threshold, the two documents are considered to be near duplicates of each other.
All these techniques for duplicate detection are based on using the contents of the documents. Methods that solely depend on similarities in terms of document contents do not identify documents that contain similar information with respect to a user need. That is, in most cases, duplicate detection is aimed at identifying documents that are of the same utility to an end user. However, when only document contents are used for duplicate detection, utility is ignored. Two documents can be of the same utility (containing duplicate information) even if the contents are different. For example, two newspaper articles describing exactly the same event but with different words are often duplicates of each other, and hence users who have read one of these may not be interested in reading the other one. Furthermore, two documents can be of different utility to an end user even if their contents are very similar. For example, two different documents containing a biography of Britney Spears, identically written except that one contains the birthday of Britney Spears while the other does not are not duplicates of each other when the goal of the user is to find out Britney Spears' age.
The embodiments described below are not limited to implementations which solve any or all of the disadvantages of known information retrieval systems.
The following presents a simplified summary of the disclosure in order to provide a basic understanding to the reader. This summary is not an extensive overview of the disclosure and it does not identify key/critical elements of the invention or delineate the scope of the invention. Its sole purpose is to present some concepts disclosed herein in a simplified form as a prelude to the more detailed description that is presented later.
Measuring duplication in search results is described. In one example, duplication between a pair of results provided by an information retrieval system in response to a query is measured. History data for the information retrieval system is accessed and query data retrieved, which describes the number of times that users have previously selected either or both of the pair of results, and a relative presentation sequence of the pair of results when displayed at each selection. From the query data, a fraction of user selections is determined in which a predefined combination of one or both of the pair of results were selected for a predefined presentation sequence. From the fraction, a measure of duplication between the pair of results is found. In further examples, the information retrieval system uses the measure of duplication to determine an overall redundancy value for a result set, and controls the result display accordingly.
Many of the attendant features will be more readily appreciated as the same becomes better understood by reference to the following detailed description considered in connection with the accompanying drawings.
The present description will be better understood from the following detailed description read in light of the accompanying drawings, wherein:
Like reference numerals are used to designate like parts in the accompanying drawings.
The detailed description provided below in connection with the appended drawings is intended as a description of the present examples and is not intended to represent the only forms in which the present example may be constructed or utilized. The description sets forth the functions of the example and the sequence of steps for constructing and operating the example. However, the same or equivalent functions and sequences may be accomplished by different examples.
Although the present examples are described and illustrated herein as being implemented in a web search system, the system described is provided as an example and not a limitation. As those skilled in the art will appreciate, the present examples are suitable for application in a variety of different types of information retrieval systems.
User behavior and click data contains much information about the utility of documents. The term “click data” is used herein to refer to data on whether a user selected (“clicked”) to view an item in a list of search results.
The term “document” is used herein to refer to any item of information which may be retrieved using a query server or search engine. A non-exhaustive list of examples includes: photographs, digital images, files, email messages, voice mail messages, short message service messages, text-based posts at a social networking service, web pages, part of a web page, maps, electronic ink, commercial products, videos, multimedia files, songs, albums, news articles, database records or a part or summary of one or more of these items.
Consider two documents d1 and d2. If these documents are duplicates or near-duplicates of each other (i.e. the documents comprise significant amounts of redundant information), then it is observed from user behavior that document d1 is not clicked very often when, for example, it is displayed below document d2 in a list of search results, and vice versa. Described herein are techniques by which behavioral data such as this can be used for the purpose of duplicate detection, and to identify documents containing the same information with respect to a query.
The techniques described herein apply to any use of aggregating implicit or explicit behavioral data typically associated with relevance across different order presentations to form a signal for redundancy. For example (as described throughout), a measurement can be made, aggregated across users, of the tendency to click on the first item versus the second as an indicator of redundancy in conditions where the results are presented in both orders. However, in alternative examples, a similar technique can measure the aggregate dwell time (time spent on a result after viewing) on the first versus the second result, again where the results are presented in both orders. The behavioral data can also be explicit behavioral data where an explicit judgment of relevance or novelty is elicited from users in a system that can alter the presentation order across users. Such explicit judgments can include, for example: binary relevance judgments, graded relevance judgments, or information nugget judgments (a judgment of whether a result contains a fine-grained “nugget” of information that covers one aspect of the query) among others.
Reference is first made to
In the example described herein, the communications network 102 is the Internet, and the documents 106 are web pages. In other examples, the communications network 102 can be any appropriate network. A non exhaustive list of examples of appropriate networks includes: Local Area Networks (LAN), Wide Area Networks (WAN), Public Switched Telephone Networks (PS TN), and Virtual Private Networks (VPN). The communications network 102 can be a wireless network or a wired network or combinations thereof In the examples described herein the search engine 104 is a web search engine. However, in other examples the search engine 104 may be a desktop search engine, media search engine or other appropriate search engine.
Using the communications network 102 a user 110 is able to access the search engine 104, for example, using a web browser or other suitable access interface executed on a computing device 112. The search engine 104 is of any suitable type arranged to rank documents using the index 108 on the basis of the relevance of those documents to search terms input by the user 110. Those user input search terms are referred to as a query. For example, the search engine 104 is arranged to analyze user search terms and generate a rank or weighting for documents 106 on the basis of user input search terms. The search engine 104 may then provide an ordered list of the documents (or links to the documents) based on the ranking
In an example, the user 110 using the computing device 112 can use a graphical user interface 114 (GUI) to submit a query 116 to the information retrieval system 100 in order to find relevant search results. Responsive to this, the information retrieval system 100 provides a ranked list 118 of search results, which is displayed in the user interface 114. Optionally, the information retrieval system 100 may also provide one or more relevant advertisements, such as AD1120 and AD2122 shown the user interface 114.
The user 110 viewing the ranked list 118 in the user interface 114 can select a result from the ranked list 118, and can view the document associated with that result. The result can be selected by the user by, for example, the user 110 using a pointing device (such as a mouse or track-pad) to actively “click” a link for that document in the result. In other examples, instead of active “clicks”, selection may result from a user moving a mouse, a finger, their gaze, or other user interface device over a link to that document for at least a specified time, or performing another specified action.
When a result is selected by the user 110, the selection is recorded by the search engine 104 in a behavioral data store 124. The behavioral data store 124 stores data relating to the selection, including the query and the location of the clicked result in the ranked list. Therefore, in this example, the behavioral data store 124 stores click history data (although, in other examples, different types of behavioral data can be stored, as outlined above). More detail on the behavioral data stored is provided below with reference to
In the example of
The information retrieval system 100 further comprises a duplication measurement engine 130. The duplication measurement engine 130 is arranged to receive data regarding a pair of results from the search engine 104, and use the click history (in this example) from the behavioral data store 124 to determine a measure of how much duplication (or redundancy) exists between the documents referenced in the two results. For example, duplication measurement engine 130 can determine a measure of the redundancy that exists between pair of results 132 in
By using the behavioral data, potentially in combination with other relevant data sources, a measure of redundancy can be obtained without the use of complex document content analysis. This saves significant computational resources. In addition, the use of behavioral data ensures that the utility to the user is considered, rather than a direct comparison of the contents of the documents. Techniques for determining the duplication/redundancy from the click history behavioral data are outlined below with reference to
Note that, in other examples, the duplication measurement engine 130 can be outside of the information retrieval system 100 (e.g. operated by a third party), and is provided with the requisite information by the information retrieval system 100 when a measurement of redundancy is desired.
Reference is now made to
Firstly, a pair of results that were obtained for a given query is received 200. In one example, these two results are adjacent in the ranked list that was generated by the search engine 104 in response to the query. The behavioral data store 124 is then accessed 202, and query data is read 204. The query data comprises click history data that is relevant to this query. The query data can describe the number of times that users of the information retrieval system have previously selected either or both of the pair of results, and a relative presentation sequence of the pair of results when displayed in the user interface at each selection. In other words, the query data retrieved describes the frequency of selection of one or both of the pair of results, and which result was located ahead of (e.g. above or before) the other in each case.
In one example, in the case of a pair of results having a first result denoted u and a second result denoted v, the query data retrieved for a query q comprises the following:
The query data is then used to determine 206 fractions of the total number of selections (clicks) that were performed by the users in a predefined combination, for a predefined presentation sequence. In other words, the fraction of clicks that occurred due to the selection of a certain combination of one or both results (i.e. u only, v only or both u and v) when in a certain presentation sequence (i.e. u above v or vice versa) is found. For example, the fraction of times when u was selected when above v is given by:
This can be known as a “top-click” rate, as it gives the proportion of occasions on which the result presented ahead of (e.g. above or before) the other is selected. The other top-click rate for the alternative presentation sequence (where v is on top) is given by:
The combination of equations (1) and (2) therefore give the top-click rate in both presentation sequences. Note that other fractions, apart from the top-click rate, can also or alternatively be determined, as outlined in more detail below.
Once a fraction for each presentation sequence has been determined (e.g. equation (1) and (2) above), then one or more or a combination of these fractions is selected 208 as the measure of duplication/redundancy. In one example, the minimum of the two fractions is selected, such that the measure of duplication for the pair of results and the query is given by:
This measure of duplication/redundancy is known as the minimum top-click rate. Other measures of duplication can also be calculated, as outlined below. Once the measure of duplication has been calculated, it is output 210 from the duplication measurement engine 130. This value for the duplication or redundancy between the pair of results can be used by the search engine, optionally in combination with measurements from other duplication engines, for example as outlined with reference to
With the minimum top-click rate measure of duplication shown in equation (3), a higher value indicates a higher degree of duplicated information or redundancy between the two search results. This is because a user is more likely to only select the higher result in the ranked list, and ignore the lower (duplicate) one.
As mentioned, additional measures of duplication or redundancy can also be derived from the behavioral data, by using different predetermined combinations of one or both of the results (i.e. u only, v only or both u and v) and different techniques for selecting between the fractions. For example, the maximum top-click rate can be determined by taking the maximum of the fractions in equations (1) and (2) as follows:
The bottom-click rate can be found by determining the proportion of occurrences at which the bottom-most result was selected in both presentation sequences. From this, a measurement of duplication called the minimum bottom-click rate can be calculated using:
Similarly, the maximum bottom-click rate can be found by:
The both-click rate can be found by determining the proportion of occurrences at which both of the results were selected in both presentation sequences. From this, a measurement of duplication called the minimum both-click rate can be calculated by:
The maximum bottom-click rate can be found by:
The mean both-click rate can be found by:
The value for the duplication or redundancy between a pair of results, as calculated by one of the equations described above, can subsequently be used to enhance the search engine 104. For example, when a search engine 104 generates a ranked list of results, the above described techniques can be used to determine the duplication or redundancy between pairs of results in the ranked list. If certain pairs of results are determined to have a level of duplication or redundancy that is higher than a predetermined level, then one of the pair of results can be removed from the ranked list when it is displayed to the user in the user interface 114. This reduces the amount of redundant search results, and hence may increase user satisfaction. In further examples, pairs of results determined to be duplicates can be formatted differently in the user interface, e.g. by combining them into one larger result, making one of the results smaller than the other, indenting one relative to the other, or any other suitable way of visually indicating that the two results may be related. An overall value for the redundancy in a ranked list of results can also be calculated using these techniques, as described below with reference to
In some examples, the different measures of duplication outlined above can be combined together to give a more accurate duplication/redundancy measure. For example, the different measures can be utilized in a classifier, which is trained to determine whether a pair of results are classified as duplicates or not. Such a classifier can, for example, be in the form of a machine learning classifier such as a decision tree, or a decision forest made up of a plurality of decision trees. Alternative machine learning classifiers that can be used include neural networks and support vector machines. In a further example, a classifier using manually optimized rules or heuristics can be used.
An illustrative example of a decision tree classifier is shown in
For example, a decision tree classifier can be generated by selecting a root node of the tree, and selecting all the pairs of results from the training corpus (which are pre-labeled as duplicates or not). A random set of test parameters are generated for the root node, which can be in the form of a selected measure of duplication and a threshold duplication value. The test parameters can be applied to a pair of results to give a true/false result. An example of a randomly selected test parameter can be: “is the min bottom-click rate>0.4?” The true or false result from a test parameter determines whether a pair of results passes to a first child node or a second child node below the root. Every combination from the set of test parameters is then applied to each of the pair of results. For each combination, the information gain (also known as the relative entropy) is calculated. The combination of parameters that maximize the information gain is selected and stored at the root node for future use.
The process then moves to training the child nodes of the root node. Each child node is trained using the subset of the pairs of results from the root node. The subset of the pairs of results sent to a child node is determined using the parameters that maximized the information gain. The pairs of results that pass the test (true result) form a first subset sent to a first child node, and the pairs of results that fail the test (false result) form a second subset sent to a second child node. For each of the child nodes, new random test parameters are generated, applied to the respective subset of pairs of results, and parameters maximizing the information gain selected. This is repeated for each subsequent generation of child nodes until either the value for the maximized information gain is less than a threshold for a branch, or the depth of the tree (i.e. how many levels of nodes are between the root node and the current node) is greater than a predetermined value. When this situation is reached, the current node is set as a leaf node. Therefore, this process moves through the tree, training each node until leaf nodes are reached at each branch.
Once all the nodes in the tree have been trained to determine the parameters for the test maximizing the information gain at each node, and leaf nodes have been selected to terminate each branch, then probability distributions can be determined for all the leaf nodes of the tree. This is achieved by counting the labels (duplicate or not duplicate) of the pairs of results that reach each of the leaf nodes. From the number of pairs of results with each label at a leaf node and the total number of pairs of results at that leaf node, a probability distribution for the classes at that leaf node can be generated. Optionally, multiple trees can be trained in this way, which gives a decision forest of distinct trained decision trees.
If the pair passes to child node 304, then the test associated with this child node 304 is performed. The training process has determined that the test at this node is the mean both-click rate with a threshold of T2. This is calculated as described above, and if the calculated value is less than T2, then the pair passes to child node 308, whereas if the calculated value is greater than or equal to T2, then the pair passes to leaf node 310, which indicates that the pair of results are likely to be duplicates of each other for this query.
If the pair passes to child node 308, then the test associated with this child node 308 is performed. The training process has determined that the test at this node is the minimum top-click rate with a threshold of T3. This is calculated as described above, and if the calculated value is less than T3, then the pair passes to leaf node 312, which indicates that the pair of results are not likely to be duplicates of each other for this query. Conversely, if the calculated value is greater than or equal to T3, then the pair passes to leaf node 314, which indicates that the pair of results are likely to be duplicates of each other for this query.
Therefore, by passing the pair of results through the trained decision tree 300, a leaf node is eventually reached which classifies the pair of results as either as duplicate or not. This uses a combination of duplication measures that are readily calculated from the click history as described above. If a plurality of decision trees are used in a decision forest, then the pair of results can be passed through all of the tress, and the results from each aggregated. Note that the structure of the decision tree 300 shown in
The various measures of duplication/redundancy outlined above can also be used with a machine learning classifier to identify different types of redundancy between results. For example, three different classifications of redundancy that can be identified are: exact duplicates; content duplicates; and navigational duplicates, as outlined below.
Exact duplicates are where both documents appear identical. In some examples, this can be with the exception of advertisements (e.g. on a webpage).
Content duplicates occur where both pages provide effectively the same information with respect to the query, but from different sources. Examples of content duplicates include two different web sites with lyrics for the same song, or two different sites for converting centimeters into inches. While these alternatives may differ in relevance (for example, due to the clarity of presentation), most users would find either redundant if they have already observed the other.
Navigational duplicates occur where one of the pages is more relevant, but navigating from one page to the other is very easy. In such situations, it can be easier for a user to get to the more relevant result from the less relevant result by browsing than by returning to the search results. This is often the case when a user clicks on one search result without having considered the next result. If the user expects that the cost of backing out from a result that is almost correct to find the right result in a search engine ranking is higher than the expected cost of navigating, then the user is likely to choose to navigate instead. Examples of navigational duplicates are the homepage and the sports page of a newspaper, or the online banking login page of a bank and the “contact us” page of the same bank. Occurrences can also be observed where pairs of results where neither was quite what the user was looking for, but navigating to the correct page from either was equally trivial.
A decision tree classifier, similar to that described above, can be used to classify a pair of results as belonging to one of these classes of duplicate (or as not a duplicate). A decision tree is trained in a similar way to that described above, except that the training corpus comprises pairs of results that are pre-labeled as being either an exact duplicate, a content duplicate, a navigational duplicate, or not duplicates. The leaf nodes of the trained decision tree then indicate probability distributions of the pair belonging to one of these classifications.
In the example of
If the pair of results are on different hosts, have a maximum bottom-click rate 406 less than threshold Ta, a minimum top-click rate 408 greater than or equal to threshold Tb, and a minimum bottom-click rate 416 less than a threshold Td, then the pair of results are classified as navigational duplicates 418. If the pair of results are on different hosts, have a maximum bottom-click rate 406 less than threshold Ta, a minimum top-click rate 408 greater than or equal to threshold Tb, and a minimum bottom-click rate 416 greater than or equal to a threshold Td, then the pair of results are classified as exact duplicates 420. Finally, if the pair of results are on different hosts, have a maximum bottom-click rate 406 greater than or equal to threshold Ta, and a mean both-click rate 412 less than threshold Tc, then the pair of results are classified as content duplicates 422.
Therefore, a decision tree classifier of the type described with reference to
The determination of the classification of duplication between a pair of results can be used to adapt the results presented by the information retrieval system 100. The information retrieval system can treat the different classes of duplicates in different ways. For example, it is not beneficial for the information retrieval system to display exact duplicates, and these can therefore be removed from search results presented in the user interface 114. However, for queries where users expect a range of options, content duplicates can be shown in the user interface, although in some examples the user interface can be adapted to emphasize that such results are alternatives for the user to obtain similar information. In the case of navigational duplicates, the information retrieval system can, for example, combine the results in the user interface, providing users with these and other alternative destinations on the same website.
Reference is now made to
A query is received 500, and the search engine 104 generates 502 a ranked list of search result in response to the query, as described above with reference to
It is then determined 510 whether more pairs of results are to be analyzed. In one example, a predetermined number of pairs of results are analyzed, each selected at random from the ranked list. If more pairs of results are to be analyzed, then the process of selecting a pair and calculating the duplication or redundancy is repeated.
Once it has been determined 510 that no more pairs of results are to be analyzed, each of the stored measurements of duplication for the pairs of results are aggregated 512 to give an overall value. In one example, the overall value can be determined by calculating the entropy of the distribution of the duplication measurements. In other examples, a different aggregation technique can be used, such as calculating the mean or variance of the distribution of the duplication measurements.
The overall value for the redundancy of the search results in the ranked list can then be utilized by the information retrieval system 100. In the example of
In a further example, the measurements of duplication outlined above can be used to improve the processes by which the search engine is trained to generate search results. The search engine uses training data in order to optimize the search algorithms. The training data used by the search engine is human-generated data, and is therefore slow to produce and verify.
In one example, the measures of duplication can be used to automatically label the training data as being redundant or belonging to a category of duplication or redundancy, as outlined above. This automates one stage of the training process, thereby reducing the time to hand-annotate the training data. In another example, the measures of duplication can be used to verify hand-annotated data. For example, when an item of training data has been manually labeled as being a duplicate (or conversely not a duplicate), and the measure of duplication does not agree with this, then this can indicate a discrepancy which can be checked further. This assists in reducing noise present in human labeling of data.
Similar to training search engines, evaluation of the quality of search engines require human judgments that are expensive to obtain. The above-described techniques can also be used to automatically generate labeled data that can be used to evaluate the quality of search engines based on the extent of redundancy in the search results.
A further application of the above-described technique is to infer improved relevance values given clicks. Previous work on relevance values assumes that clicks are a direct function of relevance, ignoring the fact that clicks are highly affected by duplication: if a highly relevant document d1 is always presented below its duplicate d2, it is unlikely that d1 will be clicked. Previous work infers from this that d1 is not relevant with respect to the given query. However, the above-described techniques can be used to extend this by inferring relevance labels from clicks to incorporate the effect of duplication, resulting in more accurate inferences.
Reference is now made to
Computing device 600 comprises one or more processors 602 which may be microprocessors, controllers or any other suitable type of processor for processing computer executable instructions to control the operation of the device in order to implement the search engine and duplication measurement techniques.
The computing device 600 also comprises a communication interface 604, which can be arranged to communicate with one or more communication networks. For example, the communication interface 604 can connect the computing device 600 to the network 102. The communication interface 604 can enable the computing device 600 to communicate with other network elements, such as computing device 112 to receive queries and transmit back the user interface and search results.
Computer-executable instructions and data storage can be provided using any computer-readable media that is accessible by computing device 600. Computer-readable media may include, for example, computer storage media such as memory 606 and communications media. Computer storage media, such as memory 606, includes volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EPROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to store information for access by a computing device. In contrast, communication media may embody computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier wave, or other transport mechanism. Although the computer storage media (such as memory 606) is shown within the computing device 600 it will be appreciated that the storage may be distributed or located remotely and accessed via a network or other communication link (e.g. using communication interface 604).
Platform software comprising an operating system 608 or any other suitable platform software may be provided at the memory 606 of the computing device 600 to enable application software 610 to be executed on the device. The memory 606 can store executable instructions to implement one or more of the following when executed on the processor 602:
The memory 606 can also provide a data store 620, which can be used to provide storage for data used by the processor 602 when performing the duplication measurement techniques, such as the storing the behavioral data store 124, and the trained decision trees.
The term ‘computer’ is used herein to refer to any device with processing capability such that it can execute instructions. Those skilled in the art will realize that such processing capabilities are incorporated into many different devices and therefore the term ‘computer’ includes PCs, servers, mobile telephones, personal digital assistants and many other devices.
The methods described herein may be performed by software in machine readable form on a tangible storage medium e.g. in the form of a computer program comprising computer program code means adapted to perform all the steps of any of the methods described herein when the program is run on a computer and where the computer program may be embodied on a computer readable medium. Examples of tangible (or non-transitory) storage media include disks, thumb drives, memory etc and do not include propagated signals. The software can be suitable for execution on a parallel processor or a serial processor such that the method steps may be carried out in any suitable order, or simultaneously.
This acknowledges that software can be a valuable, separately tradable commodity. It is intended to encompass software, which runs on or controls “dumb” or standard hardware, to carry out the desired functions. It is also intended to encompass software which “describes” or defines the configuration of hardware, such as HDL (hardware description language) software, as is used for designing silicon chips, or for configuring universal programmable chips, to carry out desired functions.
Those skilled in the art will realize that storage devices utilized to store program instructions can be distributed across a network. For example, a remote computer may store an example of the process described as software. A local or terminal computer may access the remote computer and download a part or all of the software to run the program. Alternatively, the local computer may download pieces of the software as needed, or execute some software instructions at the local terminal and some at the remote computer (or computer network). Those skilled in the art will also realize that by utilizing conventional techniques known to those skilled in the art that all, or a portion of the software instructions may be carried out by a dedicated circuit, such as a DSP, programmable logic array, or the like.
Any range or device value given herein may be extended or altered without losing the effect sought, as will be apparent to the skilled person.
It will be understood that the benefits and advantages described above may relate to one embodiment or may relate to several embodiments. The embodiments are not limited to those that solve any or all of the stated problems or those that have any or all of the stated benefits and advantages. It will further be understood that reference to ‘an’ item refers to one or more of those items.
The steps of the methods described herein may be carried out in any suitable order, or simultaneously where appropriate. Additionally, individual blocks may be deleted from any of the methods without departing from the spirit and scope of the subject matter described herein. Aspects of any of the examples described above may be combined with aspects of any of the other examples described to form further examples without losing the effect sought.
The term ‘comprising’ is used herein to mean including the method blocks or elements identified, but that such blocks or elements do not comprise an exclusive list and a method or apparatus may contain additional blocks or elements.
It will be understood that the above description of a preferred embodiment is given by way of example only and that various modifications may be made by those skilled in the art. The above specification, examples and data provide a complete description of the structure and use of exemplary embodiments of the invention. Although various embodiments of the invention have been described above with a certain degree of particularity, or with reference to one or more individual embodiments, those skilled in the art could make numerous alterations to the disclosed embodiments without departing from the spirit or scope of this invention.