从JavaScript中的文本解释/提取位置值-NodeJS

时间:2019-11-26 10:16:59

标签: javascript node.js nlp

我有一个字串:“我想在11月29日之前用AWB 12381140743从LAX将重量为60lB的沙发运到希思罗机场”

我将上面的字符串传递给我的Google NLP API,它吐出了json对象的列表。

寻找标签LOCATION我可以从JSON对象中提取位置, 但是,如果我不查找前一个单词(即“至”,“从”),则无法理解哪个是起源,哪个是目的地。 此外,如果值取反(即从-到),则当前代码将无法正确识别起点和终点。

entities.forEach(element => {
        if (element.type === 'LOCATION') {

            const index = getTokenElementIndex(tokens, element.name);
            const wordBefore = getPreviousWord(tokens, index);

            if (wordBefore === 'from') {
                origin = element.name;
            } else if (wordBefore === 'to') {
                destination = element.name;
            }
        }
    });

有更好的方法吗?我可以使用任何建议或库吗?关于如何改善代码以更好地理解文本上下文的任何想法?

1 个答案:

答案 0 :(得分:1)

在给定一个位置(实体)的情况下,您正在做的事情是对该位置是destinationorigin还是neither进行分类。现在,您有一个基于规则的分类器,该分类器仅查看位置之前的标记。您可以构建一个可以访问更大窗口的分类器(例如,每侧+/- 2个标记)。这是最繁琐的工作,但有可能变得最准确。

最简单的方法是使用DialogFlow之类的工具,该工具是用于会话UI的Google SaaS产品。您可以定义一个名为origin的{​​{3}}并给出诸如from LAXstarting at LAX之类的示例。我不知道这会比扩展基于规则的方法好多少。分类器。

注意:"developer entity"是我推荐的DialogFlow的开源竞争对手。旋转起来还需要做更多的工作。