Determining canonical content for a game

A method to determine a canonical title. The method includes identifying an original title for an original game. The method further includes removing from respective titles for a plurality of other games at least one of punctuation, one or more special characters, and emojis to determine corresponding canonical titles. The method further includes identifying a subset of canonical titles from the corresponding canonical titles that exceed a threshold similarity as compared to the original title. The method further includes associating an original history associated with the original game with the subset of canonical titles.

TECHNICAL FIELD

Embodiments relate generally to computer-based gaming, and more particularly, to methods, systems, and computer readable media for determining canonical content for a computer-enabled game.

BACKGROUND

Gaming platforms provide building blocks (characters, clothing, accessories, environments, objects, physics engines, etc.) that enable users to build their own games. Different users build different types of games, such as puzzles, mysteries, racing, maintaining a garden, etc., out of these building blocks. Other users can join a game, for example, by joining an ongoing instance of a multiplayer game, playing the game in single player mode, etc.

Users provide their own titles for the games. One problem with user-generated titles is that they may modify an original title to be inaccurate. As a result, the search engine may return the wrong search results due to string match inaccuracy.

The gaming platform provides search features that allow users to search for available games. The gaming platform also provides ranked lists of games, such as top earning games, popular games, trending games, etc. It is important that the search engine be able to return relevant games and remove non-relevant games in response to a user query. Game titles within such variants can cause the search engine to not identify the most relevant matches accurately.

SUMMARY

Embodiments generally relate to a method to determine canonical titles. The method includes identifying an original title for an original game. The method further includes removing from respective titles for a plurality of other games at least one of punctuation, one or more special characters, and emojis to determine corresponding canonical titles. The method further includes identifying a subset of canonical titles from the corresponding canonical titles that exceed a threshold similarity as compared to the original title. The method further includes associating an original history associated with the original game with the subset of canonical titles.

In some embodiments, the method further includes associating a new history with each remaining canonical title that fails to exceed the threshold similarity as compared to the original title. In some embodiments, the method further includes generating the original history for the original game, wherein the original history includes at least one of a description of the original game, a creation date of the original game, a number of times the original game was played, an identity of users that played the original game, and when the users played the original game. In some embodiments, the method further includes identifying a keyword from the respective titles and removing the keyword from the respective titles, wherein the keyword is descriptive of a holiday. In some embodiments, the method further includes identifying a keyword from the respective titles and removing the keyword from the respective titles, wherein the keyword matches at least one of beta, test, release, edition, and update. In some embodiments, the method further des receiving one or more search terms from a user, determining a score based on a comparison between (1) the original title and the one or more search terms and (2) the corresponding canonical titles and the one or more search terms, and providing a response to the user, wherein the response includes the original title and one or more of the corresponding canonical titles along with corresponding scores that indicate a level of match between (1) the original title and the one or more search terms and (2) each of the corresponding canonical titles and the search tears. In sore embodiments, the score is based on an ontology string comparison. In some embodiments, the original title is provided as a top result and the one or more of the corresponding canonical titles are presented as other results. In some embodiments, processing the respective titles further includes receiving a keyword from a user, identifying the keyword in the respective titles, and removing the keyword from the respective titles.

In some embodiments, non-transitory computer-readable medium with instructions stored thereon that, when executed by one or more computers, cause the one or more computers to perform operations, the operations comprising: identifying original content for an original game, removing from respective content for a plurality of other games at least one of punctuation, one or more special characters, and emojis to determine corresponding canonical content, identifying a subset of canonical content from the corresponding canonical content that exceed a threshold similarity as compared to the original content, and associating an original history associated with the original game with the subset of canonical content.

In some embodiments, the operations further comprise associating a new history with each remaining cononical content that fails to exceed the threshold similarity as compared to the original content. In some embodiments, the operations further comprise generating the original history for the original game, wherein the original history includes at least one of a description of the original game, a creation date of the original game, a number of times the original game was played, an identity of users that played the original game, when the users played the original game, and a thumbnail of the original game. In some embodiments, the operations further comprise identifying a keyword from the respective content and removing the keyword from the respective content, wherein the keyword is descriptive of a holiday. In some embodiments, the operations further comprise identifying a keyword from the respective content and removing the keyword from the respective content, wherein the keyword matches at least one of beta, test, release, edition, and update. In some embodiments, the original content is an original title, the respective content is respective titles, and canonical content is canonical titles.

