新型海淘购物比价引擎方案设计

2016-12-15 02:47马龙飞
软件 2016年11期
关键词:商品信息比价引擎

马龙飞

(北京邮电大学网络技术研究院宽带网研究中心,北京 100876)

新型海淘购物比价引擎方案设计

马龙飞

(北京邮电大学网络技术研究院宽带网研究中心,北京 100876)

海淘在经过最近几年的发展,已经成为很多中国消费者的购物方式之一。除了商家选择、商品购买、商品转运外,消费者最看重的环节之一便是价格比对。但是,目前大多数比价引擎仅支持英文或中文表述的网站,极少可以把对应的跨境商品进行价格比较。因此,本文提出一种能进行国内外相同商品比价的方案,通过以美中两国Amazon购物网站进行比价搜索,实现更好的比价效果。系统会结合翻译模块,能够让用户用中文或英文进行商品搜索。在收到用户搜索请求之后,会优先审查本地数据库是否包含用户之前的搜索记录,如果有则反馈本地记录,如果没有则实时抓取美中两国Amazon相应商品信息。另外,虽然很多比价引擎能够识别中文搜索,但识别精准度和范围都不是很好。为了提高搜索精度,系统将网上翻译API和本地电商词汇中英对照表结合,对用户输入的中英文进行实时翻译。为减少商业利益影响,不同于Amazon原始的商品排序,系统在Amazon原始排序算法基础上,对排序做了改进来实现关键字的排序优化。

计算机应用技术;海淘;在线比价;中英文搜索;排序优化

本文著录格式:马龙飞. 新型海淘购物比价引擎方案设计[J]. 软件,2016,37(11):73-83

0 引言

近年来,新的跨境电商模式——海淘的蓬勃发展,为消费者带来了新的购物体验。消费者可以在海淘网站上购买特定商品,并由转运公司将其寄回国内。

但是,海外商品是否真的比国内便宜很多,不同国家销售的商品其属性是否一致,导致消费者不免要做国内外商品的比较。在这种情况下,消费者面临三个问题:

1. 消费者必须在各种国内外购物网站中搜索相应的商品,记录商品价格,重复操作,浪费大量时间;

2. 海外电商网站对中文识别性差,通过测试,美国Amazon只能识别一小部分用中文描述的品牌。消费者最好在海外网站上输入商品相应的英文名称,以确保搜索的准确性,但这对英语不好的人来说很不方便;

3. 虽然现有比价服务相对成熟,但大多数都只关注自己国家的商品。此外,他们无法满足多语言搜索需求。这种比价引擎在跨境比价方面具有低适应性,特别是对海淘。

为解决这些问题,需要一种能够提供实时比价,支持中英文输入和简化操作过程的系统。以美中两国Amazon购物网站比价为例,本文提出一种新型海淘购物比价引擎的设计方案,该系统由几个核心功能组成:

1. 允许英语和中文输入,甚至混合搜索输入,并提供类别选项;

2. 按匹配度、价格或商品品牌排序,支持用户过滤美国Amazon和中国Amazon的商品;

3. 向用户展示每个商品的名称、属性、图片、当前和历史价格等信息;

4. 定期插入和更新数据库中的所有美国Amazon和中国Amazon商品信息,这有助于提取有用的历史数据,以便进行历史价格比较。

1 方案设计

1.1 系统设计

系统流程由两个过程组成,一个是接收用户输入并返回搜索结果,另一个是周期性过程,从数据库中读取用户历史记录,并插入和更新数据库中的信息。

1.1.1 系统流程图

如图1所示,左侧是用户搜索,负责与浏览器和用户输入交互;右侧的数据更新是定期更新系统后台的信息。

图1 系统流程图

1. 用户搜索

· 接收用户输入

当消费者想要比较特定商品时,会输入商品名称、品牌或其他属性用于搜索。浏览器搜索栏允许用户输入信息,用户点击搜索按钮后,服务器将接收来自浏览器的用户请求。

· 确定用户输入是否已存在于本地数据库中

在接收到用户输入后,服务器将检查本地数据库是否包含此历史搜索记录。如果是,服务器向数据库发送请求并等待信息返回;如果没有,服务器将做实时信息爬取。

