检测物体的异常情况

问题描述 投票:0回答:2

假设我有一个 json 对象数组。

{ firstName: John, Children: ["Maria","Alfred"], married: false }
{ firstName: George, Children: ['**zoekerbergen alfonso the second**','Harvey'], married: false }

{ firstName: Hary, Children: ["Sam","Obama"], married: false }

其模式通常是子项是一系列小单词名称。

然而

Zoekerbergen alfonso the second
是一种异常现象。

有没有办法学习物体的模式,然后检测异常情况,例如一个有 1000 个孩子的人?

javascript machine-learning
2个回答
0
投票

您可以创建一个 JSON 模式来描述您的 JSON 数据(与 XML 的 XSD 相同)。它允许为字符串字段等定义正则表达式模式。

JSON Schema 是一个词汇表,允许您验证、注释和 操作 JSON 文档。

参见此处https://github.com/json-schema-org/json-schema-spec


0
投票

您的规则对于 JSON 模式解决方案来说可能过于复杂,但您可以轻松创建自己的规则集,如下所示:

var list = [
    {firstName: 'John', Children: ['Maria', 'Alfred'], married: false},
    {firstName: 'George', Children: ['**zoekerbergen alfonso the second**', 'Harvey'], married: false},
    {firstName: 'Hary', Children: ['Sam', 'Obama', 'Peter'], married: false}
];
// change with your max
var maxChildren = 2;

// add more rules if needed
var anomaliesRules = [
    function(row) {
        return row.Children !== null && row.Children.length > maxChildren;
    },
    function(row) {
        // you can define your own rules per item
        return row.Children.filter(function(child) { return !child.match(/^[A-Z][a-z]+$/); }).length > 0;
    }
];

var checkAllAnomalies = function(item) {
    for (var i = 0; i < anomaliesRules.length; i++) {
        if (anomaliesRules[i](item)) return true;
    }
    return false;
};

var anomalies = list.filter(checkAllAnomalies);
console.log(anomalies);

您最终会得到与至少一个您定义的异常相匹配的所有项目。

© www.soinside.com 2019 - 2024. All rights reserved.