In some embodiments, a system comprises one or more processors and a memory that stores instructions that, when executed by the one or more processors cause the one or more processors to perform operations comprising: identifying an original title for an original game, removing from respective titles for a plurality of other games at least one of punctuation, one or more special characters, and emojis to determine corresponding canonical titles, identifying a subset of canonical titles from the corresponding canonical titles that exceed a threshold similarity as compared to the original title, and associating an original history associated with the original game with the subset of canonical titles.

In some embodiments, the operations further comprise associating a new history with each remaining canonical title that fails to exceed the threshold similarity as compared to the original title. In some embodiments, the operations further comprise generating the original history for the original game, wherein the original history includes at least one of a description of the original game, a creation date of the original game, a number of times the original game was played, an identity of users that played the original game, and when the users played the original game. In some embodiments, the operations further comprise identifying a keyword from the respective titles and removing the keyword from the respective titles, wherein the keyword is descriptive of a holiday. In some embodiments, the operations further comprise identifying a keyword from the respective titles and removing the keyword from the respective titles wherein the keyword matches at least one of beta, test, release, edition, and update.

The various embodiments described below advantageously identify a canonical title of a game by removing at least one of punctuation, one or more special characters, and emojis from the respective titles. The canonical title is used to determine that another game is similar enough to an original game to be associated with the same history. The canonical title is also advantageously used to return better search results when users search for games. Furthermore, although the specifications written with a game as a primary embodiment, persons of ordinary skill in the art will recognize that this could apply to any application such that a canonical title for any type of application is determined.

DETAILED DESCRIPTION

Online gaming platforms (also referred to as “user-generated content platforms” or “user-generated content systems”) offer a variety of ways for users to interact with one another. For example, users of an online gaming platform may work together towards a common goal, share various virtual gaming items, send electronic messages to one another, and so forth. Users of an online gaming platform may join games as virtual characters, playing game-specific roles. For example, a virtual character may be part of a team or multiplayer environment wherein each character is assigned a certain role and has associated parameters, e.g., clothing, armor, weaponry, skills, etc. that correspond to the role. In another example, a virtual character may be joined by computer-generated characters, e.g., when a single player is part of a game.

An online gaming platform may also allow users of the platform to create and animate new characters and avatars. For example, users of the online gaming platform may be enabled to create, design, and customize new characters.

In some embodiments, animation may include characters that move one or more body parts to simulate movement such as walking, running, jumping, dancing, fighting, wielding a weapon such as a sword, etc. In some embodiments, characters may generate facial expressions, where a part of or an entire body of the character moves. Animations may correspond to various movements, e.g. graceful, warrior-like, balletic, etc., and may mimic the movement of popular real and fictional characters.

Example System

FIG. 1illustrates a block diagram of an example system100that determines canonical content. The illustrated system100includes an application server101, user devices115a,115n, a second server120, and a network105. Although the system100is illustrated as having one application server101, multiple user devices115, one second server120, and one network105, in some embodiments, the system100has one or more application servers101, one or more user devices115, one or more second servers120, and one or more networks105. In some embodiments, the system100may include other servers or devices not shown inFIG. 1. InFIG. 1and the remaining figures, a letter after a reference number, e.g., “115a,” represents a reference to the element having that particular reference number. A reference number in the text without a following letter, e.g., “115,” represents a general reference to embodiments of the element bearing that reference number.

The application server101can include a server having one or more computing devices (e.g., a cloud computing system, a rackmount server, a server computer, cluster of physical servers, etc.). In some embodiments, the application server101may be an independent system, may include multiple servers, or be part of another system or server.

In some embodiments, the application server101may include one or more computing devices (such as a rackmount server, a router computer, a server computer, a personal computer, a mainframe computer, a laptop computer, a tablet computer, a desktop computer, etc.), data stores (e.g., hard disks, memories, databases), networks, software components, and/or hardware components that may be used to perform operations on the application server101and to provide a user with access to the application server101. The application server101may also include a website (e.g., a webpage) or application back-end software that may be used to provide a user with access to content provided by the application server101. For example, users may access the application server101using the search application107on the user device115.

