从节点js中的全文中提取硬件规格

时间:2014-11-30 17:18:24

标签: node.js

如何从节点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

由于

1 个答案:

答案 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+的列表相匹配公共汽车站名称),但它应该在许多情况下帮助您确定最终的匹配。

我可以想出两种方法来帮助分类器更好地匹配:

  1. 为每种设备类型制作单独的分类器:这样,如果您知道自己可能正在寻找平板电脑处理器,则只能与平板电脑CPU分类器匹配。
  2. 从用户查询中删除不必要的内容,例如您已通过正则表达式识别为属于其他规范的内容,以及无法帮助您识别硬件的常用单词(ovviamente,support,il,interessante等)。 )