我有一个字串:“我想在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;
}
}
});
有更好的方法吗?我可以使用任何建议或库吗?关于如何改善代码以更好地理解文本上下文的任何想法?
答案 0 :(得分:1)
在给定一个位置(实体)的情况下,您正在做的事情是对该位置是destination
,origin
还是neither
进行分类。现在,您有一个基于规则的分类器,该分类器仅查看位置之前的标记。您可以构建一个可以访问更大窗口的分类器(例如,每侧+/- 2个标记)。这是最繁琐的工作,但有可能变得最准确。
最简单的方法是使用DialogFlow之类的工具,该工具是用于会话UI的Google SaaS产品。您可以定义一个名为origin
的{{3}}并给出诸如from LAX
,starting at LAX
之类的示例。我不知道这会比扩展基于规则的方法好多少。分类器。
注意:"developer entity"是我推荐的DialogFlow的开源竞争对手。旋转起来还需要做更多的工作。