介绍
对于在线挑战,我们在Nameling中添加了名称推荐功能。用户将在系统的每个页面上看到“推荐姓名”的个性化列表。此列表将自动适应用户的活动(例如,用户单击、输入喜爱的操作)。用户可以使用此列表通过单击一个名称来进一步搜索名称,将名称添加到他最喜欢的名称中,或者禁止用户不想再次推荐的名称。
此任务的目标是推荐适合用户的个性化姓名列表。评估将基于用户点击的姓名、请求的详细信息或添加为收藏夹。我们将提供一个框架,以便基于轻量级REST(HTTP+XML/JSON)交互将您的推荐系统轻松集成到实时系统中。参与者可以实现一个简单的Java接口来生成他们的建议,或者自己实现REST交互。所有数据序列化/反序列化都将由我们的框架处理。参与者可以选择自己在web服务中运行他们的推荐程序,或者提供一个JAR文件供我们部署。
新增:我们还提供轻量级Python绑定以便参与者可以轻松集成基于Python的推荐器。
在质询期间,Nameling中实施了两种名称建议用例:
- 提要栏建议:
- 在Nameling中的大多数页面上,推荐名称的简短列表显示在右侧边栏中最喜欢的名称列表下方。用户可以单击名称进行进一步检查,将名称添加到最喜爱的名称列表中,或者通过不喜欢名称来永久隐藏名称。
- 推荐形式:
- 将有一个新的主菜单项,用户可以在其中明确查询合适的名称,给定一个(可能为空)查询名称列表(图像,例如父母的姓名)。
所有推荐请求都会传递给所有注册的推荐系统。但只有一个(随机)选择的推荐人的结果会显示给用户。为给定用户选择推荐者是固定的会话(即用户与命名交互的时间范围),直到用户请求新的推荐,这将为用户选择另一个推荐者。每当用户与推荐的名称交互时(例如通过单击它),相应的推荐系统都会收到相应的反馈(即哪个用户单击了哪个名称,基于哪个建议)。为此,所有推荐流程都是唯一标识的。为了进行评估,我们记录所有活动和交互。
对于该挑战的所有参与者,我们将发布使用数据的匿名夜间快照,以便定期更新推荐者模型。此外,传递给推荐者的实际用户对象包含用户的完整交互历史。离线挑战的所有注册参与者都可以参加在线挑战。参加线下挑战赛不是强制性的,尽管如此,我们还是恳请您遵守登记程序正如我们要求的离线挑战,如果你只想参加在线挑战。
也可以看看下载页面获取与在线挑战有关的所有可用数据集和程序文件的摘要。
现在,您可以访问beta.nameling.net以预览新的推荐功能。请注意,我们目前正在完善名称建议的用户界面集成。你可以通过发送我们来帮助我们反馈.
Nameling基于Java的推荐界面
入门
本节介绍如何设置一个简单的基本远程安装,将您的姓名推荐器集成到命名。在成功执行了随后列出的步骤后,您的站点上将会有一个正在运行的推荐程序,该推荐程序(技术上)可能已经集成到Nameling中。
请注意:这是对在线挑战的初步描述,旨在尽快发布挑战的技术细节。所描述的技术细节(例如Java接口和安装步骤)不太可能更改,但如果出现错误,我们可能必须发布更新。请通过提问或暗示错误给我们反馈,以便我们能够快速更新此描述。
如果您考虑参加这个在线挑战,或者如果您有任何问题,请不要犹豫联系我们。我们很乐意帮助您将您的推荐系统应用到Nameling的推荐界面。
- 下载阿帕奇Tomcat并将其存储在您的安装基础路径
- 在您的安装基础路径(在类Unix操作系统中:
$unzip apache-tomcat-6.0.37.zip
)
- 下载命名推荐servlet并将其存储在Tomcat的web应用程序文件夹
- 下载Nameling的模型类和Nameling的推荐课程并将其存储在Tomcat安装的共享库文件夹
- 启动Tomcat
- 用浏览器导航到推荐人基地址(例如。,http://localhost:8080/nameling-推荐程序servlet/)
你现在已经可以得到一些建议了!接下来,我们将解释如何在Nameling中实现和部署您自己的推荐系统。
实施您自己的推荐
现在,我们将使用Nameling的模型类和提供的推荐器servlet来查看Java中自定义推荐器的实现方面。
首先,您需要以下JAR文件,这些文件提供了必要的基类:
基本上,您只需实现INamining推荐器
接口:
包net.nameling.recommender;.../***Nameling名称推荐框架的接口*/公共接口INamelingRecommender{/***获取推荐名称列表**@param user命名请求推荐的用户*@param命名命名用户的当前查询名称*@param偏移分页开始位置*@param限制要推荐的名称数量*@param traceId标识后续用户交互的id*@param activity触发此推荐过程的用户交互类型*此推荐流程的@param activityId id*触发此建议的活动的@param refActivity id*@返回*/公共列表<RecommendedName>推荐(用户,列表<Name>名称,整数偏移量,整数限制,字符串traceId,活动activityType,int activityId,整数refActivity);/***通知推荐人用户交互**@param user为请求推荐的用户命名*@param activity描述用户与以前推荐的名称(包括推荐流程的activityId)的交互*/public void setFeedback(User User,String traceId,Activity activityType,String value,int activityId,Integer refActivity);}
也就是说,您只需实现以下两种方法:
推荐(…)
- 给定用户(通过
user.getName()
)和一组查询名称,则返回推荐名称的有序列表,其中推荐名称
必须至少包含已知姓名UTF-8字符串表示(通过设置recommendedName.setValue(<名称>)
)可能还有排名得分(recommendedName.setScore(<分数>)
具有得分∈[-1,1]). 分数值可用于可视化Nameling用户界面中的建议质量。除了查询名称之外,用户对象还包含用户的完整活动历史记录(user.getHistory()
)以及最喜欢的名字列表。此外,我们将在下载页面.
这个抵消
和限制
参数用于允许用户请求更多推荐的名称。
设置反馈(…)
- 每当用户与推荐进行交互时,例如当用户将推荐的名称添加到收藏夹列表时,都会调用此方法。用户通过用户名(
user.getName()
)而推荐流程由活动ID(activity.getId()
)和跟踪ID(activity.getTraceId()
).
要部署推荐者,您只需遵循以下步骤:
- 编译一个包含所有引用Java库的JAR文件(不需要提供命名-*模块)。
- 根据入门第节。
- 将JAR文件复制到Tomcat安装的共享库文件夹
- 将以下行添加到Tomcat的上下文配置文件假设你给推荐课打了电话MyName推荐在Java包中我的包:
<Parameter name=“NameRecommender”value=“my.package.MyNameRecommeder”override=“false”/>
- 启动你的Tomcat!
- 用浏览器导航到推荐人基地址(例如。,http://localhost:8080/nameling-推荐人服务/)并获得一些建议!
为了您的方便,我们编译了一个小Maven公司该项目通过静态推荐所有主要字符的给定名称来演示实现生活大爆炸。你可以下载项目供参考。
Nameling中远程安装的推荐系统的集成是通过REST类通信和JSON对象序列化实现的。如果您想使用其他编程语言或servlet,请联系我们.
Nameling基于Python的推荐界面
基于网络.py,我们还提供了一个轻量级Python绑定到Nameling的推荐界面(命名-python-servlet.zip). 首先,您需要(假设Python已经安装好)网页.py模块:
sudo easy_install网站.py
我们提供了一个小示例,介绍推荐者界面的工作原理(myRecommender.py):
类MyRecommender(推荐者):def建议(self、user、inputNames、offset、limit、traceId、activityType、activity Id、refActivity):建议=[{“value”:“Leonard”,“score”:0.9},{“value”:“Sheldon”,“score”:0.8},{'value':'Penny','score':0.7},{“value”:“Howard”,“score”:0.6},{“value”:“Rajesh”,“score”:0.5},]退货建议def setFeedback(self、user、traceId、activityType、value、activity Id、refActivity):通过“+activityType+”(“+str(activityId)+”)打印“SETTING FEEDBACK for user”+用户['name']+“,值为“+value+”,表示“+str(refActivity)”;
您可以从以下开始推荐python pytholet.py 9988版
它将启动服务器,监听端口9988。如果您想实现自己的推荐程序,只需相应地覆盖myRecommener.py文件即可!为了测试您的推荐者,我们编译了一个基于Java的小型测试客户端,它使用与Nameling相同的代码来查询和解析推荐者。只需下载nameling-test-client.jar并通过查询您的推荐人
java-jar命名-test-client.jarhttp://localhost:9988测试用户
其中“testuser”只是用于测试的任意字符串。您将得到以下结果(根据上面的MyRecommender类):
网址:http://localhost:9988用户名:testuser查询推荐人名字:伦纳德名字:Sheldon名字:Penny名字:霍华德名字:Rajesh
最终测试
我们现在向您展示如何测试从我们的服务器到您的推荐系统的连接。为此,请导航到test.nameling.net测试并输入您的推荐人基地址到相应的输入字段。点击“查询推荐”按钮后,我们的服务器将通过提供的基本URL查询您的推荐系统,并显示收到的推荐以及总处理时间。任何低于500毫秒的处理时间都可以。如果您的推荐系统持续超过500毫秒,请与我们联系,讨论在我们的网站上托管您的推荐人的可能性。
其他示例
在本节中,我们将介绍一些简单的推荐器实现,可能会对您有所帮助
开发和部署您自己的系统。
基于文件的建议
在本节中,我们将描述如何部署基于项的NameRank推荐程序,这在我们的姓名推荐书。我们预先计算了每个名字的前100个推荐名字,以及相应的成对NameRank分数,并将结果存储为三元组列表(<查询名称>,<推荐名称>,<score>)在一个标签分隔的文本文件:
艾玛(Folke Emma)0.00212623378963727图迈民俗0.00147136818626244福克·凯文0.00130191069681237福克·蒂姆0.0010356402037229福克·阿梅利0.00102964668938194⋮
下载
对于给定的一组查询名称,通过对所有其他名称元素的得分求平均值来获得最终建议(实际上,只对得分求和,因为除以查询名称的数量并不影响排序)。
要在服务器上部署此推荐程序,只需执行以下步骤:
- 根据入门第节。
- 下载Nameling的推荐课程并将其存储在Tomcat安装的共享库文件夹
- 下载预先计算的NameRank结果文件并在Tomcat安装的共享库文件夹
- 将以下行添加到Tomcat的上下文配置文件:
<Parameter name=“NameRecommender”value=“net.nameling.recommender.base.NameRankRecommendor”override=“false”/>
- 启动您的Tomcat!
- 用浏览器导航到推荐人基地址(例如。,http://localhost:8080/nameling-推荐人服务/)并获得一些建议!
如果您的推荐者也可以使用预先计算的分数,那么您可能已经使用了这个实现,并且只提供了一个自定义的“nameling-recommendation.tsv”文件。
在下一节中,我们将描述命名的自定义名称推荐器的实现和部署。
进一步解释
- 安装基础路径
- 这是服务器上的目录,您的推荐系统将安装在该目录中。在类Unix操作系统上,这可能看起来像
/主页/<您的用户id>/20DC13/
.
- Tomcat的web应用程序文件夹
- 此文件夹包含Tomcat servlet容器部署的所有web应用程序。按照我们的安装说明,您的web应用程序文件夹位于
<installation base path>/apache-tomcat-6.0.37/webapps/
.
- Tomcat的共享库文件夹
- 此文件夹包含可用于Tomcat servlet容器中所有应用程序的文件。按照我们的安装说明,您的共享库文件夹位于
<安装基本路径>/apache-tomcat-6.0.37/lib/
。有关Tomcat共享库文件夹的更多信息,请访问Tomcat在线参考.
- 上下文配置文件
- 此文件可用于配置web应用程序的站点特定参数,位于
<安装基本路径>/apache-tomcat-6.0.37/conf/context.xml
。对于命名推荐servlet,您可以提供推荐者的规范Java类名。配置NameRank推荐者的最小示例如下:
<?xml版本=“1.0”编码=“utf-8”?><上下文><WatchedResource>WEB-INF/WEB.xml</WatchedResource><Parameter name=“NameRecommender”value=“net.nameling.recommender.base.NameRankRecommendor”override=“false”/></上下文>
- Tomcat的启动和配置
- Tomcat通过调用
<安装基本路径>/apache-tomcat-6.0.37/bin/startup.sh
并默认侦听端口8080。
- 推荐者基本URL
- 推荐系统的基本URL由服务器的主机名(或IP地址)、Tomcat安装的HTTP连接器端口(默认设置为8080)以及上下文路径Nameling的推荐servlet(默认为“/Nameling-recommender-servlet/”)。也就是说,您可以通过浏览器访问您的安装
http://localhost:8080/nameling-推荐人服务/