· 实时信息从两个Amazon爬取

由于数据库不包含相关的搜索输入,服务器必须向两个Amazon发送新的请求以抓取商品信息。该过程涉及DOM树过滤不相关信息并提取商品信息的技术。

· 将新的用户输入和商品信息保存到数据库

当用户输入是新的时,服务器将该特定用户输入与从Amazon爬取到数据库的相应商品信息绑定。同时,Amazon中每个商品的初始排序也将保存。

· 从数据库提取商品信息,并返回给用户

如果数据库包含用户输入,它将返回所有匹配的商品信息到服务器。然后服务器将这些信息插入到HTML模板并渲染一个页面来向用户显示结果。

2. 数据更新

读取保存在数据库中的历史用户输入

系统先读取数据库中包含的所有用户搜索记录的文档列表。然后这些历史数据将被视为搜索请求,分别发送给美中Amazon用于信息爬取。

· 从Amazon抓取新商品和现有商品的最新价格

根据历史搜索记录,服务器将从美国Amazon和中国Amazon遍历信息。这个过程旨在获得在Amazon销售的新商品和保存在数据库中的商品最新价格。

· 更新数据库商品信息

现有商品和新商品的价格等信息将添加到数据库中。

1.1.2 系统流程图

如图2所示,左侧系统设计的整个框架取决于MVC架构。M-Model,在价格引擎中,数据库存储可以被商品搜索模块访问的商品对象。V-View,结果反馈模块包含渲染模板引擎。项目应用EJS模板引擎做页面呈现,它将数据和页面模板作为输入,然后生成HTML页面,由浏览器再解析。C-Controller,路由控制器将根据用户请求将过程引导到特定路由。

在框架的右边是Web爬取模块和信息提取模块。Web爬取模块负责从美国Amazon和中国Amazon抓取商品信息。之后,获取的数据将被发送到信息提取模块进行信息过滤、提取和结构化。最后,所有有用和处理过的信息被保存到数据库中。

图2 系统架构图

中间的是数据库。一方面,当用户的输入已经记录在数据库中时,商品搜索模块直接从数据库中提取商品信息;另一方面,数据库维护商品信息,更新的商品数据会被添加到数据库中。存储在数据库中的数据类型为JSON。

助手组件帮助一些模块实现特定功能,这也是价格引擎的新颖性之一。

1.2 系统模块和组件

1.2.1 中英翻译模块

在美国Amazon,如果只输入中文的一些品牌,美国Amazon能够识别他们,但如果输入更多的单词,美国亚马逊无法识别输入。

如图3进行美国Amazon中文单词识别测试。首先输入全中文“华硕笔记本”,Amazon返回通知——您的搜索没有匹配任何商品。然后输入“华硕notebook”,美国Amazon成功完成搜索请求。总之,美国Amazon只能支持一些品牌翻译,不能处理更长的句子翻译。此外,用户通常使用中文和英文的混合搜索,如“Samsung手机”、“苹果MacBook Air”等,这对翻译带来了更多的挑战。

为了提高搜索效果,本文采用的翻译机制基本原理如下:

1. 从用户输入中分离中文和英文,并且仅对中文序列进行中文分割,以便生成具有语义的分割单词列表;[1]

2. 如果用户的输入包含专门的词,则本地词汇表将优先翻译它,如果单词不匹配本地专用表中的任何信息,在线翻译服务将接管并完成其余的翻译工作;

3. 在完成整个输入翻译之后,处理后的用户输入将被发送以进行搜索。[2]

图3 美国Amazon中文识别测试

1.2.2 商品搜索模块

· 商品排名优化算法

出于商业利益考虑,当用户搜索一些特定的商品,一些不太相关的商品会被商家置顶。如图4测试中输入“HTC One S”,搜索结果显示第三个商品“HTC One X”排在包含“HTC One S”关键字的第五和第六个商品之前。显然这不符合消费者的检索目的。

图4 商品排名测试

在这种情况下,基于美国Amazon的初始排名算法,本文尝试设置匹配度作为排名索引。如果商品名称包含用户输入,则索引将增加,反之亦然。

第一步,系统将过滤掉那些不相关的标点符号,并根据特定的标点符号分割整个用户输入。然后系统确定用户输入是否包括在一个商品名称中。如图5,e是一个商品的排名指数,searchingNameArr是已经被分段的用户输入的数组,然后对于循环将做匹配确定。如果商品名称包含用户输入的第i个单词,则排名索引分配为0,否则e将减去某个数。

图5 分段输入的伪代码和输入存在的确定

第二步,系统将为用户输入中的每个分段字分配不同的权重。对于用户输入,单词排名更高,则单词将获得更大的权重。例如,用户的输入是“三星Galaxy S7”,则“三星”可以获得比“Galaxy” 更大的权重,等等。

图6 将不同权重分配给不同输入的伪代码

第三步,系统确定每个分段输入是否是商品名称中的独立词。如果是,排名指数将增加(独立意味着这个词不被其他不相关的词包裹或链接)。例如,用户输入中的“S”分割词和“HTC ONE S320”是特定商品名称。在这种情况下,“S”在商品名称中不是独立的,因为它后面跟着“320”,并且“ONE”、“HTC”是独立词。

更重要的是,用户输入有时存在于商品属性中,所以需要额外做属性和用户输入之间的匹配,这也影响最后的排名指数。

图7 确定独立词的伪代码

如果在中国Amazon,系统必须在第一步做中文分词。其余的排名指数比较与美国Amazon的操作相同。

1.2.3 网站爬取模块

网站传输由HTTP协议实现。浏览器将根据HTTP规定格式对请求进行编码,然后将其发送到服务器。接收请求后,服务器将根据相同的格式返回相应的信息到浏览器。

在系统中,网站爬取模块遍历美国Amazon和中国Amazon的商品信息。通过分析Amazon网址请求,发现像http://www.amazon.cn/s/ref=nb_sb_noss? page=PageNumber&keywords=SearchName这样的网址请求可以访问Amazon中具有所需搜索名称的特定网页。如图8所示,在浏览器中输入http://www. amazon.cn/s/ref= nb_sb_noss?page=2&keywords=Samsung,Amazon将直接在第2页中搜索“三星”。

因此,根据这个规则,从服务器发送特定URL的请求,系统可以在Amazon中废弃无关商品信息。两个函数requestUS()和requestCN()分别从美国Amazon和中国Amazon抓取商品列表。

图8 请求Amazon搜索

在图8中可以看出,请求Amazon搜索,商品页面列表不包含商品属性详细信息。因此需要进一步抓取属性,即向Amazon服务器发送另一个URL请求,并获取每个商品的详细页面。

通过分析,PC端Amazon在商品详细信息页面中有太多不相关的信息,而一些海淘应用选择爬取移动端Amazon页面,会有较少不相关的属性信息。本文借鉴此方法,通过Amazon移动网页抓取商品详细信息,如图9。由于手机页面渲染效果较差,也大大提高了系统抓取速度。

与压缩软件相同,网页也采用压缩技术来加速访问速度。[3]在系统中,函数requestUS()和requestCN()中添加了支持gzip和deflate的代码。与没有压缩编码的设计相比,增加了数据爬取速度并提高了系统性能。

1.2.4 信息提取模块

由于商品信息是结构化数据,因此会在特定模板中显示。为了获得有用商品信息,应提取商品模

板。HTML中描述的页面可以转换为DOM树,以便于分析页面结构和进行遍历工作。由于美中两国Amazon的DOM树几乎相同,以美国Amazon为例,图10显示了美国Amazon的商品列表模板。红色框中的部分是商品列表的HTML代码。15个商品信息通过红色框中的HTML标签显示,即表单标签至

。除了每个商品具有不同图片和字词,至几乎具有相同的结构。

图9 商品详细信息页

图10 商品列表页面的HTML

在商品列表页面中,系统提取数据,包括商品图片、名称、价格、品牌并过滤掉不相关的噪音。所以本文抽象一个特定的来生成DOM树。下图显示了的DOM树,可以看出商品图像在第三层,名称在第四层,价格在DOM树的底层,如图11所示。

