如何从节点js中的全文文档中提取硬件规格(Ram,处理器,存储,连接)? 是否存在一些我可以使用和配置的模块或者我可以部分重写以满足我的需要的东西?
/ ***更新
实施例
Entrando nelle specifiche,siamo ovviamente di fronte un tablet Senza troppe pretese,equipaggiato con pannello da 7 pollici (risoluzione 1280 x 720像素),SoC Bay Trail T Z3735G,1GB di RAM e 存储闪存16 GB。 Il WinBook非支持3G tuttavia offre connettivitàWiFi,蓝牙oltre支持USB,HDMI e doppia fotocamera da 2 Mp。
Un prodotto davvero interessante per questo prezzo che da noi sarebbe di meno di 50欧元。
我想要什么
CPU: SoC Bay Trail T Z3735G
Ram: 1gb
Display: 7", 1280 x 720 pixel
Storage: 16gb
Connectivity: Wifi, Bluetooth, USB, HDMI
Photocamera: 2mp
由于
答案 0 :(得分:2)
我认为你需要几个解决方案。你正在寻找的几个规范是足够可预测的,你可以使用正则表达式根据上下文做出相当好的猜测并捕获它们:存储,连接,相机,RAM和显示尺寸&分辨率。
我不确定您是仅尝试解析平板电脑或几种设备的描述,而是使用正则表达式首先识别哪种设备,然后设置不同的正则表达式参数以捕获所提到的属性以上根据设备类别。
<强>更新强>
例如,您可以使用此正则表达式识别RAM和存储:/(\d{1,4}) *(gb|mb)/gi
查看它与您的查询的匹配情况at this link.然后,这只是解析每个匹配中的数字并进行有根据的猜测的问题(即较大的数字最有可能是存储,而较低的数字是RAM)。
即使找不到 RAM ,您也可以使用/(\d{1,4}) *(gb|mb) *(ram)*/gi
返回true。这与您的查询不匹配,因为它显示 1GB di RAM ,但 di 是一个可以安全地删除的单词(它意味着 用意大利语,对吗?)。
或者像/(\d{1,4}) *(gb|mb) *\w* *(ram)*/gi
would match your query这样的内容,而不必删除 di 。请注意链接中此正则表达式如何匹配#GB的两个实例,但只有第一个正则表达式匹配RAM
。这使得更容易识别哪个数字指的是RAM,哪个指的是存储。
<强> /更新强>
找出CPU会更具挑战性,因为这不是一个容易预测的模式。我们最近遇到了类似的问题,并使用natural的.BayesClassifier()
方法将查询与其更接近的条目进行匹配。不幸的是,这意味着您需要维护一个合理的最新流行CPU数据库,以便测试用户的查询。
这样的事情:
var natural = require('natural');
var classifier = new natural.BayesClassifier();
classifier.addDocument('SoC Bay Trail T Z3735G', 101);
classifier.addDocument('ARM Cortex-A5', 102);
classifier.addDocument('Intel Core i3-3217U', 103);
classifier.addDocument('AMD Micro-6400T', 104);
classifier.train();
var query = 'Entrando nelle specifiche, siamo ovviamente di fronte a un tablet senza troppe pretese, equipaggiato con pannello da 7 pollici (risoluzione 1280 x 720 pixel), SoC Bay Trail T Z3735G, 1GB di RAM e Storage flash di 16 GB. Il WinBook non supporta il 3G tuttavia offre connettività WiFi, Bluetooth oltre a supportare USB, HDMI e doppia fotocamera da 2 Mp. Un prodotto davvero interessante per questo prezzo che da noi sarebbe di meno di 50 Euro.'
var output = classifier.getClassifications(query);
console.log(output);
输出:
[ { label: '101', value: 0.4 },
{ label: '102', value: 0.0125 },
{ label: '103', value: 0.0125 },
{ label: '104', value: 0.0125 } ]
当然,可能有数百(甚至数千)个记录要匹配,这些value
属性会小得多(我应该知道,我的合作伙伴和我将用户查询与1200+的列表相匹配公共汽车站名称),但它应该在许多情况下帮助您确定最终的匹配。
我可以想出两种方法来帮助分类器更好地匹配: