Social networks enable computing device users to interact with friends, colleagues, family members, and other people to stay connected and informed. Users may participate in events, activities, and gatherings with the people with whom they are connected within their social graph.
An event service is configured to create groups of computing device users proactively and intelligently based on analyses of user data sets of group members that describe location, availability, social graphs, and interests. For example, signals from the computing device can be monitored to identify location from a suitable device sensor, availability from a calendar application on the device, social graph from social networking application, and interests from profile information, interactions with a digital assistant, web browsing history, and other contextual information. The event service is further configured to identify events and activities by analyzing data acquired from web-based and external resources such as third-party databases and large data sets, and obtain marketing information including discounts, coupons, and other promotions that are pertinent to a given event. Utilizing the user data sets from the combined group, the event service can make suggestions for group activities at suitable times and locations to enable the members to discover and participate in activities with other members of the group that are relevant and interesting while taking advantage of available promotions.
In various illustrative embodiments of auto-suggestion for group activities, the event service can utilize data mining techniques to collect data that is descriptive of the user's social graph from one or multiple social networks (where the data collection is performed with notice to the user and user consent) when creating a group. The event service may analyze the collected descriptive data to identify connections, groups, associations, and other information. The analysis and identification may be performed using implicit inferences (e.g., to infer user interests based on associations) or using explicit information (e.g., to identify direct connections among users or groups). The event service may also build and utilize a trustable social graph using the descriptive data from one or multiple social networks.
The event service can use the descriptive data to identify and form groups such as sports teams, office colleagues, club members, family members and the like. However, the groups do not have to be permanent, formal groups. Ad-hoc, one-off groups can also be supported by the event service. For example, a group can be a college football team with a full schedule of practices and games, an active family of four, or two friends meeting at a downtown coffee shop in the afternoon. The event service can provide suggestions for group activities to all of the members of a group (e.g., a user's entire karate class), or portions of a group based on the data sets associated with each member (e.g., only members of the karate class who enjoy comedy movies).
The event service enables users to save time by reducing the effort that is typically needed to plan and contact groups members when organizing a group activity. The event service also leverages the collected user data sets and large data sets to intelligently identify and suggest group activities that have increased likelihood of being relevant to the group while providing good value through the linkage to available promotions. The event service can further improve operations on the computing device by preserving device resources such as battery power, bandwidth, cellular data, cellular phone minutes, and text messaging limits as users do not need to spend time browsing the web for activities, collaborating with friends to set up an event, or combing through potential events to identify activities that are commonly liked and for which people are available to attend.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter. Furthermore, the claimed subject matter is not limited to implementations that solve any or all disadvantages noted in any part of this disclosure. It may be appreciated that the above-described subject matter may be implemented as a computer-controlled apparatus, a computer process, a computing system, or as an article of manufacture such as one or more computer-readable storage media. These and various other features may be apparent from a reading of the following Detailed Description and a review of the associated drawings.
Like reference numerals indicate like elements in the drawings. Elements are not drawn to scale unless otherwise indicated.
The social graph service 120 can be based on a social network that users 130 utilize for personal or professional use. For example, the social networks can be a professional network to connect with colleagues, a personal network to connect with current friends, past friends, acquaintances, and family, or a combination of the two. The third-party service 125, as discussed in further detail below, can be associated with and store information about planned events, such as sporting events, concerts, or hours of operation for a restaurant, coffee shop, etc. The third-party service may directly store event information and may be dedicated to a particular cause (e.g., sporting events) or indirectly store event information, such as information obtained via crawling the World Wide Web.
The devices 115 operated by users 130 can include any number of computing devices beyond the smartphone and tablet devices depicted in
A virtual digital assistant 135 can be instantiated on the devices 115, such as at an operating system (OS) layer of the device's architecture, which interoperates with an application layer. The digital assistant can perform various tasks automatically or responsively to user interactions, such as voice, touch, or gesture-based user interactions. The digital assistant can be configured to respond to user queries (e.g., what is the weather, who won the sporting event last night, etc.), gather information, set reminders, set calendar appointments, send messages, etc. Although the digital assistant is depicted as being instantiated on the devices 115, the digital assistant may operate with a remote digital assistant service as well (not shown).
The interactions depicted by the arrows in
The social graph data obtained by the event service may be obtained by various data mining techniques 240 such as social network analysis (SNA) and social media mining, among others (collectively referred to as data mining). The data mining can include, with notice to the user and user consent, intelligently sifting through existing social networks to identify connections, friends, corporate organization charts, school social class systems, hobbyist groups and clubs, etc. Data mining may include data pre-processing, data analysis, and data interpretation processes for proper data analysis. Exemplary social media data mining techniques include hierarchical or point-assignment clustering to groups nodes within a network, and collaborative filtering which isolates associations among users.
The data mining techniques may result in the development of a trustable social graph 245, as shown in
The data retrieved from the third-party service 125 may be associated with any number of organizations or entities. The event service can mine for data on the World Wide Web in order to identify when and what events will take place. This can include text mining web pages for particular information in order to ascertain the presence or occurrence of available activities/events and corresponding descriptive information.
The event service can link with and access information from particular establishments or organizations in order to obtain information. For example, the event service can receive access, with notice to the establishment and their consent, information concerning sporting events (e.g., baseball, football, soccer, and bowling), theatrical plays, comedy shows, musical concerts, and the like. By having direct access to the third-party databases, the event service can easily obtain an accurate and up-to-date list of all relevant information, including the type of event, duration, start time, end time, human occupancy capacity, etc.
As further illustrated in
When the event service retrieves all of the relevant data (
When the comparison identifies multiple users with which the context data satisfies the event criteria, as shown in
Referring first to social graph 1005, each member can be a part of one, none, or multiple groups that the event service identifies based on the scenario. Thus, depending on how many groups with which the event service associates a given user, the user can receive no event suggestions, one event suggestion, or multiple event suggestions at any given time. Social graph 1005 portrays three different identified groups 1020, 1025, and 1030. Members 1035 and 1040 overlap between two different groups 1020 and 1025 within the same social graph. Accordingly, members 1035 and 1040 may receive event suggestions associated with both groups.
In contrast, members within group 1025 may receive one or more event suggestions associated with only that group until one or both members are associated with another group at another point in time. The users that have not been identified in any particular group would not receive any suggestions given the current scenario (e.g., the context data and event criteria).
Similarly, social graph 1010 includes two groups 1045 and 1050 which the event service has identified and has determined activities for. In this scenario, member 1055 in the social graph is associated with both groups, and therefore may receive the one or more event suggestions associated with both groups. In contrast, the other members who are part of only one group may receive event suggestions associated with the single group with which they are associated. Members not part of any group may not receive an event suggestion until the event service incorporates or includes the members into a group based on the ever-changing context data, social graph data, and event criteria data.
The user subsequently asks the digital assistant for another suggestion, in which the digital assistant again queries the event service. The event service again identifies members within the user's social graph, context data, and event criteria data to determine other available activities for the user. The event service determines two more potential activities for the user: to see a comedy movie with one group of friends or go to a coffee shop with a separate group.
In step 1505, context data associated with one or more of a user or a computing device associated with the user is periodically received. In step 1510, the received context data is compared with remote context data. The remote context data may include, for example, context data associated with a remote user and a remote computing device associated with the remote user. In step 1515, a correspondence between the received context data and the remote context data is identified. In step 1520, an activity based on the identified correspondence is determined. In step 1525, the determined activity is provided to the user and the one or more remote users.
A number of program modules may be stored on the hard disk drive 1828, magnetic disk drive 1830, optical disk drive 1838, ROM 1817, or RAM 1821, including an operating system 1855, one or more application programs 1857, other program modules 1860, and program data 1863. A user may enter commands and information into the computer system 1800 through input devices such as a keyboard 1866 and pointing device 1868 such as a mouse. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, trackball, touchpad, touchscreen, touch-sensitive device, voice-command module or device, user motion or user gesture capture device, or the like. These and other input devices are often connected to the processor 1805 through a serial port interface 1871 that is coupled to the system bus 1814, but may be connected by other interfaces, such as a parallel port, game port, or universal serial bus (USB). A monitor 1873 or other type of display device is also connected to the system bus 1814 via an interface, such as a video adapter 1875. In addition to the monitor 1873, personal computers typically include other peripheral output devices (not shown), such as speakers and printers. The illustrative example shown in
The computer system 1800 is operable in a networked environment using logical connections to one or more remote computers, such as a remote computer 1888. The remote computer 1888 may be selected as another personal computer, a server, a router, a network PC, a peer device, or other common network node, and typically includes many or all of the elements described above relative to the computer system 1800, although only a single representative remote memory/storage device 1890 is shown in
When used in a LAN networking environment, the computer system 1800 is connected to the local area network 1893 through a network interface or adapter 1896. When used in a WAN networking environment, the computer system 1800 typically includes a broadband modem 1898, network gateway, or other means for establishing communications over the wide area network 1895, such as the Internet. The broadband modem 1898, which may be internal or external, is connected to the system bus 1814 via a serial port interface 1871. In a networked environment, program modules related to the computer system 1800, or portions thereof, may be stored in the remote memory storage device 1890. It is noted that the network connections shown in
The architecture 1900 illustrated in
The mass storage device 1912 is connected to the CPU 1902 through a mass storage controller (not shown) connected to the bus 1910. The mass storage device 1912 and its associated computer-readable storage media provide non-volatile storage for the architecture 1900.
Although the description of computer-readable storage media contained herein refers to a mass storage device, such as a hard disk or CD-ROM drive, it may be appreciated by those skilled in the art that computer-readable storage media can be any available storage media that can be accessed by the architecture 1900.
By way of example, and not limitation, computer-readable storage media may include 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. For example, computer-readable media includes, but is not limited to, RAM, ROM, EPROM (erasable programmable read only memory), EEPROM (electrically erasable programmable read only memory), Flash memory or other solid state memory technology, CD-ROM, DVDs, HD-DVD (High Definition DVD), Blu-ray, or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by the architecture 1900.
According to various embodiments, the architecture 1900 may operate in a networked environment using logical connections to remote computers through a network. The architecture 1900 may connect to the network through a network interface unit 1916 connected to the bus 1910. It may be appreciated that the network interface unit 1916 also may be utilized to connect to other types of networks and remote computer systems. The architecture 1900 also may include an input/output controller 1918 for receiving and processing input from a number of other devices, including a keyboard, mouse, or electronic stylus (not shown in
It may be appreciated that the software components described herein may, when loaded into the CPU 1902 and executed, transform the CPU 1902 and the overall architecture 1900 from a general-purpose computing system into a special-purpose computing system customized to facilitate the functionality presented herein. The CPU 1902 may be constructed from any number of transistors or other discrete circuit elements, which may individually or collectively assume any number of states. More specifically, the CPU 1902 may operate as a finite-state machine, in response to executable instructions contained within the software modules disclosed herein. These computer-executable instructions may transform the CPU 1902 by specifying how the CPU 1902 transitions between states, thereby transforming the transistors or other discrete hardware elements constituting the CPU 1902.
Encoding the software modules presented herein also may transform the physical structure of the computer-readable storage media presented herein. The specific transformation of physical structure may depend on various factors, in different implementations of this description. Examples of such factors may include, but are not limited to, the technology used to implement the computer-readable storage media, whether the computer-readable storage media is characterized as primary or secondary storage, and the like. For example, if the computer-readable storage media is implemented as semiconductor-based memory, the software disclosed herein may be encoded on the computer-readable storage media by transforming the physical state of the semiconductor memory. For example, the software may transform the state of transistors, capacitors, or other discrete circuit elements constituting the semiconductor memory. The software also may transform the physical state of such components in order to store data thereupon.
As another example, the computer-readable storage media disclosed herein may be implemented using magnetic or optical technology. In such implementations, the software presented herein may transform the physical state of magnetic or optical media, when the software is encoded therein. These transformations may include altering the magnetic characteristics of particular locations within given magnetic media. These transformations also may include altering the physical features or characteristics of particular locations within given optical media to change the optical characteristics of those locations. Other transformations of physical media are possible without departing from the scope and spirit of the present description, with the foregoing examples provided only to facilitate this discussion.
In light of the above, it may be appreciated that many types of physical transformations take place in the architecture 1900 in order to store and execute the software components presented herein. It also may be appreciated that the architecture 1900 may include other types of computing devices, including handheld computers, embedded computer systems, smartphones, PDAs, and other types of computing devices known to those skilled in the art. It is also contemplated that the architecture 1900 may not include all of the components shown in
Various exemplary embodiments of the present auto-suggestion for group activities based on combined data sets are now presented by way of illustration and not as an exhaustive list of all embodiments. An example includes a method performed on a control server that is in communication with a plurality of computing devices over a network, the method comprising: periodically receiving context data associated with one or more of a user or a computing device associated with the user; comparing the received context data with remote context data associated with one or more remote users respectively operating remote devices, the one or more remote users being at least indirectly associated with the user; identifying a correspondence between the received context data and the remote context data; determining an activity based on the identified correspondence; providing the determined activity to the user and the one or more remote users.
In another example, connections within a social graph are used to determine whether the user and the one or more remote users are indirectly associated with each other. In another example, the method further includes: implementing data mining techniques to retrieve social graph data from one or more social networks; building a trustable social graph with the social graph data; and determining whether the user and the one or more remote users are indirectly associated with each other using the trustable social graph. In another example, the context data and the remote context data include one or more of location data, user preferences data, calendar data, communication data, or search history data. In another example, the method further includes receiving from the user and the one or more remote users a confirmation or denial to the provided determined activity. In another example, the method further includes: remain pending the provided activity so long as respective user has not denied the activity; and when the activity expires, dismiss the provided activity. In another example, expiration of the activity includes one or more of a time to attend the activity has expired, a user's distance to the activity passes a threshold, occupancy at the activity has reached a threshold, user input, or adjustment to the context data, social graph, or event criteria. In another example, a suggested activity is reactively determined and provided to the user in response to a query for an available activity from the user.
A further example includes a control server, comprising: one or more processors; network connectivity capabilities to communicate with remote databases and client devices over a network; and one or more hardware-based memory devices operatively coupled to the one or more processors and storing instructions which, when executed by the one or more processors cause the control server to: receive contextual data associated with the client devices and respective users associated with each of the client devices, dynamically assign users to groups based on the received contextual data, wherein each user associated with a specific group has at least a portion of analogous context data, dynamically update the assigned users as the context data changes; identify suggestions for activities for each of the groups, and proactively transmit the suggested activities to the groups, wherein each group only receives the suggested activity identified for the specific group.
In another example, the activities are determined based on the analogous context data among the users satisfying event criteria associated with each of the suggested activities. In another example, the event criteria include one or more of genre, sub-genre, duration, start time, end time, available discounts, or location. In another example, the analogous context data satisfies the genre and sub-genre of the event criteria, wherein the sub-genre is a related sub-category within the genre. In another example, a user is assigned to more than one group. In another example, a group receives more than one suggested activity. In another example, the one or more processors further cause the control server to: identify connections between users within a social graph; and only assign users to like-groups if the users share a connection on the social graph. In another example, the social graph is located on a remote database that is accessible by the control server.
A further example includes one or more hardware-based computer-readable memory devices storing instructions which, when executed by one or more processors disposed in a computing device, cause the computing device to: access a social graph associated with a social network that is stored on a third-party database, wherein the social graph includes past and present social data; identify connections between users on the social graph, wherein the connections are based on the users being part of a same group either presently or historically; identify criteria associated with one or more activities, wherein the one or more activities include events or social occasions for users to attend; identify one or more activities to attend for a sub-group of users from the users, wherein the identified activities are based on each member of the sub-group of users being associated with context data that corresponds to criteria for the one or more activities; and provide the one or more activities to the sub-group of users.
In another example, the criteria include one or more of genre of activity, time of activity, length of activity, location of activity, or available openings at the activity. In another example, a same element of the context data for each member of the sub-group of users corresponds to at least one of the criteria. In another example, the one or more activities include concerts, movies, recurring events, one-time events, or social occasions.
Based on the foregoing, it may be appreciated that technologies for auto-suggestion for group activities based on combined user data sets have been disclosed herein. Although the subject matter presented herein has been described in language specific to computer structural features, methodological and transformative acts, specific computing machinery, and computer-readable storage media, it is to be understood that the invention defined in the appended claims is not necessarily limited to the specific features, acts, or media described herein. Rather, the specific features, acts, and mediums are disclosed as example forms of implementing the claims.
The subject matter described above is provided by way of illustration only and is not to be construed as limiting. Various modifications and changes may be made to the subject matter described herein without following the example embodiments and applications illustrated and described, and without departing from the true spirit and scope of the present invention, which is set forth in the following claims.