美国Amazon使用美元作为货币单位,系统提取商品价格后,通过汇率转换换算成人民币。相同的操作可以从商品详细信息页面提取商品属性等其它信息。

1.2.5 其他模块和组件

· 用户输入模块

这个模块与视图进行交互,当用户在浏览器中输入搜索请求,用户输入将通过HTTP协议传送到用户输入模块,然后该模块将用户输入分配给不同的商品搜索模块。

· 结果反馈模块

当从数据库中找到所有搜索的商品时,结果反馈模块将使用商品信息呈现相应的EJS模板,EJS将被解析为HTML并显示在最终的结果页面。

图11 result0的DOM树商品

· 汇率转换

此组件会从某银行网站中抓取美元汇率,然后将其保存在文件中。在将美国Amazon商品价格插入数据库之前,所有价格都从美元兑换成人民币。在固定的时间间隔后,组件将更新此汇率。

· 数据库

数据库负责保存商品信息。在数据库中构建了四个表:usAmazon,cnAmazon,usSearchedName和cnSearchedName。usAmazon和cnAmazon分别用于存储美国Amazon和中国Amazon的商品信息。usSearchedName和cnSearchedName保存用户的历史搜索输入,这有助于定期更新信息。

2 测试和效果展示

2.1 中英翻译输入支持

与美国Amazon相比,本文设计的系统中英翻译模块对支持多语言搜索请求有较好的效果。下图12是本文系统的页面,图13是美国Amazon的页面。例如,当输入“华硕笔记本”时,本文系统成功地从美国Amazon搜索到相应的商品,而美国Amazon本身无法完成搜索任务。

事实上,在本文系统中,“华硕笔记本”已被翻译成“Asus notebook”并被送到美国Amazon进行搜索。如果在美国亚马逊中输入“the Asus notebook”,则发现图14右侧的美国Amazon返回了与左侧系统相同的结果。

图12 用户在本文系统中输入中文

图13 美国Amazon用户输入中文

与现有价格引擎相比,例如在中国最好的价格引擎之一的Yitao.com,如果尝试以一淘的“海

淘”模式搜索海外商品,会发现这个价格引擎中显示的商品主要由采购代理提供,这些代理向消费者提供较少的选择。为测试,搜索“华硕笔记本”,Yitao.com只显示8个商品。如果搜索“Asus notebook”,Yitao.com可以找到大约100页的商品。这意味着Yitao.com也是低水平多语言识别。但是,无论在本文系统中搜索的是“华硕笔记本”还是“Asus notebook”,来自美国Amazon的商品内容都一样。

图14 证明翻译效果

图15 使用本文系统比较现有价格引擎

通过几个测试,本文系统、美国Amazon和

Yitao.com之间的翻译能力和返回商品比较如下:

表1 翻译能力和返回结果比较

与美国Amazon和现有价格引擎相比,本文系统实现了高度适应性的多语言搜索,弥补了跨境价格引擎的一个不足。

2.2 通过匹配度和价格进行商品分拣

本文系统提供三个商品分类选项——默认、匹配和价格。默认是初始Amazon排序,匹配是应用本文的优化排名算法,价格意味着商品按价格排序。

· 匹配

如图16所示,当输入“HTC ONE S”时,比较搜索结果可以看出,一些不太相关(不包含“HTC ONE S”)商品出现在默认Amazon排序的列表中。而本文系统应用优化排名算法,所有显示均匹配目标商品。这个比较证明本文系统的优化排名算法有很大的效果,过滤掉了很多不相关的商品。

此外,本文系统提供商品品牌和类别过滤选项,如图17所示。

如果组合匹配与商品品牌和类别过滤,效果会更好。

图16 使用优化算法排序(左)与Amazon默认排序(右)

图17 商品品牌和类别过滤

· 价格

在本文系统中选择“按价格高低”选项时,所有来自国内外的商品根据价格从高到低重新排序,反之亦然,如图18所示。

2.3 商品详情查看