The application server101may be a virtual gaming server that stores games and provides a platform for providing the games to users. In some embodiments, games (also referred to as “video game,” “online game,” or “virtual game” herein) may be two-dimensional (2D) games, three-dimensional (3D) games (e.g., 3D user-generated games), virtual reality (VR) games, or augmented reality (AR) games. In some embodiments, users may participate in gameplay with other users. In some embodiments, a game may be played in real-time with other users of the game.

The application server101includes a processor, a memory, and network communication capabilities. In some embodiments, the application server101is a hardware server. The application server101is communicatively coupled to the network105via signal line102. Signal line102may be a wired connection, such as Ethernet, coaxial cable, fiber-optic cable, etc., or a wireless connection, such as Wi-Fi®, Bluetooth®, or other wireless technology. In some embodiments, the application server101sends and receives data to and from one or more of the user devices115a,115nand the second server120via the network105. The application server101may include a provider application103and a database199.

The application server101includes a provider application103that stores the games, receives search terms from users, and provides matching games to the users. The provider application103may be code and routines operable to determine canonical content. In some embodiments, the provider application103may be implemented using hardware including a field-programmable gate array (FPGA) or an application-specific integrated circuit (ASIC). In some embodiments, the provider application103may be implemented using a combination of hardware and software.

The database199may be a non-transitory computer readable memory (e.g., random access memory), a cache, a drive (e.g., a hard drive), a flash drive, a database system, or another type of component or device capable of storing data. The database199may also include multiple storage components (e.g., multiple drives or multiple databases) that may also span multiple computing devices (e.g., multiple server computers).

The database199may store games, histories, and canonical content, such as titles. The histories may include a description of a game, a creation date of the game, a number of times the game was played, an identity of users that played the game, when the users played the game, a thumbnail image of the game, etc. The database199may also store social network data associated with users125, such as user profiles, games that a user has downloaded and/or played, connections between users125, user preferences, etc.

The user device115may be a computing device that includes a memory, a hardware processor, and a search application107. For example, the user device115may include a desktop computer, a laptop, a mobile device, a tablet computer, a mobile telephone, a wearable device, a head-mounted display, a mobile email device, a portable game player, a portable music player, a reader device, or another electronic device capable of accessing a network105. Users125a,125nmay be associated with respective user devices115a,115n.

In the illustrated embodiment, user device115ais coupled to the network105via signal line108and user device115nis coupled to the network105via signal line110. Signal lines108and110may be a wired connection, such as Ethernet, coaxial cable, fiber-optic cable, etc., or a wireless connection, such as Wi-Fi®, Bluetooth®, or other wireless technology. User devices115a,115nare accessed by users125a,125n, respectively. The user devices115a,115ninFIG. 1are used by way of example. WhileFIG. 1illustrates two user devices,115aand115n, the disclosure applies to a system architecture having one or more user devices115.

In some embodiments, the search application107receives information from the provider application103. In some embodiments, the search application107is a component of the provider application103. For example, the search application107may receive search terms from the user125and the provider application103may provide the search terms to the search application107, which displays the search results. In some embodiments, the search application107is a browser that communicates with the provider application103.

The second server120may include a processor, a memory, and network communication capabilities. The second server120may access the network105via signal line109. The second server120may include an application that generates games and that submits the games to the application server101.

In the illustrated embodiment, the entities of the system100are communicatively coupled via a network105. The network105may be a conventional type, wired or wireless, and may have numerous different configurations including a star configuration, token ring configuration or other configurations. Furthermore, the network105may include a public network (e.g., the Internet), a private network (e.g., a local area network (LAN) or wide area network (WAN)), a wired network (e.g., Ethernet network), a wireless network (e.g., an 802.11 network, a Wi-Fi® network, or wireless LAN (WLAN)), a cellular network (e.g., a 5G network, a Long Term Evolution (LTE) network, etc.), routers, hubs, switches, server computers, or a combination thereof. AlthoughFIG. 1illustrates one network105coupled to the user devices115and the application server101, in practice one or more networks105may be coupled to these entities.

Example Computing Device

FIG. 2illustrates a block diagram of an example application server101that determines canonical content. The application server101may include a processor235, a memory237, a communication unit239, and a database199. Additional components may be present or some of the previous components may be omitted depending on the type of application server101. For example, the application server101may include a battery. A provider application103may be stored in the memory237. In some embodiments, some or all of the components of the provider application103are stored on the user device115as part of the search application107. The components of the application server101may be communicatively coupled by a bus220.

