智能文件推荐引擎

文档序号:157298 发布日期:2021-10-26 浏览:5次 >En<

阅读说明:本技术 智能文件推荐引擎 (Intelligent file recommendation engine ) 是由 张文霜 于 2019-03-12 设计创作,主要内容包括:本文描述了用于向用户推荐文件的方法和系统。可以在文件共享服务内向用户推荐文件。推荐器系可以根据用户的偏好通过机器学习智能地向用户推荐文件。另外,推荐器系统可以基于用户所属的群组流行的内容来推荐文件。可以基于与一个或多个推荐的文件的用户交互来调整推荐。(Methods and systems for recommending files to a user are described herein. Files may be recommended to users within a file sharing service. The recommender can intelligently recommend files to the user through machine learning according to the user&#39;s preferences. In addition, the recommender system may recommend files based on content popular with the group to which the user belongs. The recommendations may be adjusted based on user interaction with one or more recommended files.)

智能文件推荐引擎

技术领域

本文中描述的各方面总体上涉及人工智能、软件和云计算环境。更具体地,本文中描述的各方面涉及用于向文件共享环境内的用户进行文件推荐的人工智能。

背景技术

文件共享服务可以使得用户能够容易且安全地交换文件。然而,在文件共享服务中可能存在大量的共享文件,使得用户难以找到和查看感兴趣的文件。另外,用户可以是文件共享服务内的群组的一部分。在文件共享服务内可能存在由群组成员共享的许多文件,并且可能难以确定用户应当查看哪些群组文件或者哪些群组文件是用户感兴趣的。

发明内容

下文呈现本文中描述的各个方面的简化概述。本概述不是广泛的概述,并且不旨在标识所需的或关键的元件或者描绘权利要求的范围。以下概述仅以简化形式呈现一些概念,作为以下提供的更详细描述的介绍性序言。

为了克服以上描述的限制,并且为了克服在阅读和理解本说明书时显而易见的其他限制,本文中描述的各方面涉及一种经训练并可用于向文件共享服务内的用户推荐文件的人工智能引擎。推荐器系统可以根据用户的偏好通过机器学习和/或AI智能地向用户推荐文件。用户可以具有改进的用户体验,因为他们可以更快地找到他们可能在可包含大量文件的文件共享服务中感兴趣的文件并与其交互。

在一个方面,一种计算机实现的方法可以包括确定与文件共享服务内的用户相对应的用户行为数据,其中该用户是用户的群组的一部分;基于用户行为数据并且基于与文件共享服务内的群组的用户所采取的动作相对应的群组行为数据来生成一个或多个特征向量;由第一推荐器模型并基于一个或多个特征向量为用户生成第一组推荐的文件;以及向用户显示第一组推荐的文件。

方法还可以包括:确定与第一组推荐的文件的用户交互不满足阈值;通过修改第一推荐器模型的训练参数来生成修改的第一推荐器模型;以及使用修改的第一推荐器模型为用户生成第二组推荐的文件。确定与第一组推荐的文件的用户交互是否不满足阈值可以包括确定用户查看第一组推荐的文件中的一个或多个文件所花费的时间量。

方法还可以包括:确定与所述第一组推荐的文件的用户交互不满足阈值;以及为用户显示第二组推荐的文件,其中第二组是使用第二推荐器模型生成的。确定与第一组推荐的文件的用户交互是否不满足阈值可以包括确定第一组推荐的文件中的一个或多个文件是否被用户编辑。用户行为数据可以包括与由用户查看的文件相对应的信息。用户行为数据可以包括与由用户修改的文件相对应的信息。群组行为数据可以包括指示由群组的一个或多个用户在文件共享服务内共享的文件的信息。群组行为数据可以包括指示由群组的一个或多个用户在文件共享服务内查看的文件的信息。

在其他方面,系统可被配置成执行本文中描述的一个或多个方面和/或方法。在一些方面,装置可被配置成执行本文中描述的一个或多个方面和/或方法。在一些方面,一个或多个计算机可读介质可以存储计算机执行的指令,这些指令在被执行时配置系统以执行本文中描述的一个或多个方面和/或方法。受益于以下进一步详细讨论的公开内容,将理解这些和附加的方面。

附图说明

通过参考考虑附图的以下描述,可以获得对本文中描述的各方面及其优点的更完整的理解,在附图中,相同的附图标记指示相同的特征,并且其中:

图1描绘了可以根据本文中描述的一个或多个说明性方面使用的说明性计算机系统架构。

图2描绘了可以根据本文中描述的一个或多个说明性方面使用的说明性远程访问系统架构。

图3描绘了可以根据本文中描述的一个或多个说明性方面使用的说明性虚拟化(管理程序)系统架构。

图4描绘了可以根据本文中描述的一个或多个说明性方面使用的说明性的基于云的系统架构。

图5描绘了可以根据本文中描述的一个或多个说明性方面使用的说明性文件推荐器系统。

图6描绘了根据本文中描述的一个或多个说明性方面的用于向用户推荐一个或多个文件的说明性算法。

具体实施方式

在各种实施例的以下描述中,参考上文标识且形成其一部分的附图,并且在附图中以说明的方式示出其中可以实践本文中描述的各方面的各种实施例。应理解,在不脱离本文中描述的范围的情况下,可以利用其他实施例,并且可以进行结构和功能修改。各个方面能够是其他实施例并且能够以各种不同的方式实践或执行。

应理解,本文中使用的措辞和术语是为了描述的目的,而不应当被认为是限制性的。相反,本文中使用的短语和术语被给予其最广泛的解释和含义。使用“包括”和“包含”及其变体是指涵盖其后列出的项及其等同物以及附加项及其等同物。术语“安装”、“连接”、“耦合”、“定位”、“接合”和类似术语的使用是指包括直接和间接安装、连接、耦合、定位和接合。

计算架构

计算机软件、硬件和网络可以用在各种不同的系统环境中,包括独立环境、联网环境、远程访问环境(也称为远程桌面)、虚拟化环境和/或基于云的环境等。图1图示了可用于在独立环境和/或联网环境中实现本文中描述的一个或多个说明性方面的系统架构和数据处理设备的一个实例。各种网络节点103、105、107和109可以经由诸如因特网的广域网(WAN)101互连。也可以或可替代地使用其他网络,包括专用内联网、公司网络、局域网(LAN)、城域网(MAN)、无线网络、个人网络(PAN)等。网络101用于说明的目的,并且可以用更少或附加的计算机网络代替。局域网133可以具有任何已知的LAN拓扑中的一个或多个,并且可以使用各种不同的协议中的一个或多个,诸如以太网。设备103、105、107和109以及其他设备(未示出)可以经由双绞线、同轴电缆、光纤、无线电波或其他通信介质连接到网络中的一个或多个。

本文中使用并在附图中描绘的术语“网络”不仅指其中远程存储设备经由一个或多个通信路径耦合在一起的系统,而且指有时可以耦合到这种具有存储能力的系统的独立设备。因此,术语“网络”不仅包括“物理网络”,而且还包括“内容网络”,其包括归属于单个实体的数据,该单个实体驻留在所有物理网络上。

这些部件可以包括数据服务器103、网络服务器105和客户端计算机107、109。数据服务器103提供对数据库和控制软件的总体存取、控制和管理,用于执行本文中描述的一个或多个说明性方面。数据服务器103可以连接到网络服务器105,用户通过网络服务器105与所请求的数据进行交互并获得所请求的数据。替代地,数据服务器103充当网络服务器本身,并且直接连接到因特网。数据服务器103可以通过局域网133、广域网101(例如,因特网),经由直接或间接连接,或经由某个其他网络连接到网络服务器105。用户可以使用远程计算机107、109与数据服务器103交互,例如,使用网络浏览器经由网络服务器105所托管的一个或多个外部公开的网站连接到数据服务器103。客户端计算机107、109可以与数据服务器103一起使用以存取存储在其中的数据,或者可以用于其他目的。例如,用户可以从客户端设备107使用本领域中已知的因特网浏览器,或者通过执行通过计算机网络(诸如因特网)与网络服务器105和/或数据服务器103通信的软件应用来访问网络服务器105。

服务器和应用可以组合在相同的物理机器上,并保留单独的虚拟或逻辑地址,或者可以驻留在单独的物理机器上。图1仅图示了可以使用的网络架构的一个实例,并且本领域技术人员将理解,所使用的特定网络架构和数据处理设备可以改变,并且对于它们提供的功能是次要的,如本文进一步描述的。例如,由网络服务器105和数据服务器103提供的服务可以组合在单个服务器上。

每个部件103、105、107、109可以是任何类型的已知计算机、服务器或数据处理设备。例如,数据服务器103可以包括控制数据服务器103的整体操作的处理器111。数据服务器103还可以包括随机存取存储器(RAM)113、只读存储器(ROM)115、网络接口117、输入/输出接口119(例如,键盘、鼠标、显示器、打印机等)和存储器121。输入/输出(I/O)119可以包括用于读、写、显示和/或打印数据或文件的各种接口单元和驱动器。存储器121还可以存储用于控制数据处理设备103的整体操作的操作系统软件123、用于指示数据服务器103执行本文中描述的各方面的控制逻辑125,以及提供可以或不可以结合本文中描述的各方面使用的辅助、支持和/或其他功能的其他应用软件127。控制逻辑125在本文中也可以被称为数据服务器软件125。数据服务器软件125的功能可以指基于编码到控制逻辑125中的规则自动做出的操作或决定、由将输入提供到系统中的用户手动做出的操作或决定,和/或基于用户输入(例如,查询、数据更新等)的自动处理的组合。

存储器121还可以存储用于执行本文中描述的一个或多个方面的数据,包括第一数据库129和第二数据库131。在一些实施例中,第一数据库129可以包括第二数据库131(例如,作为单独的表格、报告等)。即,根据系统设计,信息可以存储在单个数据库中,或分离成不同的逻辑数据库、虚拟数据库或物理数据库。设备105、107和109可以具有与关于设备103所描述的相似或不同的架构。本领域技术人员将理解,本文中描述的数据处理设备103(或设备105、107或109)的功能可以跨多个数据处理设备分布,以例如将处理负载跨多个计算机分配,从而基于地理位置、用户访问级别、服务质量(QoS)等来隔离交易。

一个或多个方面可以体现在计算机可用或可读的数据和/或计算机可执行指令中,诸如体现在由一个或多个计算机或本文中描述的其他设备执行的一个或多个程序模块中。一般而言,程序模块包括例程、程序、对象、部件、数据结构等,其在由计算机或其他设备中的处理器执行时执行特定任务或实现特定抽象数据类型。模块可以用随后被编译用于执行的源代码编程语言来编写,或者可以用诸如(但不限于)超文本标记语言(HTML)或可扩展标记语言(XML)的脚本语言来编写。计算机可执行指令可以存储在诸如非易失性存储设备的计算机可读介质上。可以使用任何合适的计算机可读存储介质,包括硬盘、CD-ROM、光存储设备、磁存储设备、固态存储设备和/或它们的任何组合。另外,表示本文中描述的数据或事件的各种传输(非存储)介质可以以穿过诸如金属线、光纤和/或无线传输介质(例如,空气和/或空间)的信号传导介质传播的电磁波的形式在源和目的地之间传送。本文中描述的各个方面可以实现为方法、数据处理系统或计算机程序产品。因此,各种功能可整体或部分地体现在软件、固件和/或硬件或硬件等效物(诸如集成电路、现场可编程门阵列(FPGA)等)中。特定的数据结构可用于更有效地实现本文中描述的一个或多个方面,并且这样的数据结构被认为在本文中描述的计算机可执行指令和计算机可用数据的范围内。

进一步参考图2,本文中描述的一个或多个方面可以在远程访问环境中实现。图2描绘了包括可根据本文中描述的一个或多个说明性方面使用的说明性计算环境200中的计算设备201的示例系统架构。计算设备201可以用作单服务器或多服务器桌面虚拟化系统(例如,远程访问或云系统)中的服务器206a,并且可以被配置成为客户端访问设备提供虚拟机。计算设备201可以具有用于控制设备201及其相关部件(包括RAM 205、ROM 207、输入/输出(I/O)模块209和存储器215)的整体操作的处理器203。

I/O模块209可以包括计算设备201的用户可以通过其提供输入的鼠标、小键盘、触摸屏、扫描仪、光学读取器和/或指示笔(或其他输入设备),并且还可以包括用于提供音频输出的扬声器中的一个或多个以及用于提供文本输出、视听输出和/或图形输出的视频显示设备中的一个或多个。软件可以存储在存储器215和/或其他存储装置中,以将指令提供到处理器203,用于将计算设备201配置到专用计算设备中,以便执行本文中描述的各种功能。例如,存储器215可以存储由计算设备201使用的软件,诸如操作系统217、应用程序219和相关联的数据库221。

计算设备201可以在支持到诸如终端240(也称为客户端设备)等一个或多个远程计算机的连接的网络环境中操作。终端240可以是包括以上关于计算设备103或201描述的多个或全部元件的个人计算机、移动设备、膝上型计算机、平板计算机或服务器。图2所描绘的网络连接包括局域网(LAN)225和广域网(WAN)229,但还可以包括其他网络。当在LAN联网环境中使用时,计算设备201可以通过网络接口或适配器223连接到LAN 225。当在WAN联网环境中使用时,计算设备201可以包括调制解调器或其他广域网接口227,其用于在诸如计算机网络230(例如,因特网)等的WAN 229上建立通信。将理解,所示的网络连接是说明性的,并且可以使用在计算机之间建立通信链路的其他装置。计算设备201和/或终端240还可以是包括诸如电池、扬声器和天线(未示出)等各种其他部件的移动终端(例如,移动电话、智能手机、个人数字助理(PDA)、笔记本等)。

本文中描述的各方面还可以与众多其他通用或专用计算系统环境或配置一起操作。可适用于本文中描述的各方面的其他计算系统、环境和/或配置的实例包括但不限于个人计算机、服务器计算机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人计算机(PC)、小型计算机、大型计算机、包括以上系统或设备中的任一个的分布式计算环境等。

如图2所示,一个或多个客户端设备240可以与一个或多个服务器206a-206n(本文中通常为“服务器206”)通信。在一个实施例中,计算环境200可以包括安装在服务器206与客户端机器240之间的网络电器。网络电器可以管理客户端/服务器连接,并且在一些情况下可以在多个后端服务器206之间负载平衡客户端连接。

在一些实施例中,客户端机器240可以被称为单个客户端机器240或单组客户端机器240,而服务器206可以被称为单个服务器206或单组服务器206。在一个实施例中,单个客户端机器240与多于一个的服务器206通信,而在另一个实施例中,单个服务器206与多于一个的客户端机器240通信。在又一实施例中,单个客户端机器240与单个服务器206通信。

在一些实施例中,客户端机器240可以由以下非穷举性术语中的任一个来引用:客户端机器;客户端;客户端计算机;客户端设备;客户端计算设备;本地机器;远程机器;客户端节点;终点;或端点节点。在一些实施例中,服务器206可以由以下非穷举性术语中的任何一个来引用:服务器、本地机器;远程机器;服务器群或主机计算设备。

在一个实施例中,客户端机器240可以是虚拟机。虚拟机可以是任何虚拟机,而在一些实施例中,虚拟机可以是由类型1或类型2管理程序管理的任何虚拟机,管理程序例如由Citrix系统、IBM、VMware或任何其他管理程序开发的管理程序。在一些方面中,虚拟机可以由管理程序管理,而在其他方面中,虚拟机可以由在服务器206上执行的管理程序或在客户端240上执行的管理程序管理。

一些实施例包括客户端设备240,其显示由在服务器206或其他远程定位的机器上远程执行的应用生成的应用输出。在这些实施例中,客户端设备240可以执行虚拟机接收机程序或应用以在应用窗口、浏览器或其他输出窗口中显示输出。在一个实例中,应用是桌面,而在其他实例中,应用是生成或呈现桌面的应用。桌面可以包括为其中可集成本地和/或远程应用的操作系统的实例提供用户界面的图形外壳。本文中使用的应用是在操作系统(以及可选地还有桌面)的实例已经被加载之后执行的程序。

在一些实施例中,服务器206使用远程呈现协议或其他程序来将数据发送到在客户端上执行的瘦客户端或远程显示应用,以呈现由在服务器206上执行的应用生成的显示输出。瘦客户端或远程显示协议可以是以下非穷举性协议列表中的任何一个:佛罗里达州劳德代尔堡的思杰系统公司(Citrix Systems,Inc.)开发的独立计算架构(ICA)协议;或由华盛顿州雷德蒙市的微软(Microsoft Corporation)公司制造的远程桌面协议(RDP)。

远程计算环境可以包括多于一个服务器206a-206n,使得服务器206a-206n例如在云计算环境中在逻辑上一起分组到服务器群206中。服务器群206可以包括在逻辑上分组在一起时地理上分散的服务器206,或在逻辑上分组在一起时彼此邻近定位的服务器206。在一些实施例中,服务器群206内的地理上分散的服务器206a-206n可以使用WAN(广域)、MAN(城域)或LAN(局域)通信,其中不同地理区域可以被表征为:不同的大陆;大陆的不同区域;不同的国家;不同的州;不同的城市;不同的校园;不同的房间;或前述地理位置的任何组合。在一些实施例中,服务器群206可以作为单个实体来管理,而在其他实施例中,服务器群206可以包括多个服务器群。

在一些实施例中,服务器群可以包括执行基本上类似类型的操作系统平台(例如,WINDOWS、UNIX、LINUX、iOS、ANDROID等)的服务器206。在其他实施例中,服务器群206可以包括执行第一类型的操作系统平台的一个或多个服务器的第一群组和执行第二类型的操作系统平台的一个或多个服务器的第二群组。

服务器206可以根据需要被配置为任何类型的服务器,例如文件服务器、应用服务器、网络服务器、代理服务器、电器、网络电器、网关、应用网关、网关服务器、虚拟化服务器、部署服务器、安全套接字层(SSL)VPN服务器、防火墙、网络服务器、应用服务器,或者被配置为主应用服务器、执行活动目录的服务器或执行提供防火墙功能、应用功能或负载平衡功能的应用加速程序的服务器。也可以使用其他服务器类型。

一些实施例包括第一服务器206a,其接收来自客户机240的请求、将该请求转发到第二服务器206b(未示出),并用来自第二服务器206b(未示出)的响应来响应由客户机240生成的请求。第一服务器206a可以获取客户端机器240可用的应用的枚举以及与托管应用的枚举内标识的应用的应用服务器206相关联的地址信息。然后,第一服务器206a可以使用网络接口呈现对客户请求的响应,并且直接与客户端240通信以向客户端240提供对标识后的应用的访问。一个或多个客户端240和/或一个或多个服务器206可以通过网络230(例如网络101)传输数据。

图3示出了说明性桌面虚拟化系统的高级架构。如图所示,桌面虚拟化系统可以是单服务器或多服务器系统,或者云系统,该系统包括被配置成将虚拟桌面和/或虚拟应用的至少一个虚拟化服务器301提供到一个或多个客户端访问设备240。如本文所用的,桌面是指其中可以托管和/或执行一个或多个应用的图形环境或空间。桌面可以包括为其中可集成本地和/或远程应用的操作系统的实例提供用户界面的图形外壳。应用可以包括在操作系统(并且可选地还有桌面)的实例被加载之后执行的程序。操作系统的每个实例可以是物理的(例如,每个设备一个操作系统)或虚拟的(例如,在单个设备上运行的OS的许多实例)。每个应用可以在本地设备上执行,或者在位于远处的设备(例如远程的)上执行。

计算机设备301可以被配置为虚拟化环境(例如,单服务器、多服务器或云计算环境)中的虚拟化服务器。图3中所示的虚拟化服务器301可以被部署为图2中所示的服务器206的一个或多个实施例或由其他已知的计算设备来部署和/或实现。包括在虚拟化服务器301中的是硬件层,该硬件层可以包括一个或多个物理盘304、一个或多个物理设备306、一个或多个物理处理器308以及一个或多个物理存储器316。在一些实施例中,固件312可以存储在物理存储器316中的存储器元件内,并且可以由物理处理器308中的一个或多个执行。虚拟化服务器301还可以包括操作系统314,该操作系统314可以存储在物理存储器316中的存储器元件中,并且由物理处理器308中的一个或多个执行。此外,管理程序302可以被存储在物理存储器316中的存储器元件中,并且可以由物理处理器308中的一个或多个执行。

在物理处理器308中的一个或多个上执行的可以是虚拟机332A-C(通常为332)中的一个或多个。每个虚拟机332可以具有虚拟磁盘326A-C和虚拟处理器328A-C。在一些实施例中,第一虚拟机332A可以使用虚拟处理器328A来执行包括工具栈324的控制程序320。控制程序320可被称为控制虚拟机、Dom0、Domain 0或用于系统管理和/或控制的其他虚拟机。在一些实施例中,一个或多个虚拟机332B-C可以使用虚拟处理器328B-C来执行客户操作系统330A-B。

虚拟化服务器301可以包括具有与虚拟化服务器301通信的一个或多个硬件的硬件层310。在一些实施例中,硬件层310可以包括一个或多个物理盘304、一个或多个物理设备306、一个或多个物理处理器308以及一个或多个物理存储器316。物理部件304、306、308和316可以包括例如以上描述的部件中的任一个。物理设备306可以包括例如网络接口卡、视频卡、键盘、鼠标、输入设备、监视器、显示设备、扬声器、光驱、存储设备、通用串行总线连接、打印机、扫描仪、网络元件(例如,路由器、防火墙、网络地址转换器、负载平衡器、虚拟专用网络(VPN)网关、动态主机配置协议(DHCP)路由器等),或连接到虚拟化服务器301或与虚拟化服务器301通信的任何设备。硬件层310中的物理存储器316可以包括任何类型的存储器。物理存储器316可以存储数据,并且在一些实施例中可以存储一个或多个程序或一组或多组可执行指令。图3图示了其中固件312存储在虚拟化服务器301的物理存储器316内的实施例。存储在物理存储器316中的程序或可执行指令可以由虚拟化服务器301的处理器308中的一个或多个执行。

虚拟化服务器301还可以包括管理程序302。在一些实施例中,管理程序302可以是由虚拟化服务器301上的处理器308执行以创建和管理任何数量的虚拟机332的程序。管理程序302可以被称为虚拟机监视器或平台虚拟化软件。在一些实施例中,管理程序302可以是监视在计算机器上执行的虚拟机的可执行指令和硬件的任何组合。管理程序302可以是类型2管理程序,其中管理程序在虚拟化服务器301上执行的操作系统314内执行。虚拟机然后可以在管理程序302之上的级别执行。在一些实施例中,类型2管理程序可以在用户的操作系统的背景下执行,使得类型2管理程序与用户的操作系统交互。在其他实施例中,虚拟化环境中的一个或多个虚拟化服务器301可以替代地包括类型1管理程序(未示出)。类型1管理程序可以通过直接存取硬件层310内的硬件和资源而在虚拟化服务器301上执行。即,当类型2管理程序302通过主机操作系统314访问系统资源时,如图所示,类型1管理程序可以直接访问所有系统资源而无需主机操作系统314。类型1管理程序可以直接在虚拟化服务器301的物理处理器308中的一个或多个上执行,并且可以包括存储在物理存储器316中的程序数据。

在一些实施例中,管理程序302可以以模拟具有对系统资源的直接存取的操作系统330或控制程序320的任何方式向在虚拟机332上执行的操作系统330或控制程序320提供虚拟资源。系统资源可以包括但不限于物理设备306、物理磁盘304、物理处理器308、物理存储器316,以及虚拟化服务器301的硬件层310中包括的任何其他部件。管理程序302可用于仿真虚拟硬件、分区物理硬件、虚拟化物理硬件和/或执行提供对计算环境的存取的虚拟机。在其他实施例中,管理程序302可以控制在虚拟化服务器301上执行的虚拟机332的处理器调度和存储器分区。管理程序302可以包括由加利福尼亚州帕洛阿尔托市的VMWare公司制造的管理程序;由微软提供的Hyperv、虚拟服务器或虚拟PC管理程序等。在一些实施例中,虚拟化服务器301可以执行管理程序302,该管理程序302创建虚拟机平台,客户操作系统可以在虚拟机平台上执行。在这些实施例中,虚拟化服务器301可以被称为主机服务器。这样的虚拟化服务器的实例是由佛罗里达州劳德代尔堡的思杰系统公司提供的Citrix管理程序。

管理程序302可以创建客户操作系统330在其中执行的一个或多个虚拟机332B-C(通常为332)。在一些实施例中,管理程序302可以加载虚拟机映像以创建虚拟机332。在其他实施例中,管理程序302可以执行虚拟机332内的客户操作系统330。在还一些实施例中,虚拟机332可以执行客户操作系统330。

除了创建虚拟机332之外,管理程序302还可以控制至少一个虚拟机332的执行。在其他实施例中,管理程序302可以呈现具有由虚拟化服务器301提供的至少一个硬件资源(例如,硬件层310内可用的任何硬件资源)的抽象的至少一个虚拟机332。在其他实施例中,管理程序302可以控制虚拟机332访问虚拟化服务器301中可用的物理处理器308的方式。控制对物理处理器308的访问可以包括确定虚拟机332是否应当访问处理器308,以及如何将物理处理器能力呈现给虚拟机332。

如图3所示,虚拟化服务器301可以托管或执行一个或多个虚拟机332。虚拟机332是一组可执行指令,该组可执行指令在由处理器308执行时可以模仿物理计算机的操作,使得虚拟机332可以执行与物理计算设备非常相似的程序和过程。虽然图3图示了虚拟化服务器301托管三个虚拟机332的实施例,但是在其他实施例中,虚拟化服务器301可以托管任何数量的虚拟机332。在一些实施例中,管理程序302可以将该虚拟机332可用的物理硬件、存储器、处理器和其他系统资源的唯一虚拟视图提供到每个虚拟机332。在一些实施例中,唯一虚拟视图可以基于以下各项中的一项或多项:虚拟机许可、策略引擎对一个或多个虚拟机标识符的应用、访问虚拟机的用户、在虚拟机上执行的应用、虚拟机所访问的网络或任何其他期望的准则。例如,管理程序302可以创建一个或多个不安全虚拟机332和一个或多个安全虚拟机332。可以防止不安全虚拟机332存取可允许安全虚拟机332存取的资源、硬件、存储器位置和程序。在其他实施例中,管理程序302可以向每个虚拟机332提供物理硬件、存储器、处理器和虚拟机332可用的其他系统资源的基本相似的虚拟视图。

每个虚拟机332可以包括虚拟磁盘326A-C(通常为326)和虚拟处理器328A-C(通常为328)。在一些实施例中,虚拟磁盘326是虚拟化服务器301的一个或多个物理磁盘304或虚拟化服务器301的一个或多个物理磁盘304的一部分的虚拟化视图。物理磁盘304的虚拟化视图可以由管理程序302生成、提供和管理。在一些实施例中,管理程序302向每个虚拟机332提供物理磁盘304的唯一视图。因此,在这些实施例中,当与其他虚拟磁盘326相比时,每个虚拟机332中包括的特定虚拟磁盘326可以是唯一的。

虚拟处理器328可以是虚拟化服务器301的一个或多个物理处理器308的虚拟化视图。在一些实施例中,物理处理器308的虚拟化视图可以由管理程序302生成、提供和管理。在一些实施例中,虚拟处理器328具有至少一个物理处理器308的基本上所有相同的特性。在其他实施例中,虚拟处理器308提供物理处理器308的修改视图,使得虚拟处理器328的特性中的至少一些与对应的物理处理器308的特性不同。

进一步参考图4,本文中描述的一些方面可以在基于云的环境中实现。图4图示了云计算环境(或云系统)400的实例。如图4所示,客户端计算机411-414可以与云管理服务器410通信以访问云系统的计算资源(例如,主机服务器403a-403b(本文中通常为“主机服务器403”)、存储资源404a-404b(本文中通常为“存储资源404”)和网络元件405a-405b(本文中通常为“网络资源405”))。

管理服务器410可以在一个或多个物理服务器上实现。管理服务器410可以运行例如由佛罗里达州的思杰系统公司提供的思杰云(Citrix Cloud),或OPENSTACK等等。管理服务器410可以管理各种计算资源,包括云硬件和软件资源,例如,主机计算机403、数据存储设备404和联网设备405。云硬件和软件资源可以包括私有部件和/或公有部件。例如,云可以被配置为由一个或多个特定客户或客户端计算机411-414和/或通过专用网络使用的私有云。在其他实施例中,公有云或混合公有-私有云可以由其他客户在开放或混合网络上使用。

管理服务器410可以被配置成提供用户界面,云运营商和云客户可以通过该用户界面与云系统400交互。例如,管理服务器410可以将用户界面提供到一组应用程序接口(API)和/或一个或多个云操作员控制台应用(例如,基于网络的或独立的应用),以允许云运营商管理云资源,配置虚拟化层,管理客户账户,以及执行其他云管理任务。管理服务器410还可以包括具有用户界面的一组API和/或一个或多个客户控制台应用,用户界面被配置成经由客户端计算机411-414接收来自终端用户的云计算请求,例如,创建、修改或销毁云内虚拟机的请求。客户端计算机411-414可以经由因特网或一些其他通信网络连接到管理服务器410,并且可以请求访问由管理服务器410管理的计算资源中的一个或多个。响应于客户端请求,管理服务器410可以包括资源管理器,其被配置成基于客户端请求选择和提供云系统的硬件层中的物理资源。例如,管理服务器410和云系统的附加部件可被配置成通过网络(例如,因特网)为客户端计算机411-414处的客户提供、创建和管理虚拟机及其操作环境(例如,管理程序、存储资源、由网络元件提供的服务等),向客户提供计算资源、数据存储服务、联网能力以及计算机平台和应用支持。云系统还可被配置成提供各种特定服务,包括安全系统、开发环境、用户界面等。

例如,某些客户端411-414可以与代表相同的终端用户或隶属于相同公司或机构的不同用户创建虚拟机的不同客户端计算机相关。在其他实例中,某些客户端411-414可以是不相关的,诸如隶属于不同公司或组织的用户。对于不相关的客户端,任何一个用户的虚拟机或存储的信息可对其他用户隐藏。

现在参考云计算环境的物理硬件层,可用性区域401-402(或多个区域)可以指一组并置的物理计算资源。区域可以在地理上与计算资源的整个云中的其他区域分离。例如,区域401可以是位于加利福尼亚的第一云数据中心,而区域402可以是位于佛罗里达州的第二云数据中心。管理服务器410可以位于可用性区域中的一个处,或者位于单独的位置处。每个区域可以包括通过网关与区域外部的设备(例如管理服务器410)对接的内部网络。云的终端用户(例如,客户端411-414)可能知道或可能不知道区域之间的区别。例如,终端用户可以请求创建具有指定量的存储器、处理能力和网络能力的虚拟机。管理服务器410可以响应于用户的请求,并且可以分配资源以创建虚拟机,而无需用户知道虚拟机是使用来自区域401还是区域402的资源创建的。在其他实例中,云系统可以允许终端用户请求在特定区域中或在区域内的特定资源403-405上分配虚拟机(或其他云资源)。

在该实例中,每个区域401-402可以包括各种物理硬件部件(或计算资源)403-405的布置,例如,物理托管资源(或处理资源)、物理网络资源、物理存储资源、交换机以及可用于将云计算服务的附加硬件资源提供给客户。云区域401-402中的物理托管资源可以包括一个或多个计算机服务器403,诸如以上描述的虚拟化服务器301,该虚拟化服务器301可以被配置成创建并且托管虚拟机实例。云区域401或402中的物理网络资源可以包括一个或多个网络元件405(例如,网络服务提供商),网络元件405包括被配置成将网络服务提供给云客户的硬件和/或软件,诸如防火墙、网络地址转换器、负载平衡器、虚拟专用网络(VPN)网关、动态主机配置协议(DHCP)路由器等。云区域401-402中的存储资源可以包括存储盘(例如,固态驱动器(SSD)、磁硬盘等)和其他存储设备。

图4所示的示例云计算环境还可以包括具有附加硬件和/或软件资源的虚拟化层(例如,如图1至图3所示),该附加硬件和/或软件资源被配置成创建和管理虚拟机并且使用云中的物理资源向客户提供其他服务。虚拟化层可以包括如以上在图3中描述的管理程序,以及提供网络虚拟化、存储虚拟化等的其他部件。虚拟化层可作为与物理资源层分离的层,或可与物理资源层共享相同硬件和/或软件资源中的一些或全部。例如,虚拟化层可以包括安装在具有物理计算资源的虚拟化服务器403中的每一个中的管理程序。替代地,可以使用已知的云系统,例如,WINDOWS AZURE(华盛顿州雷蒙德市的微软公司)、AMAZON EC2(华盛顿州西雅图市的亚马逊公司(Amazon.com Inc.))、IBM BLUE CLOUD(纽约州阿蒙克市的万国商业机器公司(IBM Corporation))或其他。

智能文件推荐引擎

图5描绘了可以根据本文中描述的一个或多个说明性方面使用的说明性AI文件推荐器系统500。文件推荐器系统500可以包括经由一个或多个网络通信的一个或多个计算机系统。例如,文件推荐器系统500可以包括用户设备505、文件共享服务510、数据收集引擎515、推荐器系统520和推荐器模型525。文件推荐器系统500内的任何部件可以包括图1至图4中描述的一个或多个部件。

用户设备505可以是智能手机、个人数字助理、膝上型计算机、平板计算机、台式计算机、智能家居设备或被配置成执行本文中描述的一个或多个功能的任何其他设备。例如,用户设备505可以被配置成与文件共享服务510通信以接收与用户设备505相关联的用户的文件推荐。推荐的文件可以是任何类型的文件(例如,视频、文本、图片、PDF、其他专有文件类型等)。尽管所示的文件推荐器系统500包括单个用户设备505,但是应当理解,文件推荐器系统500可以包括类似于用户设备505的任何数量的用户设备。

另外,用户设备505可以被配置成生成、托管、传输和/或以其他方式提供一个或多个网页和/或其他图形用户界面(这可以例如导致一个或多个其他计算机系统显示和/或以其他方式呈现一个或多个网页和/或其他图形用户界面)。在一些情况下,由用户设备505生成的网页和/或其他图形用户界面可以与由机构提供的外部门户、网页或应用相关联。网页、信息和/或其他图形用户界面可以允许用户与文件共享服务510和/或与由推荐器系统520生成的文件推荐进行交互。

文件共享服务510可以被一个或多个用户用来与其他用户共享文件。文件共享服务510可以包括一个或多个服务器。文件共享服务510可以包括诸如云计算环境400等的云计算环境。文件共享服务510可以存储由用户上传的文件。可以使用文件共享服务510来上传和/或共享任何类型的文件(例如,视频、文本、图片、PDF、其他专有文件类型等)。文件共享服务510和推荐器系统520都可以在相同设备或分离的设备上实现。附加地/替代地,它们可以都是相同的云计算环境的一部分。

可以要求用户登录到文件共享服务510以使用该服务。文件共享服务510可以为服务的每个用户创建帐户。文件共享服务510的每个用户可以是用户的群组的一部分。例如,用户可以与在工作中的相同部门中的其他用户放在一个群组中。群组可以被嵌套在其他群组内。例如,用户可以属于表示部门的群组以及表示部门内团队的子群组。

文件共享服务510可以包括数据收集引擎515。在一些实例中,推荐器系统520可以包括数据收集引擎515。数据收集引擎515可以被配置成收集与一个或多个用户与文件共享系统510的交互相对应的数据,如下面在图6的步骤603-606中所描述的。文件共享服务510可包含数据库517。文件共享服务510可以在数据库517中存储用户行为数据。

如下面更详细说明的,推荐器系统520可以包括被配置成执行本文中描述的功能中的一个或多个功能的一个或多个部件。例如,推荐器系统520可以包括推荐器模型525。推荐器模型525可以包括可用于向用户推荐包含在文件共享服务510中的文件的一个或多个模型。推荐器模型525中的每个模型可以使用不同的算法来进行文件推荐。例如,推荐器模型525中的一个模型可以使用矩阵因式分解算法来生成推荐,而另一个模型可以使用神经网络来生成推荐。推荐器模型525内的一个或多个模型可以使用机器学习来生成文件推荐。推荐器模型525可以由推荐器系统520使用从文件共享服务510的用户收集的数据来训练。

图6描绘了用于向文件共享服务内的用户推荐一个或多个文件的说明性算法。在步骤603,文件共享服务510可以收集用户行为数据。文件共享服务510可以从服务的所有用户收集数据。文件共享服务510可以记录用户在文件共享服务510内采取的任何动作。例如,用户可以对文件进行评级(例如,从一星到五星),并且文件共享服务可以收集推荐器系统520在进行推荐时使用的评级。可以从用户收集的附加数据可以包括:用户在文件共享服务510内执行的搜索文本;用户标记的文件使文件更容易访问(例如,用户添加到收藏夹或其他文件夹的文件、用户添加书签的文件等);用户在文件共享服务510内查看的文件(这可以包括文件名、文件的描述、文件的任何内容、文件的作者等);用户编辑的档案文件;查看或编辑文件的日期;用户查看或编辑文件所花费的时间量;用户是否向文件共享服务510内的另一用户发送文件;用户是否将文件发送给用户群组内的其他用户;文件是否由用户群组的成员或任何其他用户签名;用户群组内的另一用户是否被给予编辑文件的许可。

当用户与文件共享服务510中的文件交互时,可以连续地收集用户数据。步骤603可以在图6中描述的任何步骤之间执行一次或多次。

在步骤606,文件共享服务510可以将用户行为数据存储在数据库517中。用户行为数据的任何部分可以用作向用户推荐文件的特征。用户行为数据可用于确定用户的偏好并且基于所确定的偏好生成文件推荐。

在步骤612,文件共享服务510可以确定群组行为数据。文件共享服务510可以以使得文件共享服务510能够访问群组和/或子群组内的每个用户的用户行为数据的方式来存储所收集的用户数据。群组行为可以包括任何类型的用户行为数据(例如,在上面的步骤603中描述的任何数据)。

在步骤615,可以预处理行为数据。例如,预处理可以由文件共享服务510或推荐器系统520执行。预处理可以包括例如使数据结构化、对文本数据执行语义分割以及特征提取。预处理可以包括对诸如文件的标题、描述或内容之类的文本数据进行字干搜寻。

在步骤618,推荐器系统520可以生成特征向量。可以使用从步骤615得到的用户行为数据来生成特征向量。特征向量可以包括可以在基于协作过滤的算法中使用的数据。例如,特征向量可以包括以上描述的步骤603中的任何数据。

附加地/替代地,特征向量可以包括可以在基于内容的过滤算法中使用的数据。特征向量可以包括数据和/或基于来自文件共享服务510内的文件的数据。例如,文件被创建和/或修改的日期可以被包括在特征向量中。与文件相对应的任何数据可以用于生成特征向量(例如,文件名、文件的描述、文件的任何内容、文件的作者等)。

可以测量和跟踪文件共享服务510内的每个文件的流行度。文件的流行度可以用作特征向量中的特征,并且可以与用户行为数据组合以训练推荐器模型来进行文件推荐。例如,每个文件的流行度可以以文件已经具有的交互的次数(群组内交互的次数或整体交互的次数)来度量。与推荐的文件的交互可以包括查看、编辑、共享、下载、评论、向用户群组内的其他用户发送文件、对文件进行签名、给予另一用户编辑文件的许可,或者用户可以对文件执行的任何其他动作。

在步骤621,推荐器系统520可以训练在向文件共享服务510的用户推荐文件时使用的推荐模型。推荐模型可以与推荐模型525一起存储。推荐器系统520可以使用机器学习来训练模型。可以使用任何推荐算法来训练推荐模型525内的模型,包括基于内容的过滤算法和协作过滤算法。例如,推荐器系统520可以使用决策树、神经网络、贝叶斯统计方法等来训练模型并且生成推荐。推荐器系统520可以训练模型来为一个或多个用户推荐文件。训练可以使用用户行为数据或以上描述的任何其他数据的全部或一部分。例如,推荐器系统520可以使用以上描述的步骤618中的特征向量。

推荐器系统520可以为以上描述的步骤618中的用户行为数据和/或文件数据的部分生成嵌入或向量表示。向量表示可以用于训练推荐器模型525中的模型。例如,推荐器系统520可以通过使用文件的标题、描述和/或内容来生成每个文件在文件共享服务510内的嵌入。嵌入的尺寸可以是任何数量(例如,1×300、1×500、1×2000等)。嵌入可以用在机器学习或推荐器系统算法中,包括在下面的步骤621-624中描述的任何算法。

当使用协作过滤推荐算法来训练模型时,推荐器系统520可以将训练数据限制为来自与生成推荐的用户在相同群组(例如,部门、团队等)内的用户的数据。在一个实例中,推荐器系统520可以使用矩阵因式分解算法来训练模型。当使用矩阵因式分解模型时,倾向于查看与第二用户相同的文件的第一用户可以是第二用户已经查看的推荐的文件。推荐器系统520可以使用包括用户查看文件所花费的时间量的特征向量来训练矩阵因式分解模型。

例如,推荐器系统520可以生成用户文件矩阵,其中每个用户作为一行,并且每个文件作为一列。用户文件矩阵中的每个值mij可以表示位置i处的用户在查看j处的文件所花费的时间量(然而,可以使用在步骤603中描述的任何用户行为数据)。在一个实例中,如果由行i表示的用户已经查看了由列j表示的文件,则用户文件矩阵中的每个值mii可以是1。如果由行i表示的用户没有查看由列j表示的文件,则用户文件矩阵中的值mij可以是空白的。推荐器系统520可以生成两个附加矩阵(例如,用户矩阵和文件矩阵),当两个附加矩阵相乘在一起时,创建用户文件矩阵的近似。例如,推荐器系统520可以具有多个潜在特征k。用户矩阵可以具有用于每个用户的行和k列,每列表示潜在特征。文件矩阵可以具有用于文件共享服务510中的每个文件的行和k列,每列表示潜在特征。

推荐器系统520可以使用梯度下降来确定用户矩阵和文件矩阵的值。例如,推荐器系统520可以用随机值初始化用户矩阵和文件矩阵。然后,推荐器系统520可以通过计算用户矩阵和文件矩阵的乘积来计算用户文件矩阵的近似矩阵。推荐器系统520可以计算近似矩阵与用户文件矩阵之间的差。推荐器系统520可以调整用户矩阵和/或文件矩阵中的值,以最小化近似矩阵与用户文件矩阵之间的差。可以重复计算近似矩阵与用户文件矩阵之间的差并且调整用户矩阵和/或文件矩阵的值的过程,直到收敛。推荐器系统520可以使用正则化来避免在用梯度下降训练时的过度拟合。

在完成矩阵因式分解模型的训练之后,推荐器系统520可以使用最终近似矩阵向用户推荐文件。例如,如果文件在用户文件矩阵中是空白的但在近似矩阵中具有高值,则推荐器系统520可以为用户推荐文件。推荐器系统520可以按照每个文件在近似矩阵中的对应值来对每个文件进行分类,并且可以建议多个(例如,1、3、5个等)最高值的文件。

推荐器系统520可以在推荐器模型525中生成模型,该模型基于用户的群组内的文件的流行度来推荐文件。例如,群组内的用户可以在文件共享服务510中与他们的群组成员共享诸如文档或视频的文件。一些共享文件可以在群组内变得流行,并且可以多次交互(例如,查看、编辑、签名、下载等)。如果与文件的交互次数超过某个流行度阈值,则可以将该文件推荐给其他群组成员(例如,未与该文件交互的群组成员)。流行度阈值可以基于与来自相同群组的文件的交互的次数(例如,3、10、50次等)。附加地/替代地,流行度阈值可以基于与文件交互的群组成员的百分比。例如,如果某百分比(例如,10%、25%、50%、75%等)的群组成员与文件交互,则可以向该群组的其他成员推荐该文件。

在步骤624,推荐器系统520可以为用户生成文件推荐。文件推荐可以基于文件的流行度和/或用户偏好。可以基于用户行为数据来确定用户偏好。例如,查看讨论话题的若干文件的用户可以被推荐讨论相同话题的其他文件。可以使用推荐器模型525中的模型来生成推荐。在步骤627,可以将推荐的文件输出到用户设备505。用户设备505可以向用户设备505的用户显示推荐的文件。

在步骤630,可以确定与推荐的文件的用户交互是否满足阈值。文件共享服务510和/或推荐器系统520可以收集与用户与推荐的文件的交互相对应的用户行为数据。与推荐的文件的交互可以包括查看、编辑、共享、下载、评论、向用户群组内的其他用户发送文件、对文件进行签名、给予另一用户编辑文件的许可等。阈值可以基于在阈值时间段(例如,数小时、数天、数周、数月、数年等)内与推荐文件进行的交互的次数。例如,如果用户在一天内查看了多个推荐的文件(例如,1、3、5、10个等),则推荐器系统520可以确定满足了与推荐文件的用户交互。阈值可以基于不同类型的交互(包括视图、编辑、共享、下载、评论或与文件的任何其他类型的交互)的任何组合。例如,如果用户查看了至少2个推荐文件并且编辑了至少1个推荐文件,则推荐器系统520可以确定满足了与推荐的文件的用户交互。如果确定与推荐的文件的用户交互不满足阈值,则可以执行步骤633。如果确定与推荐的文件的用户交互确实满足阈值,则可以重复步骤603。

在步骤633,推荐器系统520可以调整推荐。推荐器系统520可以通过调整在推荐模型525内的模型中使用的参数来调整推荐。例如,在矩阵因式分解模型(例如,如上所述)中,可以增加或减少潜在特征的数量。在神经网络模型中,可以添加或去除隐藏层。附加地/替代地,推荐器系统520可以通过用已经由文件共享服务510收集的附加用户行为数据再训练用于生成推荐的模型来调整推荐。

推荐器系统520可以通过给予一个或多个特征比其他特征更多的权重来调整推荐。例如,当在推荐模型525内训练模型并且生成推荐时,可以给予用户共享的文件比用户查看的文件更多的权重。附加地/替代地,当训练或生成文件推荐时,推荐器系统520可以停止使用一个或多个特征。例如,推荐器系统520可以停止使用用户下载的文件作为训练和生成推荐的特征。

推荐器系统520可以通过使用不同的模型来调整推荐。例如,如果在步骤624中生成的推荐是使用矩阵因式分解模型生成的,则推荐器系统520可以切换到神经网络模型以生成不同的推荐。推荐器系统520可以切换到推荐器模型525内的任何模型。推荐器系统520可以在推荐模型525内组合模型以创建集合。例如,决策树模型可以与神经网络模型组合。在调整推荐之后,可以重复步骤603-633中的任何一个。

尽管已经用对结构特征和/或方法动作专用的语言描述了本主题,但是应理解,所附权利要求书中定义的主题不必限于以上描述的特定特征或动作。相反,以上描述的具体特征和动作是作为以下权利要求的示例实现来描述的。

23页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于基于媒体内容项的目的地的对媒体内容项的改进的搜索和分类的系统和方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!