The subject matter of this disclosure relates to collaborative services. More particularly, the subject matter of this disclosure relates to techniques and platforms that use a distributed social network to provide collaborative services to users in discrete online markets.
The rapid growth in the past decade of social networking sites, such as Facebook and LinkedIn, has revealed a prominent trend of Internet usage. Social networking generally relates to services and tools that help users maintain and expand their circles of friends usually by exploiting existing relationships. Social networking sites have become places on the Internet where many people spend most of their time, thus making these sites a main entry point for online activity. Oftentimes, these social networking sites can become the focal point for sharing information, such as links, multimedia, music, and the like.
Presently, online labor markets and other topical markets generally operate as isolated sites that do not effectively communicate with one another, if at all. For example, jobs and bids posted on one site are viewable only by users who belong to that particular site. A problem associated with the process of enabling communication among different market sites is how a social networking system can be created in the absence of dedicated infrastructure. Another problem is how the social networking system can enable new market features, such as allowing advertisement of job postings on various market sites using the social networking system.
Accordingly, it may be desirable to have methods and systems that provide a social network to connect users in various discrete markets and facilitate the users in advertising and bidding on job postings across the discrete markets.
According to various embodiments, the present teachings include a collaborative services framework that uses a social network to propagate requests for proposal. Embodiments of the present invention implement the collaborative services framework in a peer-to-peer distributed manner, to provide social networking features to users in discrete markets such as online labor markets and other topical markets. The collaborative services framework can include a social network overlay and a market similarity overlay. The social network overlay can create and manage social links between users in the same market or different markets, and the collaborative services framework can propagate a request for proposal from a user to other users based on the social links. The market similarity overlay can dynamically link markets that are determined to be similar based on interactions and/or social links between users in the markets, and the collaborative services framework can propagate a request for proposal from a user in a first market to other markets that are potential neighbors of the first market. Using the social network overlay and/or the market similarity overlay, the collaborative services framework provides an advertising mechanism through which a user in a market can propagate requests for proposal to users in other markets based on their past working relationships.
It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only and are not restrictive of the invention, as claimed.
The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate several embodiments of the invention and together with the description, serve to explain the principles of the invention.
The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate embodiments of the invention and together with the description, serve to explain the principles of the invention. In the figures:
For simplicity and illustrative purposes, the principles of the present teachings are described by referring mainly to exemplary embodiments thereof. However, one of ordinary skill in the art would readily recognize that the same principles are equally applicable to, and can be implemented in, all types of networking systems, and that any such variations do not depart from the true spirit and scope of the present invention. Moreover, in the following detailed description, references are made to the accompanying figures, which illustrate specific embodiments. Electrical, mechanical, logical and structural changes can be made to the embodiments without departing from the spirit and scope of the present invention. The following detailed description is, therefore, not to be taken in a limiting sense and the scope of the present invention is defined by the appended claims and their equivalents.
Embodiments of the present invention implement a collaborative services framework in a peer-to-peer (“P2P”) distributed manner, to provide social networking features to users in discrete markets such as online labor markets and other topical markets. The collaborative services framework can provide one or more overlays implemented on top of the markets, without requiring modification to existing software and infrastructure used to implement the markets.
In various embodiments, the collaborative services framework can include a social network overlay and a market similarity overlay. The social network overlay can create and manage social links between users in the same market or different markets, and can propagate at least one request for proposals (“RFP”) from a user to other users based on the social links. The social network overlay can dynamically create and update social links between users based on interactions between the users as well as the number, frequency, age, and other attributes of the interactions. The market similarity overlay can dynamically link markets that are determined to be similar based on interactions and/or social links between users in the markets. For each market, the market similarity overlay can create and manage lists of market neighbors and potential neighbors, and can dynamically update the lists based on interactions between users in that market and users in other markets. The market neighbors list of a market can include other markets with which that market has had at least one direct interaction. The potential neighbors list of a market can include other markets that the market has not directly interacted with but is likely to do so in the future. Using the social network overlay and/or the market similarity overlay, the collaborative services framework provides an advertising mechanism through which a user in a market can propagate RFPs to users in other markets based on their past working relationships.
In various embodiments, collaborative services system 100 can be implemented independently from the discrete markets and can provide one or more network overlays on top of the discrete markets. Each discrete market can use an RPC client running therein to communicate with an RPC server running in the P2P module corresponding to that discrete market. The discrete markets and their corresponding P2P modules can be communicative coupled via a direct connection or one or more networks (not shown), such as a local area network, a wide area network, the Internet, a cloud-based network, a cellular network, a combination thereof, and the like. The discrete markets can use the RPC clients to send queries or events to collaborative services system 100. An event can include, for example, a user posting an RFP, a user making a bid responsive to an RFP, a user accepting a bid responsive to an RFP (i.e., a user awarding a bid), a user providing a rating or feedback on a transaction (as described infra), and the like.
Collaborative services system 100 can leverage a distributed hash table (e.g., DHTs 114, 124, and 134) to form a social network overlay, with each of the discrete markets forming a node in the social network overlay. The DHT serves as a distributed database that can be distributed across the discrete markets participating in collaborative services system 100. The DHT can manage objects of the social network overlay, such as contact lists that represent a network of users (e.g., users 105a-f) in the discrete markets. The discrete markets are each shown to include or host two users for illustrative purposes only. In various embodiments, each of the discrete markets can include or host any number of users.
The DHT can store a list of connections, such as social links, between pairs of users based on the users' past interactions. A social link between a pair of users can include the users' identifiers, a list of one or more interactions between the users, and a strength of the social link. An interaction can include a transaction or a feedback on a transaction, the feedback including, for example, a user-entered rating for the transaction. A transaction transpires when a poster, or the user that posted an RFP, accepts a bid from a bidder, or the user that made the bid in response to the RFP, i.e., the poster assigns or awards the bid to the bidder. Different types of interactions are possible between a pair of users, including, for example, internal and external. An interaction can be classified as internal if the poster and the bidder are from the same market, and as external if the poster and the bidder are from different markets.
A social link's strength can be determined and/or updated based on the number, frequency, and/or age of interactions associated with the social link, ratings on one or more transactions associated with the social link, and the like. For example, collaborative services system 100 can determine the strength of a social link between a pair of users based on an exponential average of the ratings and the frequency of interactions between the pair of users in a specific time period under consideration. In various embodiments, the strength of a social link can be computed using formulas (1)-(3):
As shown in formula (1), a link strength f(w) for a time window w is a function of an interaction frequency g(w) and an average rating h(w) of transactions associated with the social link. The interaction frequency g(w), as shown in formula (2), is a function of the number of interactions nintr in the time window w and the number of days nw in the time window. The average rating h(w), as shown in formula (3), is an exponential moving average of the ratings associated with the social link. For formulas (1)-(3), α and β are system parameters, rt is the rating at time t, and gt is the average of the ratings up to time t. As shown, the values of formulas (1)-(3) can be normalized to 1.
In various embodiments, collaborative services system 100 can also leverage the P2P modules to form a market similarity overlay, to dynamically link discrete markets that are determined to be similar based on interactions and/or social links between users in those discrete markets. For each discrete market, the market similarity overlay can create and manage a list of market neighbors (e.g., market neighbors lists 116, 126, and 136) and a list of potential neighbors (e.g., potential neighbors lists 118, 128, and 138), and can dynamically update the lists based on interactions between users in that discrete market and users in other discrete markets. The lists of market neighbors and potential neighbors of a discrete market can be mutually exclusive, i.e., markets in the list of market neighbors would not be in the potential neighbors list, and vice versa.
The market neighbors list of a discrete market can include other discrete markets with which the discrete market has had at least one direct interaction. More particularly, for each participating discrete market Mi, collaborative services system 100 can keep a list of up to log(N) neighboring markets, where N is the total number of discrete markets participating in collaborative services system 100. The discrete markets in the market neighbors list can be considered neighbors of Mi. The market neighbors list of Mi can be empty initially. When an external interaction involving a first user in Mi and a second user in another discrete market Mj transpires, collaborative services system 100 can establish a market link between markets M, and Mj, if one does not exist, by adding Mj to the market neighbors list of Mi. Collaborative services system 100 can also add Mi to a market neighbors list of Mj. A market link between a pair of discrete markets can include the markets' identifiers, a list of one or more external interactions between users in the markets, and a strength of the market link.
A market link's strength can be determined and/or updated based on the number, frequency, and/or age of external interactions associated with the market link, ratings on one or more external transactions associated with the market link, and the like. Collaborative services system 100 can update the strength of market links on a periodic basis and/or when an external interaction transpires. The strength of a market link between a pair of discrete markets can be determined based on an exponential average of the ratings of external transactions and the frequency of external interactions between users in the pair of discrete markets in a specific time period under consideration. For example, collaborative services system 100 can dynamically strengthen a market link between discrete markets Mi and Mj based on an increased number or frequency of external interactions between users in Mi and Mj and/or positive ratings for external transactions associated with the market link. Alternatively, collaborative services system 100 can dynamically weaken the market link based on a decreased number or a lack of external interactions between users in Mi and Mj over consecutive time periods and/or negative ratings for external transactions associated with the market link. In various embodiments, the strength of a market link can be computed using formulas (4)-(6):
As shown in formula (4), a link strength F(w) for a time window w is a function of an external interaction frequency G(w) and an average rating H(w) of external transactions associated with the market link. The external interaction frequency G(w), as shown in formula (5), is a function of the number Nx of external interactions between users in the pair of discrete markets in the time window w, and the number of days Nw in the time window. The average rating H(w), as shown in formula (6), is an exponential moving average of the ratings of external transactions associated with the market link. For formulas (4)-(6), δ and χ are system parameters, rt is the rating at time t, and gt is the average of the ratings up to time t. As shown, the values of formulas (4)-(6) can be normalized to 1.
The potential neighbors list of a discrete market can include other discrete markets that the discrete market has not directly interacted with, but there is a probability that an external interaction could transpire between users in those markets in the future. The probability for a discrete market and a potential market neighbor can be determined based on, for example, an aggregate or an average of path strengths between users in those markets and users in one or more common market neighbors shared by those markets. More particularly, for each participating discrete market Mi, collaborative services system 100 can keep a list of log(N) potential neighbors, where N is the total number of discrete markets participating in collaborative services system 100. The potential neighbors list of Mi can be randomly populated initially. In various embodiments, potential neighbors of discrete market Mi and path strength to those potential neighbors can be determined using formulas (7)-(9):
On a periodic basis, discrete market Mi can obtain or receive, from its strong market neighbors Mj, their market neighbors Mk, as shown in formula (7). Strong market neighbors Mj include log(N) market neighbors with the highest market link strengths. Mk can be considered friends of friends of Mi. For discrete market Mi, collaborative services system 100 can use formula (8) to determine a path strength xijk to each of its potential neighbors Mk through its neighbors Mj, if Mj has Mk in their market neighbor list. As used in formulas (8) and (9), nij and njk represent the number of interactions between pairs of markets (Mi, Mj) and (Mj, Mk), respectively, and Fij and Fjk represent the strength of the market links between pairs of markets (Mi, Mj) and (Mj, Mk), respectively. As shown in formula (9), pik is the weighted average of all the path strengths xijk from Mi to Mk through Mj. Collaborative services system 100 can use formula (9) to determine pik for Mi, and then populate the list of potential neighbors of Mi with log(N) of the discrete markets Mk having the highest pik.
In some cases, the size of the list of potential neighbors of Mi can be less than log(N), in which case collaborative services system 100 can randomly select other discrete markets not already in the lists of market neighbors and potential neighbors of Mi, and calculate a similarity score between them based on their common market neighbors. Specifically, collaborative services system 100 can use a Tanimoto coefficient to calculate the similarity score using two-bit vectors that represent their neighbors. When applied on bit vectors, the formula to calculate the Tanimoto coefficient becomes:
After determining and populating the list of potential neighbors of Mi based on path strengths and common neighbors, if the size of the potential neighbors list of Mi remains less than log(N), then collaborative services system 100 can populate the list of potential neighbors with random discrete markets with pik=0.5.
In various embodiments, collaborative services system 100 can periodically update the strength of social links between users in collaborative services system 100. Collaborative services system 100 can also periodically update the strength of market links between discrete markets in collaborative services system 100, as well as the discrete markets' lists of market neighbor and potential neighbors. For each discrete market, collaborative services system 100 can update its market neighbors list by determining the strength of its market links, replacing weak market links with strong market links, and resizing the market neighbors list. Collaborative services system 100 can update the discrete market's potential neighbors list by monitoring bids received from discrete markets in the potential neighbors list and for any transactions that transpired between them. If at least one transaction transpires between a discrete market Mi and a potential neighbor Mk, they can become market neighbors, and Mk can be removed from the potential neighbors list of M, and added to the market neighbors list of Mi. On the other hand, if no bid is received from potential neighbor Mk over a period of time, then path strength pik between Mi and Mk can decrease linearly, as shown in formula (11).
p
ik
t
=λ·p
ik
t-1, where λε(0,1) (11)
Processing 200 begins in 210, during which collaborative services system 100 can use a P2P network to provide a social network overlay and a market similarity overlay for the discrete markets participating in collaborative services system 100. By using a P2P network of P2P modules (e.g., P2P modules 110, 120, and 130) that correspond to the discrete markets, collaborative services system 100 can provide the overlays without requiring modification to existing software and infrastructure used to implement the discrete markets. Using the social network overlay, collaborative services system 100 can create and manage social links between users in the same market or different markets, and can propagate at least one RFP from a user to other users based on the social links. Social links between users can be dynamically created and updated based on interactions between the users as well as the number, frequency, age, and other attributes of the interactions. Using the market similarity overlay, collaborative services system 100 can dynamically link markets that are determined to be similar based on interactions and/or social links between users in the markets. Collaborative services system 100 can create and manage, for each of the discrete markets, a list of market neighbors and a list of potential neighbors, and can dynamically update the lists based on interactions between users in that discrete market and users in other markets. Using the social network overlay and/or the market similarity overlay, collaborative services system 100 can provide an advertising mechanism through which a user in a discrete market can propagate RFPs to users in other discrete markets based on their past working relationships.
In 220, collaborative services system 100 can receive an RFP from a first user in a first discrete market. Collaborative services system 100 can receive the RFP at a first P2P module corresponding to the first discrete market, which can include a DHT that has a list of the first user's social links and lists of market neighbors and potential neighbors of the first discrete market. A social link between the first user and a linked user can include the users' identifiers, a list of one or more interactions between the users, and a strength of the social link. An interaction can include either a transaction or a feedback/rating on a transaction. A transaction transpires when the first user that posted the RFP accepts a bid responsive to the RFP from a second user, i.e., the first user assigns or awards the bid to the second user. Different types of interactions are possible between a pair of users, including, for example, internal and external. An interaction can be classified as internal if the first user and the second user are from the same market, and as external if the first user and the second user are from different markets. The market neighbors list of the first market can include other markets with which the first market has had at least one direct interaction. The potential neighbors list can include other discrete markets that the first market has not directly interacted with but is likely to do so in the future.
Next, in 230, collaborative services system 100 can use the first P2P module to propagate the RFP from the first user to users in other discrete markets based on the first user's social links and the first discrete market's list of potential neighbors. As shown in
Referring back to
In 270, collaborative services system 100 can determine whether or not the first and second users are in the same discrete market. If yes, then processing 200 proceeds to 290. If no, then processing 200 proceeds to 280, in which collaborative services system 100 can use the first P2P module to update the first market's lists of market neighbors and potential neighbors and/or create or update a market link associated with the first market. For example, in 280, if collaborative services system 100 determines that the second discrete market of the second user is in the potential neighbors list of the first discrete market, then collaborative services system 100 can remove the second discrete market from the potential neighbors list of the first discrete market. Moreover, in 280, if collaborative services system 100 determines that a second discrete market of the second user is not in the market neighbors list of the first discrete market, then collaborative services system 100 can establish a market link between the first and second discrete markets by adding the second discrete market to the market neighbors list of the first discrete market; collaborative services system 100 can also add the first discrete market to the market neighbors list of the second discrete market. Furthermore, in 280, collaborative services system 100 can determine and/or update the strength of the market link between the first and second discrete markets based on the number, frequency, and/or age of external interactions between users in the first and second discrete markets, ratings on one or more external transactions between users in the first and second discrete markets, and the like. Finally, in 290, collaborative services system 100 can determines whether or not to continue processing 200. If yes, then processing 200 returns to 220; if not, then processing 200 ends.
As shown, system 400 may include at least one processor 402, a keyboard 417, a pointing device 418 (e.g., a mouse, a touchpad, and the like), a display 416, main memory 410, an input/output controller 415, and a storage device 414. Storage device 414 can comprise, for example, RAM, ROM, flash memory, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to carry or store desired program code in the form of instructions or data structures and that can be accessed by a computer. A copy of the computer program embodiment of the P2P module can be stored on, for example, storage device 414. System 400 may also be provided with additional input/output devices, such as a printer (not shown). The various components of system 400 communicate through a system bus 412 or similar architecture. In addition, system 400 may include an operating system (OS) 420 that resides in memory 410 during operation. One skilled in the art will recognize that system 400 may include multiple processors 402. For example, system 400 may include multiple copies of the same processor. Alternatively, system 400 may include a heterogeneous mix of various types of processors. For example, system 400 may use one processor as a primary processor and other processors as co-processors. For another example, system 400 may include one or more multi-core processors and one or more single core processors. Thus, system 400 may include any number of execution cores across a set of processors (e.g., processor 402). As to keyboard 417, pointing device 418, and display 416, these components may be implemented using components that are well known to those skilled in the art. One skilled in the art will also recognize that other components and peripherals may be included in system 400.
Main memory 410 serves as a primary storage area of system 400 and holds data that is actively used by applications, such as the P2P module of collaborative services system 100, running on processor 402. One skilled in the art will recognize that applications are software programs that each contains a set of computer instructions for instructing system 400 to perform a set of specific tasks during runtime, and that the term “applications” may be used interchangeably with application software, application programs, and/or programs in accordance with embodiments of the present teachings. Memory 410 may be implemented as a random access memory or other forms of memory as described below, which are well known to those skilled in the art.
OS 420 is an integrated collection of routines and instructions that are responsible for the direct control and management of hardware in system 400 and system operations. Additionally, OS 420 provides a foundation upon which to run application software. For example, OS 420 may perform services, such as resource allocation, scheduling, input/output control, and memory management. OS 420 may be predominantly software, but may also contain partial or complete hardware implementations and firmware. Well known examples of operating systems that are consistent with the principles of the present teachings include MICROSOFT WINDOWS (e.g., WINDOWS CE, WINDOWS NT, WINDOWS 2000, WINDOWS XP, and WINDOWS VISTA), MAC OS, LINUX, UNIX, ORACLE SOLARIS, OPEN VMS, and IBM AIX.
The foregoing description is illustrative, and variations in configuration and implementation may occur to persons skilled in the art. For instance, the various illustrative logics, logical blocks, modules, and circuits described in connection with the embodiments disclosed herein may be implemented or performed with a general purpose processor (e.g., processor 402), a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general-purpose processor may be a microprocessor, but, in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration.
In one or more exemplary embodiments, the functions described may be implemented in hardware, software, firmware, or any combination thereof. For a software implementation, the techniques described herein can be implemented with modules (e.g., procedures, functions, subprograms, programs, routines, subroutines, modules, software packages, classes, and so on) that perform the functions described herein. A module can be coupled to another module or a hardware circuit by passing and/or receiving information, data, arguments, parameters, or memory contents. Information, arguments, parameters, data, or the like can be passed, forwarded, or transmitted using any suitable means including memory sharing, message passing, token passing, network transmission, and the like. The software codes can be stored in memory units and executed by processors. The memory unit can be implemented within the processor or external to the processor, in which case it can be communicatively coupled to the processor via, various means as is known in the art.
If implemented in software, the functions may be stored on or transmitted over a computer-readable medium as one or more instructions or code. Computer-readable media includes both tangible computer storage media and communication media including any medium that facilitates transfer of a computer program from one place to another. A storage media may be any available tangible media that can be accessed by a computer. By way of example, and not limitation, such tangible computer-readable media can comprise RAM, ROM, flash memory, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to carry or store desired program code in the form of instructions or data structures and that can be accessed by a computer. Disk and disc, as used herein, includes CD, laser disc, optical disc, DVD, floppy disk and blu-ray disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Also, any connection is properly termed a computer-readable medium. For example, if the software is transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of medium. Combinations of the above should also be included within the scope of computer-readable media. Resources described as singular or integrated can in one embodiment be plural or distributed, and resources described as multiple or distributed can in embodiments be combined. The scope of the present teachings is accordingly intended to be limited only by the following claims.
Other embodiments of the invention will be apparent to those skilled in the art from consideration of the specification and practice of the invention disclosed herein. It is intended that the specification and examples be considered as exemplary only, with a true scope and spirit of the invention being indicated by the following claims.