The processor235includes an arithmetic logic unit, a microprocessor, a general-purpose controller, or some other processor array to perform computations and provide instructions to a display device. The processor235processes data and may include various computing architectures including a complex instruction set computer (CISC) architecture, a reduced instruction set computer (RISC) architecture, or an architecture implementing a combination of instruction sets. AlthoughFIG. 2includes a single processor235, multiple processors235may be included. Other processors, operating systems, sensors, displays and physical configurations may be part of the application server101. The processor235is coupled to the bus220for communication with the other components via signal line222.

The memory237stores instructions that may be executed by the processor235and/or data. The instructions may include code for performing the techniques described herein. The memory237may be a dynamic random access memory (DRAM) device, a static RAM, or some other memory device. In some embodiments, the memory237also includes a non-volatile memory, such as a static random access memory (SRAM) device or flash memory, or similar permanent storage device and media including a hard disk drive, a compact disc read only memory (CD-ROM) device, a DVD-ROM device, a DVD-RAM device, a DVD-RW device, a flash memory device, or some other mass storage device for storing information on a more permanent basis. The memory237includes code and routines operable to execute the provider application103, which is described in greater detail below. The memory237is coupled to the bus220for communication with the other components via signal line224.

The communication unit239transmits and receives data from and transmits data to at least one of the user devices115and the second server120. In some embodiments, the communication unit239includes a port for direct physical connection to the network105or to another communication channel. For example, the communication unit239includes a universal serial bus (USB), secure digital (SD), category 5 cable (CAT-5) or similar port for wired communication with the application server101. In some embodiments, the communication unit239includes a wireless transceiver for exchanging data with the user device115, second server120, or other communication channels using one or more wireless communication methods, including IEEE 802.11, IEEE 802.16, Bluetooth® or another suitable wireless communication method. The communication unit239is coupled to the bus220for communication with the other components via signal line226.

In some embodiments, the communication unit239includes a cellular communications transceiver for sending and receiving data over a cellular communications network including via short messaging service (SMS), multimedia messaging service (MMS), hypertext transfer protocol (HTTP), direct data connection, e-mail or another suitable type of electronic communication. In some embodiments, the communication unit239includes a wired port and a wireless transceiver. The communication unit239also provides other conventional connections to the network105for distribution of files and/or media objects using standard network protocols including, but not limited to, user datagram protocol (UDP), TCP/IP, HTTP, HTTP secure (HTTPS), simple mail transfer protocol (SMTP), etc.

The database199may be a non-transitory computer-readable storage medium that stores data that provides the functionality described herein. The database199may be a DRAM device, a SRAM device, flash memory or some other memory device. In some embodiments, the database199also includes a non-volatile memory or similar permanent storage device and media including a hard disk drive, a CD-ROM device, a DVD-ROM device, a DVD-RAM device, a DVD-RW device, a flash memory device, or some other mass storage device for storing information on a permanent basis. The database199is coupled to the bus220for communication with the other components via signal line228.

The provider application103may include an application processor202, a content analyzer204, a search engine206, and a user interface module208.

The application processor202receives an application and processes the application. In some embodiments, the application processor202includes a set of instructions executable by the processor235to process the application. In some embodiments, the application processor202is stored in the memory237of the application server101and can be accessible and executable by the processor235.

In some embodiments, the application processor202processes an application by identifying content for an original application. The content may include a title or anything with a time series of changes, such as a description. The application may be any type of streamable or downloadable electronic application, such as a game, a social network application, a business application, a word-processing application, etc. The application processor202may identify an original title for an original game by receiving a game, for example, from a second server120, determining whether it is the first instance of that type of game, and determining the original title based on the game being the original game. For example, where the game is called “Sun City,” the application processor202may determine whether other games exist with the name “Sun City” and, if not, identify “Sun City” as the original title.

In some embodiments, the application processor202may also determine whether an application is an original application by instructing the content analyzer204to determine a canonical title for the game and determine whether there are other games with canonical titles that are similar that were submitted earlier. For example, the application processor202may determine that the canonical title for the game is “Sun City Update” and that there is an earlier version of the game that is titled “Sun City.” In this example, the application processor202determines that “Sun City Update” is not the original title for the game because an earlier version of the game exists.

