建立自己的 NLP API

Building your own NLP API

我正在构建一个聊天机器人,我是 NLP 的新手。

(api.ai 和 AlchemyAPI 对于我的用例来说太贵了。而且 wit.ai 目前似乎有问题并且不断变化。)

对于 NLP 专家,我如何轻松地在本地复制他们的服务?

到目前为止我的愿景(有节点,但对 Python 开放):

聊天机器人只需要实体和意图吗? NodeNatural/StanfordNER 与 NLP 即服务相比有多好?我没有看到什么令人头疼的问题?

看看 Luis.ai(来自 Microsoft)。它将帮助您构建识别意图的自然语言模型。您可以将意图映射到操作。它允许您包含预配置的 NLP 模型,以便您的机器人可以破译文本和 return 实体(名称、时间、地理等),并且 Luis 支持多种语言。您当然可以添加自己的实体。

然后你用话语训练它。当用户与您的机器人交谈时,这些话语会在线存储并且 Luis.ai 这将建议您添加一些以通过其建议功能进一步完善您的模型(这允许在不编码的情况下进行增量改进)。现在是编码的东西...

访问 Luis.ai,当您构建模型(免费)时,您可以通过此处的测试控制台对其进行测试:https://dev.projectoxford.ai/docs/services and then you could use their Bot Framework; however I am building my own in JQuery/Bootstrap (have a look at this to see what I am building here http://onlinebotbuilder.com) 并通过 json 从服务器处理 json =23=] 到认知服务 API(您将在 Python 中执行)。目前他们每月允许 10k 的话语;这对于测试来说已经足够了。提示:创建模型时从 2 个意图开始并训练模型以识别这些意图。保持简单,然后在进行时扩展范围。希望这可以帮助。

您似乎已经完成了功课。就像你说的,下面的事情会帮助你一路走来,

  • 任何用于识别意图的分类算法,例如 sklearn 的 LinearSVC 或 LogisticRegression Classifier
  • 任何好的 NER 工具,例如 StanfordNER 或 CRFsuite。 CRFsuite 具有易于使用的 pthon 包装,称为 pycrfsuite。
  • 一种情绪分析工具,用于更人性化的对话。 如果你选择 python 会更好,因为 python 有很多免费的图书馆。

wit.ai 或 api.ai 等服务的唯一好处是他们训练有素的随时可用的意图,如果您能够提供,models.You 也将能够达到类似的准确性对你的机器人进行适当的训练。

最好是在一些现有的开源库上进行构建,而不是从头开始构建所有内容。 请check my opensource project在github上获得wit.ai/api.ai类似的界面。 编码愉快!

需要考虑的两件事是:您打算如何处理生成方面的问题?实体提取和分类对于事物的自然语言理解 (NLU) 方面很有用,但生成本身可能很棘手。

另一件需要考虑的事情是,这些模型的管道的训练和开发通常是一个独立于部署的问题。我认为,您想使用节点这一事实表明您已经了解如何部署软件。但请记住,在管道中部署大型机器学习模型可能很复杂,我怀疑这些 API 可能会为您提供整齐打包的管道。