【问题标题】:How to check if string is a valid inquiry如何检查字符串是否为有效查询
【发布时间】:2018-02-02 04:18:49
【问题描述】:

我需要确保某些字符串是有效的问题。我正在考虑如何自己写这个,但不限制它实际上是一个相当复杂的分析,我敢肯定它以前一定做过很多次。

我说的不仅仅是以疑问词开头并以问号结尾。例如,我希望所有这些都通过:

  1. 大峡谷很大吗?
  2. 我知道峡谷通常很大,但是大峡谷很大吗?
  3. 我之前在想,大峡谷是大峡谷吗?

我很想拥有一个现有的 js 库(或移植一些东西)来为我做这件事。我已经四处寻找了一段时间,但什么也没找到。

  • 附注我不得不在标题中使用“询问”这个词,因为“问题”这个词被禁止了。

【问题讨论】:

  • 这超出了您正在使用的语言,并扩展到语言语义解析,这是一项复杂且(非常抢手的)专业专业。如果为此存在一个 JS 库,我会感到惊讶,大多数自然语言处理代码都是专有的,并由大公司(谷歌、MS、亚马逊等)拥有。
  • compromise.js 是一个 JS NLP 引擎,它甚至还有一个 .questions() 子集。当然,它不是一个神奇的解决方案,所以 YMMV。
  • @Jay Gould - 嘿 - 感谢您回来。是的,我同意,但我认为它可能很常见,可能会有一些东西,比如检测潜在的冒犯性语言。尽管这些通常使用较少语义/蛮力的方法。
  • @Alex K - 哇哦 - 乍一看,这看起来正是我正在寻找的东西!谢谢,我现在就去调查!
  • Google Cloud 也有 NLP API,我认为是付费的。

标签: javascript string string-parsing


【解决方案1】:

我的问题下 cmets 中的 Alex K 给出了我需要的确切答案。

compromise.js

太棒了! :-)

编辑:

根据要求,这是一个工作示例。

在安装了npm 的终端中,输入以下内容:

npm install compromise

现在要测试一个字符串 (myString) 是否包含一个问题,您可以使用以下代码:

var nlp = require('compromise');
var containsQuestion = nlp(myString).questions().data().length === 1;

(在上述情况下,多问也会导致否定结果)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-26
    • 2021-10-03
    • 1970-01-01
    • 2011-06-17
    • 2016-01-15
    • 2018-06-15
    • 1970-01-01
    相关资源
    最近更新 更多