The application processor202may generate a history for an original title. The history may include a description of a game, a creation date of the game, a number of times the game was played, an identity of users that played the game, when the users played the game, etc. The application processor202may update the history each time a parameter changes. For example, the application processor202may update the history each time a user plays the game.

The content analyzer204determines canonical content for a plurality of other games and a subset of content that exceed a threshold similarity as compared to the original content. In some embodiments, the content analyzer204includes a set of instructions executable by the processor235to determine the canonical content and compare similarities between content. In some embodiments, the content analyzer204is stored in the memory237of the application server101and can be accessible and executable by the processor235.

The content analyzer204may receive applications with similar content. For example, users may append or modify an original title to include new release, updated game, Easter special, etc. The content analyzer204may process respective titles for a plurality of other applications to determine canonical titles by removing at least one of punctuation, one or more special characters, and emojis from the respective titles. For example, the content analyzer204may process “robot army” to remove the emoji, “r_o_b_o_t_a_r_m_y” to remove the underscore, and “robot's army” to remove the apostrophe and s such that all three examples have the canonical title “robot army.” The content analyzer204may process “robot army2&*(” and determine that the canonical title is “robot army2.” Although the above example is for a title, the process applies similarly to descriptions.

In some embodiments, the content analyzer204processes the respective content by identifying a keyword from the set of content and removing the keyword. For example, the content analyzer204may identify a keyword from the set of titles and remove the title. The keyword may include a holiday, such as Easter, Christmas, Thanksgiving, New Year's, St. Patrick's Day, Valentine's Day, Father's Day, Mother's Day, Labor Day, Diwali, Hanukkah, Chinese New Year, Independent Day, Republic Day, etc. The keywords may also include seasons, such as “spring special;” character types or names, such as “underwater treasure,” “Nemo,” “Underwater Treasure—Dory;” vehicle type, such as “Derby Racing—Truck Edition,” “Derby Racing—Bike Edition,” “Derby Racing—SUV.” The keyword may also include an abbreviation of a holiday term, such as Xmas for Christmas, or an expanded phrase, such as New Year's Day for New Year's.

The keyword may include a word that matches at least one of beta, test, release, edition, and update. For example, the content analyzer204may process the title “robot my update” to have the canonical title “robot army.” In another example, the content analyzer204may process “Dance Marathon Xmas Special” to remove “Xmas Special.” In some embodiments, a user may provide additional keywords via a user interface generated by the user interface module208described in detail below.

In some embodiments, the content analyzer204identifies keywords in different languages. For example, the content analyzer204may recognize that Christmas in English is the same as Weihnachten in German and would exclude either word from the canonical title.

After the processing, the content analyzer204may identify from the canonical titles, whether a subset of titles exceed a threshold similarity as compared to the original title. In some embodiments, the content analyzer204may determine that the threshold similarity is 70% based on a character-to-character comparison. Continuing with the example above, the content analyzer204determines that “robot army,” “r_o_b_o_ta_r_m_y,” “robot's army,” “robot army2&*,” and “robot army update” are all within the threshold similarity. The content analyzer204may determine that “Robot Army Armageddon” is not within the threshold similarity because the canonical title “Robot Army Armageddon” is only 50% similar to the original title “robot army.”

If the content analyzer204determines that the subset of titles exceed a threshold similarity as compared to the original title, the content analyzer204may associate a history associated with the game to the subset of titles. This way, if a user plays one of the games from the subset of s the history will be updated to reflect that the user played the game. If the content analyzer204determines that the subset of titles fails to exceed the threshold similarity as compared to the original title, the content analyzer204associates a new history with each of the remaining canonical titles.

In some embodiments, once the canonical content is determined for an application, the provider application103makes the application available to users. For example, the content analyzer204may instruct the user interface module208to update a user interface to provide an option for accessing the application, for example, through streaming or downloading the application.

The search engine206receives search terms from a user and identifies matching content from the original content and the canonical content. In some embodiments, the search engine206includes a set of instructions executable by the processor235to identify matching content. In some embodiments, the search engine206is stored in the memory237of the application server101and can be accessible and executable by the processor235.