现有的购物网站,如Amazon和价格引擎,网页包含太多不相关的信息,并且肯定会影响用户对关键内容的查看。不同于现有设计风格,本文系统设计了一个页面来显示所有的商品细节。页面样式应用平展设计,删除除了商品信息之外的冗余信息。此外,当单击商品详细信息和品牌详细信息按钮时,可以隐藏商品属性和商品品牌,如图19所示。

将本文系统与Amazon和现有价格引擎进行比较,如表2所示。

图18 按价格排序的商品

图19 商品详细信息显示

表2 Amazon现有价格引擎和本文系统的比较

本文系统可以覆盖所有功能,并且在个别地方比Amazon和其它价格引擎更好。此外,系统扁平化设计风格与清晰的内容显示为用户带来更好的购物体验。

3 总结展望

随着电子商务产业的快速发展,网上购物新模式海淘已进入市场。为支持这种新模式,可以提供跨境商品比价的价格引擎成为一种需求。

然而,现有海外电商网站和比价引擎还存在种种不足,为解决这些问题,本文提出一种新的海淘购物引擎设计方案,支持中文和英文搜索输入并提供类别选项,基于Amazon重新优化了排名算法,以提高商品匹配度,并允许根据匹配度和价格对商品进行排序。本文系统可以在页面中向用户显示每个商品的名称、属性、图像、当前价格、历史价格等,并且能够定期更新数据库中的信息。这些设计都大大提高的用户的购物体验。

还有一些地方可以进一步扩展:

1. 到目前为止,本地专业词汇还没有大到足以覆盖更专业化的单词翻译,在下一步中,可以通过更好的方法更新和扩大词汇,例如爬取在主流电商网站中的新搜索热词;

2. 本文系统只通过比较搜索的关键词和商品名称进行匹配,更理想的方法是分析和提取每个商品的特征词,这就涉及更多的研究处理语义分析和分词。

[1] 陈平, 刘晓霞, 李亚军. 基于字典和统计的分词方法. 计算机工程与应用, 2008, 44(10): 144-146. CHEN P, LIU X X, LI Y J. Word Segmentation Method Based on Dictionary and Statistics. Computer Engineering and Application, 2008, 44(10): 144-146.

[2] Youdao Translation API. Data Access API. Retrieved on May, 2014. Web Site: http://fanyi.youdao.com/openapi? path=data-mode.

[3] L. Peter Deutsch. DEFLATE Compressed Data Format Specification. Retrieved on May 2014. Web site: http://www. gzip.org/zlib/rfc-deflate.html.

New Design of Cross-border Online Shopping Price Comparison Engine

MA Long-fei
(Beijing University of Posts and Telecommunications (Beijing) Broadband Network Research Center, Beijing 100876, China)

After the development in recent years, cross-border online shopping has become a shopping way of many Chinese consumers. In addition to merchant choosing, goods purchasing, goods transferring, what consumers care most is the price comparison. However, most comparison engines only support English or Chinese web sites, few can compare corresponding cross-border commodity prices. Therefore, this paper proposes a design that can compare price of same commodity in home and abroad. Through the United States and China Amazon shopping sites, to achieve better result. The system will be combined with the translation module to allow users to use Chinese or English goods searching. After receiving user’s search request, system will review whether local database has user's search records at first. If it has, then local records will feedback, if not, then real-time access to the United States and China Amazon’s corresponding commodity information will be done. In addition, although many comparison engines can identify Chinese search, but recognition accuracy and scope is not good enough. In order to improve search accuracy, system will combine online translation API with local electronic business terms table, to do real-time translation. In order to reduce impact of commercial interests, unlike Amazon original product ranking, system has improved sorting algorithm based on Amazon original sorting algorithm, to achieve keyword sorting optimization.

Computer application technology; Cross-border online Shopping; Online price comparison; English and Chinese searching; Sorting optimization

TP393.09

A

10.3969/j.issn.1003-6970.2016.11.017

猜你喜欢
商品信息比价引擎
中国商品信息服务平台
商品信息
备战双十一
公式调整法和基准比价法结合的PPP项目调价研究
国际能源比价分析
比价的江湖
商品信息标准化助力电子商务健康发展
无形的引擎
基于Cocos2d引擎的PuzzleGame开发
生猪和玉米价格对猪粮比价影响程度的分析