BACKGROUNDVarious systems for managing, selling and searching for digital media content and/or applications exist. Such systems typically include user account functions and tracking functions designed to record download decisions of users of the system. Based on a user's past decisions, such systems may recommend digital media content and/or applications to the user which are deemed to be of potential interest to the user.
BRIEF SUMMARYAccording to an embodiment of the disclosed subject matter, a computer-based processor may be employed to execute computer executable components stored in a memory to perform: storing a plurality of content items in a computer system, determining a respective co-selection score for each pair of content items among the plurality of content items, the co-selection score indicating a probability that a given pair of content items among the plurality of content items will both be downloaded by a user of the computer system, and outputting, to a first user, a plurality of content items comprising a sub-set of the plurality of content items, the sub-set being selected to correspond to a graph having vertices each connected by unique edges, wherein each vertex corresponds to a content item and each unique edge corresponds to a co-selection score greater than a predetermined threshold value.
According to an embodiment of the disclosed subject matter, a system may include a storage device, a memory that stores computer executable components, and a processor that executes computer executable components stored in the memory, including a storage component that stores a plurality of content items in the storage device, a calculating component that determines a respective co-selection score for each pair of content items among the stored plurality of content items, the co-selection score indicating a probability that a given pair of content items among the plurality of content items will both be downloaded by a user of the system, an output component that outputs, to a first user, a plurality of content items comprising a sub-set of the stored plurality of content items, and a processing component that selects the sub-set such that the sub-set corresponds to a graph having vertices each connected by unique edges, wherein each vertex corresponds to a content item and each unique edge corresponds to a co-selection score greater than a predetermined threshold value.
According to an embodiment of the disclosed subject matter, means for storing a plurality of content items in a computer system, means for determining a respective co-selection score for each pair of content items among the plurality of content items, the co-selection score indicating a probability that a given pair of content items among the plurality of content items will both be downloaded by a user of the computer system, and means for outputting, to a first user, a plurality of content items comprising a sub-set of the plurality of content items, the sub-set being selected to correspond to a graph having vertices each connected by unique edges, wherein each vertex corresponds to a content item and each unique edge corresponds to a co-selection score greater than a predetermined threshold value, are provided.
Additional features, advantages, and embodiments of the disclosed subject matter may be set forth or apparent from consideration of the following detailed description, drawings, and claims. Moreover, it is to be understood that both the foregoing summary and the following detailed description are illustrative and are intended to provide further explanation without limiting the scope of the claims.
BRIEF DESCRIPTION OF THE DRAWINGSThe accompanying drawings, which are included to provide a further understanding of the disclosed subject matter, are incorporated in and constitute a part of this specification. The drawings also illustrate embodiments of the disclosed subject matter and together with the detailed description serve to explain the principles of embodiments of the disclosed subject matter. No attempt is made to show structural details in more detail than may be necessary for a fundamental understanding of the disclosed subject matter and various ways in which it may be practiced.
FIG. 1 shows an exemplary system according to an embodiment of the disclosed subject matter.
FIG. 2 shows an exemplary memory device according to an embodiment of the disclosed subject matter.
FIG. 3 shows a flowchart of providing a recommendation of apps as a bundle to the user according to an embodiment of the disclosed subject matter.
FIG. 4 shows a computing device according to an embodiment of the disclosed subject matter.
FIG. 5 shows a network configuration according to an embodiment of the disclosed subject matter.
FIG. 6 shows an example network and system configuration according to an embodiment of the disclosed subject matter
FIG. 7 shows an example simple undirected complete graph.
DETAILED DESCRIPTIONVarious aspects or features of this disclosure are described with reference to the drawings, wherein like reference numerals are used to refer to like elements throughout. In this specification, numerous details are set forth in order to provide a thorough understanding of this disclosure. It should be understood, however, that certain aspects of disclosure may be practiced without these specific details, or with other methods, components, materials, etc. In other instances, well-known structures and devices are shown in block diagram form to facilitate describing the subject disclosure.
Various short-comings are present within existing systems for recommending and providing downloadable content items to a plurality of users. For example, in a typical online store system for selling/distributing downloadable applications (hereinafter, “apps”), a user may download an app and receive recommendations from the system regarding other apps which might be of interest the user. However, the recommendations are typically grouped into clusters according to certain criteria, e.g., by categories, by developer, etc. Similarly, an online system providing media content will make recommendations to users based on criteria clusters, e.g., by recommending media content in the same genre or created by the same artists, etc. Recommending apps in criteria clusters fails to produce recommendations which work together as a full solution to match the user's different, varying and unique interests or account for the user's present circumstances.
The subject matter disclosed herein provides various features including recommendations of bundles of content items that work together across categorical boundaries to address a user's situation and have very little overlapping functionalities. As disclosed herein, content items may be recommended based on data tags and/or the probability of a user having downloaded app pairs. In this manner many benefits may be obtained for the user. In one example, by storing data tag information related to users of the system, as well as data tag information related to the content items, it is possible to make recommendations based on a change in a user's circumstances as indicated by the user's data tags.
FIG. 1 provides a conceptual diagram of asystem100 which may be used to recommend content items in accordance with an exemplary embodiment of the present disclosure.System100 includes aserver110 including astorage device120, amemory130, and aprocessor140.Server110 is connected to anetwork150 and is accessible to users via aninterface160. Network150 may be any suitable network for transmitting data, for example, a local area network, a wide area network, the Internet, etc.
As is readily understood in the art,server110 andinterface160 may each be implemented by any suitable computing device and/or plurality of computer devices. For example, in oneembodiment interface160 may be implemented using a mobile computing device, such as a laptop, tablet, mobile phone, smartphone, personal data assistant, portable gaming system, digital media player, etc., whileserver110 may be implemented as one or more computers functioning as a mass storage unit.
Regardingserver110,storage device120 may be implemented, for example, as one or more hardware storage devices such as a hard drive, flash memory drive or other memory storage circuit. Accordingly,system100 may store a plurality ofcontent items170 in thestorage device120 ofserver110.Content items170 may be, for example, digital media files, executable apps, programs, etc.
A user ofsystem100 may access the plurality ofcontent items170 vianetwork150 usinginterface140. The user may maintain a user account, stored as user data180 in thesystem100. User data180 may include basic identification information data including name, phone number, address, email address, etc., as well as historical information data such asitems170 viewed,items170 downloaded,items170 purchased, ads presented, recommendations provided, conversion ratio, etc., in line with an established privacy policy.
Memory130 may be implemented using hardware, read-only memory (ROM), random access memory (RAM), storage circuitry such as registers, and/or software memory structures or any combination thereof.Memory130 may store a plurality of executable components used to operatesystem100.
FIG. 2 illustrates one exemplary embodiment ofmemory130, including astorage component210, a calculatingcomponent220, an output component230, aprocessing component240, and atagging component250. A person of ordinary skill in the art would appreciate that these various components may be implemented using software and/or electrical circuit(s) that can include circuitry elements of suitable function in order to implement the embodiments described herein. Furthermore, it can be appreciated that many of the various components can be implemented on one or more integrated circuit (IC) chips.
Storage component210 may be configured to manage storage of a plurality of content items (apps) and storage of user data stored within the storage device120 (FIG. 1).
Tagging component220 may be configured to “tag”content items170 and user accounts. Tagging herein refers to storing an association of a first item of data with a second item of data. For example, the first item of data could be a type of descriptive information data, e.g., language, region, location, price, or entity data, and the second item of data could be content item data, e.g., a music file or an app. Hereinafter, the first item of data in a tagging operation will be referred to as a tag, and the second item of data will be referred to as a subject.
The foregoing features will be understood more clearly in view of an exemplary embodiment, which will be described as follows, in which thesystem100 is implemented as an online app store. It should be understood that this is merely one exemplary embodiment presented for illustrative purposes only and thatsystem100 may be implemented in any of multiple other ways that involve presenting individualized content for users in a given system, for example, as a network music store, an online news/article/review site, a product sampling site, an art store, etc.
In theexemplary system100 which functions as an online app store, user data180 includes user (customer) account information and the users' respective historical app viewing/installing data, and thecontent items170 include the apps available to the users via the store. Regarding the tagging of data, user accounts and apps may both be subjects which are tagged by the same set of tags.
For each app A, the calculatingcomponent220 may determine a corresponding app quality score sA. The app quality score sAmay be based on the collective user data180 and indicate an overall quality of the app. The app quality score sAcan be a function of, but not limited to, one or more of the following factors regarding the app: a number of user installations of the app, an uninstall ratio, a number of rating, an average of ratings, a developer credit, and/or raciness. For example, a higher number of ratings or a higher average may result in a higher app quality score sA.
The calculatingcomponent220 may further determine a co-install score s(A,B)for each pair of apps (A, B) among a plurality of apps stored within thesystem100. The co-install score s(A,B)may be determined in any number of ways. Essentially, the co-install score s(A,B)should indicate a likelihood that a given pair of apps are installed by the same user. For example, the co-install score s(A,B)between two apps (A, B) may be determined based on mutual information as follows:
s(A,B)=Σa∈{A,!A}Σb∈{B,!B}P(a,b)log(P(a, b)/(P(a,)P(b))) [Eq. 1]
where A means a first app has been installed by a user, !A means the first app has not been installed by a user, B means a second app has been installed by a user, !B means the second app has not been installed by a user, and P(•) are probabilities approximated based on the user installation data, where the probabilities may be approximated by counting the installations and co-installations over all users.
Based on the co-install score, thesystem100 may determine graphs (sets) and sub-sets of apps among the plurality of apps stored in thesystem100. The graphs may be determined or defined based on relationships between apps based on the co-install scores, i.e., a set of apps may be defined as pairs of apps which each have a co-score of at least a minimal value. Such a set may be referred to as a co-install graph. For example, a co-install graph G={V, E} may be defined as a graph with vertices V and undirected edges E, wherein each vertex v∈V represents an app and is associated with app tags and a quality score svas discussed above. In this example, each edge e=(v1, v2)∈E connects two vertices (apps) v1 and v2 and is associated with the co-install score se.
The size of the co-install graph as just described may be controlled by adjusting parameters and/or setting threshold requirements. For example, thesystem100 may be configured such that no edge will be added between two apps if the co-install score of the two apps is below a threshold value.
A complete graph among the plurality of apps may be defined as a simple undirected graph in which every pair of distinct vertices is connected by a unique edge.FIG. 7 illustrates an exemplary simpleundirected graph700 among a plurality of vertices (apps) A-F.Complete graph700 includes four vertices (apps) A, B, C, and D, each connected by a unique edge. Thesystem100 may provide a complete subgraph of the co-install graph as a recommended subset (bundle) of apps to the user. Given a set of data tags, a tag-set subgraph may be defined as a subgraph of the con-install graph such that each app in the subgraph contains one or more tags in the given set of tags.
A graph quality score Q(G) may be defined to measure the quality of a complete graph of apps. In other words, the graph quality score Q(G) provides a metric to determine the overall quality of the complete graph recommendation of a bundle of apps. For example, a high quality complete graph may contain vertices of high app quality scores on average and edges of high co-install scores on average. An exemplary definition of Q(G) is:
Q(G={V, E})=Σv∈Vsv/|V|+αΣe∈Ese/|E|+β|V| [Eq. 2]
Where α and β are tunable parameters, i.e., a large α gives preference in the score to a large number of edges and a large β gives preference to a large graph.
Accordingly, various algorithms may be used to generate complete subgraphs which satisfy different problems. For example, a maximum N-complete subgraph problem could be defined as a problem to find a complete subgraph G with at most N vertices (apps) from the original graph of the plurality of apps such that the subgraph G has a maximum quality score Q(G). However, a complete optimal solution to this problem may be prohibitively expensive to find and implement. In this case, a sub-optimal solution may be used, for example,processing component240 may execute the following algorithm:
| 1. Let G = {V , E} be the original graph; |
| 2. r = 0; |
| 3. k = 0, Gk= φ; |
| 4. Let C(Gk) = {v ∈ V|Gk|Gk+ v is complete} , and |
| C(φ) = V. If C(Gk) = φ , go to step 10; |
| 5. ∀ v ∈ C(Gk) , compute a weight w(v) = sv+ αΣe∈EvSe + β |Ev| |
| where Ev= {e ∈ E|v is a vertex of e}; |
| 6. Choose a v from C(Gk) by weight sampling, using w(v) as weight; |
| 7. Gk+1 = Gk+ v; |
| 8. k ← k + 1; |
| 9. Go to step 4 until k = N; |
| 10. r ← r + 1; |
| 11. Let Gr = Gk; |
| 12.Go to step 3 until r = R; |
| 13. Return Gr that has the largest Q(Gr), r = 1 : R. |
|
Let Vfbe a fixed set of vertices in G. Let G(Vf) be the subgraph of G after removing all of its vertices that are not in Vf. Suppose that G(Vf) is a complete subgraph. A maximum N-complete F-subgraph may be defined similar to the maximum N-complete subgraph problem described above, except that the found complete subgraph must contain G(Vf). Several solutions exist for the F-subgraph. One, for example, would be Algorithm I, with the following change to step 3:
k=0,Gk=G(Vf); 3.
In this case, if G(Vf) is not a complete subgraph, thesystem100 may first find a maximum N-complete subgraph from G(Vf) and then apply the maximum N-complete F-subgraph algorithm.
Thesystem100 may thereby recommend a bundle of applications to a user via the output component230 in any of various scenarios, taking into account different factors. For example, the apps and the user account may both have respective associated data tags of the same set. An exemplary tag set which will be referred to is the “entity” data tag. Herein, an entity is a thing or concept which exists in the world and is represented by a unique ID. An entity ID may be independent of language restrictions or categorical limitations. For example, using the established Freebase entity system, a social networking app could be tagged with “entity:/m/01w362” (social network) and/or “entity:/m/0fj7z” (instant messaging), etc.
Both the user account and the stored apps may be tagged with entity data tags. In addition, user accounts may be tagged with long term data applicable to the user, such as demographic data, gender data, identification (name, phone number, address, email address), etc. Long term user data may be received, for example, from the setting up a user profile.
Based on the entity data tags, thesystem100 can recommend a bundle of apps. For example, in one exemplary embodiment if the user experiences a change (e.g., travel to a new location, pregnant, looking for a house, etc.) the user account tags may be updated with corresponding entity data to reflect the change. In other words, in contrast to long term user data, short term user data tags may be created based on recent actions of the user. For example, if the user recently issues many search queries about housing, the user may be tagged with instant tags “entity:/m/0bp7qzc” (house buying), “entity:/m/023907r” (Real Estate), etc. If the user travels to a new location Tokyo, the user may be tagged with an instant tag “entity:/m/07dfk” (Tokyo). Thesystem100 may accordingly recommend a bundle of apps in response to the change, as illustrated in the flowchart ofFIG. 3.
Referring toFIGS. 1-3, thetagging component250 tags a plurality ofapps170 and user data180 stored in the storage device. At operation S100, thesystem100 may generate a set of tags that represent a user's interest and the basis of the recommendation, e.g., a user's changed status. In the case of a user change, the tag update may be handled automatically based on detected changes in user data180 or manually, via the user inputting information to update the user's status viainterface160.
At operation S200, the calculating component may determine a co-install score for the plurality ofapps170, and theprocessing component240 may determine a co-install graph from the plurality ofapps170 based on the co-install score. The processing component may determine a tag-set subgraph from the co-install graph based on the tag-set generated in operation S100.
At operation S300, the processing component may determine a maximum N-complete subgraph from the tag-set subgraph, for example, using Algorithm I or another algorithm, where N is a number of apps.
At operation S400 the output component outputs the recommendation of apps in the maximum N-complete subgraph as a bundle to the user.
In another exemplary embodiment, if a user has an existing set of apps, the system may recommend an additional set of apps that complement the existing set of apps in a similar manner as the process illustrated inFIG. 3, except that operation S300 would comprise determining the maximum N-complete F-subgraph from the tag-set subgraph and operation S400 would accordingly comprise recommending apps in the maximum N-complete F-subgraph (after removing the already installed apps) as a bundle to the user.
The above-described exemplary embodiments applysystem100 to an app store for illustrative purposes, but a person of ordinary skill in the art can readily apply thesystem100 to other types of content item systems, including, but not limited to, a music store, an article/news site, a product sampling site, etc. For example, in general terms, as described above, thesystem100 may store a plurality of content items in a computer system, determine a respective co-selection score for each pair of content items among the plurality of content items, the co-selection score indicating a probability that a given pair of content items among the plurality of content items will both be downloaded by a user of the computer system, and output, to a first user, a plurality of content items comprising a sub-set of the plurality of content items, the sub-set being selected to correspond to a graph having vertices each connected by unique edges. Each vertex may correspond to a content item and each unique edge may correspond to a co-selection score greater than a predetermined threshold value.
Thesystem100 may further determine respective quality scores for each of the plurality of content items and select the sub-set to have a graph quality score which is greater than a predetermined threshold value. The graph quality score may be based on an average quality score of the sub-set content items and an average co-install score of the sub-set content item pairs.
The sub-set may be further selected to have a graph quality score that is an approximate maximum possible value for a predetermined number of content items.
Thesystem100 may further store installation data corresponding to statistics of content item installations made by a plurality of users of thesystem100. The co-selection scores may further be determined based on the installation data.
Thesystem100 may associate one or more data tags with each of the plurality of content items. The sub-set may further be selected such that each of the sub-set content items are associated with one or more data tags of a predetermined set of one or more data tags.
Thesystem100 may associate one or more data tags with user data for each of a plurality of users of the computer system. In this case, the predetermined set of one or more data tags may comprise the one or more data tags which are associated with a given user.
Thesystem100 may output the recommended bundle to the user when there is a change in the data tags associated with the given user's user data.
In situations in which the systems discussed here collect personal information about users, or may make use of personal information, the users may be provided with an opportunity to control whether programs or features collect user information (e.g., information about a user's social network, social actions or activities, profession, a user's preferences, or a user's current location), or to control whether and/or how to receive content from the content server that may be more relevant to the user. In addition, certain data may be treated in one or more ways before it is stored or used, so that personally identifiable information is removed. For example, a user's identity may be treated so that no personally identifiable information can be determined for the user, or a user's geographic location may be generalized where location information is obtained (such as to a city, ZIP code, or state level), so that a particular location of a user cannot be determined. Thus, the user may have control over how information is collected about the user and used by a system as disclosed herein.
Embodiments of the presently disclosed subject matter may be implemented in and used with a variety of component and network architectures.FIG. 4 is anexample computing device20 suitable for implementinginterface160 orserver110 in embodiments of the presently disclosed subject matter. Thedevice20 may be, for example, a desktop or laptop computer, or a mobile computing device such as a smart phone, tablet, or the like. Thedevice20 may include a bus21 which interconnects major components of thecomputer20, such as acentral processor24, amemory27 such as Random Access Memory (RAM), Read Only Memory (ROM), flash RAM, or the like, auser display22 such as a display screen, a user input interface26, which may include one or more controllers and associated user input devices such as a keyboard, mouse, touch screen, and the like, a fixedstorage23 such as a hard drive, flash storage, and the like, aremovable media component25 operative to control and receive an optical disk, flash drive, and the like, and anetwork interface29 operable to communicate with one or more remote devices via a suitable network connection.
The bus21 allows data communication between thecentral processor24 and one or more memory components, which may include RAM, ROM, and other memory, as previously noted. Typically RAM is the main memory into which an operating system and application programs are loaded. A ROM or flash memory component can contain, among other code, the Basic Input-Output system (BIOS) which controls basic hardware operation such as the interaction with peripheral components. Applications resident with thecomputer20 are generally stored on and accessed via a computer readable medium, such as a hard disk drive (e.g., fixed storage23), an optical drive, floppy disk, or other storage medium.
The fixedstorage23 may be integral with thecomputer20 or may be separate and accessed through other interfaces. Thenetwork interface29 may provide a direct connection to a remote server via a wired or wireless connection. Thenetwork interface29 may provide such connection using any suitable technique and protocol as will be readily understood by one of skill in the art, including digital cellular telephone, WiFi, Bluetooth®, near-field, and the like. For example, thenetwork interface29 may allow the computer to communicate with other computers via one or more local, wide-area, or other communication networks, as described in further detail below.
Many other devices or components (not shown) may be connected in a similar manner (e.g., document scanners, digital cameras and so on). Conversely, all of the components shown inFIG. 4 need not be present to practice the present disclosure. The components can be interconnected in different ways from that shown. The operation of a computer such as that shown inFIG. 4 is readily known in the art and is not discussed in detail in this application. Code to implement the present disclosure can be stored in computer-readable storage media such as one or more of thememory27, fixedstorage23,removable media25, or on a remote storage location.
FIG. 5 shows an example network arrangement according to an embodiment of the disclosed subject matter. One ormore devices10,11, such as local computers, smart phones, tablet computing devices, and the like may connect to other devices via one ormore networks7. Each device may be a computing device as previously described. The network may be a local network, wide-area network, the Internet, or any other suitable communication network or networks, and may be implemented on any suitable platform including wired and/or wireless networks. The devices may communicate with one or more remote devices, such asservers13 and/ordatabases15. The remote devices may be directly accessible by thedevices10,11, or one or more other devices may provide intermediary access such as where aserver13 provides access to resources stored in adatabase15. Thedevices10,11 also may accessremote platforms17 or services provided byremote platforms17 such as cloud computing arrangements and services. Theremote platform17 may include one ormore servers13 and/ordatabases15.
FIG. 6 shows another example arrangement according to an embodiment of the disclosed subject matter. One or more devices or systems/user devices10 such as local computers, smart phones, tablet computing devices, remote services/service providers18, and the like, may connect to other devices via one ormore networks7. The network may be a local network, wide-area network, the Internet, or any other suitable communication network or networks, and may be implemented on any suitable platform including wired and/or wireless networks. Thedevices10,11 may communicate with one or more remote computer systems, such asprocessing units14,databases15, anduser interface systems19. In some cases, thedevices10,11 may communicate with a user-facinginterface system19, which may provide access to one or more other systems such as adatabase15, aprocessing unit14, or the like. For example, theuser interface13 may be a user-accessible web page that provides data from one or more other computer systems. Theuser interface19 may provide different interfaces to different clients, such as where a human-readable web page is provided to a web browser client on auser device10, and a computer-readable API or other interface is provided to aremote service client11.
Theuser interface19,database15, and/orprocessing units14 may be part of an integral system, or may include multiple computer systems communicating via a private network, the Internet, or any other suitable network. One ormore processing units14 may be, for example, part of a distributed system such as a cloud-based computing system, search engine, content delivery system, or the like, which may also include or communicate with adatabase15 and/oruser interface13. In some arrangements, ananalysis system5 may provide back-end processing, such as where stored or acquired data is pre-processed by theanalysis system5 before delivery to theprocessing unit14,database15, and/oruser interface19. For example, amachine learning system5 may provide various prediction models, data analysis, or the like to one or moreother systems19,14,15.
More generally, various embodiments of the presently disclosed subject matter may include or be embodied in the form of computer-implemented processes and apparatuses for practicing those processes. Embodiments also may be embodied in the form of a computer program product having computer program code containing instructions embodied in non-transitory and/or tangible media, such as floppy diskettes, CD-ROMs, hard drives, USB (universal serial bus) drives, or any other machine readable storage medium, such that when the computer program code is loaded into and executed by a computer, the computer becomes an apparatus for practicing embodiments of the disclosed subject matter. Embodiments also may be embodied in the form of computer program code, for example, whether stored in a storage medium, loaded into and/or executed by a computer, or transmitted over some transmission medium, such as over electrical wiring or cabling, through fiber optics, or via electromagnetic radiation, such that when the computer program code is loaded into and executed by a computer, the computer becomes an apparatus for practicing embodiments of the disclosed subject matter. When implemented on a general-purpose microprocessor, the computer program code segments configure the microprocessor to create specific logic circuits.
In some configurations, a set of computer-readable instructions stored on a computer-readable storage medium may be implemented by a general-purpose processor, which may transform the general-purpose processor or a device containing the general-purpose processor into a special-purpose device configured to implement or carry out the instructions. Embodiments may be implemented using hardware that may include a processor, such as a general purpose microprocessor and/or an Application Specific Integrated Circuit (ASIC) that embodies all or part of the techniques according to embodiments of the disclosed subject matter in hardware and/or firmware. The processor may be coupled to memory, such as RAM, ROM, flash memory, a hard disk or any other device capable of storing electronic information. The memory may store instructions adapted to be executed by the processor to perform the techniques according to embodiments of the disclosed subject matter.
The foregoing description, for purpose of explanation, has been described with reference to specific embodiments. However, the illustrative discussions above are not intended to be exhaustive or to limit embodiments of the disclosed subject matter to the precise forms disclosed. Many modifications and variations are possible in view of the above teachings. The embodiments were chosen and described in order to explain the principles of embodiments of the disclosed subject matter and their practical applications, to thereby enable others skilled in the art to utilize those embodiments as well as various embodiments with various modifications as may be suited to the particular use contemplated.