In some embodiments, the search engine206receives one or more search terms from a user. For example, the search engine206receives the search terms “robot armies.” The search engine206determines a score based on a comparison between (1) the original title and the one or more search terms and (2) the canonical titles and the one or more search terms. Continuing with the example, the search engine206determines the score for “robot armies” as compared to the original title “robot army” and the canonical titles “robot army,” “robot army,” “robot army2,” and “robot army.” The search engine206may determine the score based on an ontology string comparison.

The search engine206provides the original title and the canonical titles along with corresponding scores that indicate a level of match between (1) the original title and the one or more search terms and (2) the canonical title and the one or more search terms. In some embodiments, the original title is provided as a top result and the canonical titles are presented as lower matches.

The user interface module208generates graphical data for displaying a user interface. In some embodiments, the user interface module208includes a set of instructions executable by the processor235to generate the graphical data. In some embodiments, the user interface module208is stored in the memory237of the application server101and can be accessible and executable by the processor235.

In some embodiments, the user interface module208generates graphical data for displaying a user interface for a user to search for applications and access the applications. The user interface module208may instruct the communication unit239to transmit the graphical data to the search application107on the user device115for display. After the user provides search terms to the search engine206, the user interface module208may generate graphical data for displaying the user interface with updated search results.

FIG. 3illustrates an example user interface300that includes search results organized based on determining canonical titles according to some embodiments. In this example, a user searched for “sun city” and the user interface module208generated graphical data to present search results for applications identified by the search engine206. In some embodiments, selecting one of the applications results in the application server101streaming a game to the user or making a game available for download. The search results include a top result305that is an example where the original game was identified and presented as the top result. The search results also include more results for sun city310. Specifically, the additional results include a “[* BIG UPDATE] Sun City” that the content analyzer204determined has the canonical title of “[ ] Sun City,” “[100k] SunCity.exe” that the content analyzer204determined has the canonical title of “[100k] SunCity.exe,” and “!!! Sun City” that the title analyzer determined has the canonical title of “Sun City.”

In some embodiments, the user interface module208may generate graphical data for displaying a user interface to a user of the provider application103with options for configuring the provider application103. For example, the user interface module208may generate a user interface for adding to a list of keywords to be excluded from canonical titles.

Example Method

FIG. 4illustrates a flowchart of an example method400to determine canonical titles according to some embodiments. The method400is performed by a provider application103stored on an application server101.

At block402, an original title for an original game is identified. For example, the earliest use of a title is determined to be the original title. Block402may be followed by block404.

At block404, for respective titles for a plurality of other games at least one of punctuation, one special characters, and emojis are removed to determine corresponding canonical titles. For example, the provider application103removes “.” and “” from the respective titles. Block404may be followed by block406.

At block406, a subset of titles are identified from the canonical titles are identified that exceed a threshold similarity as compared to the original title. For example, the subset of titles may be at least 70% similar to the original title. Block406may be followed by block408.

At block408, an original history associated with the original game is associated with the subset of canonical titles. Block408may be followed by block410.

At block410, a new history is associated with each remaining canonical title that fails to exceed a threshold similarity as compared to the original title.

One or more of the blocks may be performed in parallel or may be combined with other blocks. For example, blocks408and410may be performed in parallel, or may be combined.

Reference in the specification to “some embodiments” or “some instances” means that a particular feature, structure, or characteristic described in connection with the embodiments or instances can be included in at least one embodiment of the description. The appearances of the phrase “in some embodiments” in various places in the specification are not necessarily all referring to the same embodiments.

The embodiments of the specification can also relate to a processor for performing one or more steps of the methods described above. The processor may be a special-purpose processor selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a non-transitory computer-readable storage medium, including, but not limited to, any type of disk including optical disks, ROMs, CD-ROMs, magnetic disks, RAMs, EPROMs, EEPROMs, magnetic or optical cards, flash memories including USB keys with non-volatile memory, or any type of media suitable for storing electronic instructions, each coupled to a computer system bus.

The specification can take the form of some entirely hardware embodiments, some entirely software embodiments or some embodiments containing both hardware and software elements. In some embodiments, the specification is implemented in software, which includes, but is not limited to, firmware, resident software, microcode, etc.

In situations in which the systems discussed above collect or s personal information, the systems provide users 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 control whether and/or how to receive content from the server that nay be more relevant to the user. In addition, certain data may be treated in one or more ways before its stored or used, so that personally identifiable information is removed. For example, a user's identity nay 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 the server.