用于解析意图和实体(如Alexa Custom Skills)的文本的开源库

时间:2016-07-16 04:55:10

标签: nlp text-parsing alexa wit.ai

是否有任何像Amazon Alexa Custom Skills一样的开源库,您可以在其中为其提供意图架构和样本话语以进行匹配,并且它将提供解析的标记化响应以及定义中匹配的实体。

以下是Alexa Custom Skill Intent schema的示例。

示例话语以训练和指定如何将文本和地图匹配到实体:

AnswerIntent the answer is {Answer} 
AnswerIntent my answer is {Answer} 
AnswerIntent is it {Answer} 
AnswerIntent {Answer} is my answer AnswerOnlyIntent {Answer}

AMAZON.StartOverIntent start game 
AMAZON.StartOverIntent new game 
AMAZON.StartOverIntent start 
AMAZON.StartOverIntent start new game

另一项服务是https://wit.ai/,它允许您配置表达式和令牌以匹配,是否有任何开源库提供这种级别的灵活性。

4 个答案:

答案 0 :(得分:2)

Mycroft AI似乎有很多项目提供功能和程序员界面非常类似于亚马逊Alexa自定义技能,你可以自己托管和修改它以获得比Alexa语音服务更多的灵活性(但这也是一点点一个缺点,因为你必须自己扩展它。)

  • https://docs.mycroft.ai/skill.creation

  • https://mycroft.ai/projects/

    • Mycroft Core - 将自然语言处理,文本到语音,语音到文本和强大的API结合在一起的技术,以创建一个强大的体验,允许用户操纵他们的智能设备和互联网通过语音控制的事情。
    • 打开STT - 开源语音到文本模型(好像他们现在正在利用其他API,如Google Speech To Text,Wit.ai和IBM Watson)
    • Adapt Intent Parser - 将自然语言转换为机器可读的数据结构
    • 模仿文字转语音 - 以高质量的语音朗读文本(只是目前尚未提供的提案项目)

答案 1 :(得分:0)

如果我找对了你,你想提供一个与可能的值相匹配的模式,并且库必须生成可能的话语列表。如果是这样,那么有一个alexa-app项目可以让您除了其他功能之外还可以执行此操作。它在麻省理工学院下,所以可以从那里借用所需的代码。 例如:

app.intent('sampleIntent',
    {
        "slots":{"NAME":"LITERAL","AGE":"NUMBER"}, 
        "utterances":[ "my {name is|name's} {names|NAME} and {I am|I'm} {1-100|AGE}{ years old|}" ]
    },
    function(request,response) { ... }
);

可能的话语:

my name is John and I am 20 years old
my name's John and I'm 40
my name's Taylor and I'm 55 years old
....

答案 2 :(得分:0)

也许,你可以试试Rasa-nlu。它与MS Luis非常相似。您可以将文本解析为结构化数据,如

{
"entities": [
    {
        "endIndex": null,
        "entity": "hello",
        "score": null,
        "startIndex": null,
        "type": "name"
    }
],
"intents": [
    {
        "intent": "greet",
        "score": 0.640747175086514
    },
    {
        "intent": "goodbye",
        "score": 0.2696910959582717
    },
    {
        "intent": "FindEmployeeLocation",
        "score": 0.05672220244026073
    },
    {
        "intent": "FindEmployee",
        "score": 0.032839526514953594
    }
],
"query": "hello",
"topScoringIntent": {
    "intent": "greet",
    "score": 0.640747175086514
}

您也可以使用json或markdown格式训练您的语言模型。最重要的是服务是开源的。这意味着您无需为使用它而支付额外费用。您只需设置自己的nlu服务器然后使用它。 https://github.com/RasaHQ/rasa_nlu

答案 3 :(得分:-1)

有许多OSS解析库。实际上,大多数人都比Alexa的话语模式具有更大的灵活性,而Alexa的话语模式只是正则表达式。

您可以选择特定目标NLP的库,例如GATE,Stanford Core NLP,OpenNLP和NLTK。如果你正在处理大型文档集合,那么Apache Lucene(或者你喜欢的Solr)是花花公子(虽然GATE也支持它们)。

对于较轻的重量,您可以使用通用解析器生成器。列出的内容太多(https://en.wikipedia.org/wiki/Comparison_of_parser_generators)但是像Antlr这样的packrat解析器(http://bford.info/packrat/)性能很好且易于使用。