我想制作一个日历应用程序,它比现有的更好地接受纯英文输入。我发现斯坦福的 NLP 看起来很酷,但我想知道它是否对这类任务有帮助。我找不到人们将它用于任何事情的例子。应用程序是否应该真正理解该语言?似乎存在的自然英文日历正在寻找关键字/模式并尝试以这种方式解析,但我认为应用程序可以做得更好。
我真正的问题:有人能告诉我如何找到人们使用 NLP 或不同(公开可用的)英语解析器来制作真正有用的应用程序的例子吗?
我想制作一个日历应用程序,它比现有的更好地接受纯英文输入。我发现斯坦福的 NLP 看起来很酷,但我想知道它是否对这类任务有帮助。我找不到人们将它用于任何事情的例子。应用程序是否应该真正理解该语言?似乎存在的自然英文日历正在寻找关键字/模式并尝试以这种方式解析,但我认为应用程序可以做得更好。
我真正的问题:有人能告诉我如何找到人们使用 NLP 或不同(公开可用的)英语解析器来制作真正有用的应用程序的例子吗?
查看NLTK。
NLTK 是用于构建 Python 程序以处理人类语言数据的领先平台。它为超过 50 个语料库和词汇资源(如 WordNet)提供易于使用的接口,以及一套用于分类、标记化、词干提取、标记、解析和语义推理的文本处理库。
使用 NLTK 解析的示例:
>>> import nltk
>>> rd_parser = nltk.RecursiveDescentParser(grammar)
>>> sent = 'Mary saw a dog'.split()
>>> for t in rd_parser.nbest_parse(sent):
... print t
(S (NP Mary) (VP (V saw) (NP (Det a) (N dog))))
NLTK 提供了一本很棒的免费书籍,可在线获取:http: //nltk.googlecode.com/svn/trunk/doc/book/book.html
IBM 的一个很好的概述:http: //www.ibm.com/developerworks/linux/library/l-cpnltk/index.html
PS:另一个与您类似的 SO 问题:Using integers/dates as terminal in NLTK parser
几年后,围绕 NodeJS 的 NLP 出现了重要的新兴技术。有关情况的更多概述,请参见此处:http ://www.quora.com/Are-there-any-JavaScript-natural-language-processing-projects
但是,这里是 +1 问题的示例,因为我也在寻找同样的问题……就在几年后。
NLP 的工作示例......在 JavaScript 中?
这是我的答案...
步骤 1 - 样板节点服务器:
install npm
npm install nodebootstrap
nodebootstrap naturalNode
cd naturalNode && npm install
node app
//这应该会给你一个在 localhost:3000 运行的节点引导应用程序
有关简单节点服务器设置的完整信息,请访问此处:https ://github.com/stonebk/nodeboilerplate
第 2 步 - 包括自然图书馆:
前往 GitHub Natural Library 看看它可以做什么......
https://github.com/NaturalNode/natural
跑:
npm install natural
(在名为 naturalNode 的引导服务器中)
第 3 步 - 运行示例:
将上面链接中的示例代码包含到 app.js 引导文件中。
var natural = require('natural'),
tokenizer = new natural.WordTokenizer();
console.log(tokenizer.tokenize("your dog has fleas."));
// [ 'your', 'dog', 'has', 'fleas' ]
现在,当您运行服务器时,您可以完全访问自然库,并能够使用前端接口对其进行扩展。
如果缺少任何说明,请告诉我...
有许多有用的 NLP 库可用,例如 Spacy、NLTK 和 CoreNLP
以下是与 NodeJS 和 Javascript 一起使用的前 2 个 NLP 库以及示例:
Github:https ://github.com/axa-group/nlp.js
NLP.js 由 AXA 集团开发。它是一个用于构建机器人的 NLP 库,具有实体提取、情感分析、自动语言识别等功能,支持 40 种语言。
这是一个基本代码片段,可帮助您了解设置它的难易程度。
常量 { NlpManager } = 要求('node-nlp'); const manager = new NlpManager({ 语言:['en'] });
// 添加 NLP 的话语和意图 manager.addDocument('en', 'goodbye for now', 'greetings.bye'); manager.addDocument('en', '再见了保重', 'greetings.bye');
// 也训练 NLG manager.addAnswer('en', 'greetings.bye', 'Till next time'); manager.addAnswer('en', 'greetings.bye', '再见!');
// 训练并保存模型。(async() => { await manager.train(); manager.save(); const response = await manager.process('en', '我现在该走了'); console.log(response); })( );
Github:https ://github.com/NaturalNode/natural
Natural 是另一个著名的 Node.js NLP 库。“Natural”是 Node.js 的通用自然语言工具。它目前支持标记化、词干提取、分类、语音学、tf-idf、WordNet、字符串相似度和一些变形。
变种自然 = 要求(“自然”);var tokenizer = new natural.WordTokenizer(); console.log(tokenizer.tokenize("你的狗有跳蚤。")); // ['你的','狗','有','跳蚤']
console.log(natural.HammingDistance("karolin", "kathrin", false)); console.log(natural.HammingDistance("karolin", "kerstin", false)); // 如果字符串长度不同,则返回 -1
此处提供更多库和示例代码: https ://www.kommunicate.io/blog/nlp-libraries-node-javascript/
由于您没有指定任何编程语言,我建议使用名为Natty的 Java 库。如果他知道的话,你可以向它的作者询问使用他的库的实际应用程序。