问题标签 [nlp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - 上下文自然语言资源,我从哪里开始?
我在哪里可以找到一些 .Net 或概念资源来开始使用自然语言,在那里我可以从文本中提取上下文和主题。我不希望使用词频算法。
language-agnostic - 一个 StringToken 解析器,它提供谷歌搜索风格“你的意思是:”
寻求一种方法:
在字符串中使用空格分隔的标记;返回一个建议的词
即:
谷歌搜索可以采用“fonetic wrd nterpreterr”,
并在结果页面顶部显示“您的意思是:语音单词解释器”
任何 C* 语言或 Java 的解决方案都是首选。
是否有任何执行此类功能的现有开放库?
或者有没有办法利用 Google API 来请求建议的单词?
nlp - NLP:构建(小型)语料库,或“从哪里获得大量不太专业的英语文本文件?”
有没有人建议在哪里可以找到用于小型语料库的日常英语文本的档案或集合?我一直在使用 Gutenberg Project 书籍作为工作原型,并希望融入更多现代语言。最近的一个答案间接指向了一个很好的usenet电影评论档案,这是我没有想到的,而且非常好。对于这个特定的程序,技术用户网档案或编程邮件列表会使结果倾斜并且难以分析,但任何类型的一般博客文本、聊天记录或任何可能对其他人有用的东西都会非常有帮助。此外,非常感谢没有太多标记的部分或可下载的研究语料库,或者一些用于查找适当的维基百科文章子集或任何其他想法的启发式方法。
(顺便说一句,我是一个下载的好公民,使用故意缓慢的脚本,对托管此类材料的服务器没有要求,以防你认为将我指向一些巨大的东西存在道德风险。)
更新:用户 S0rin 指出维基百科不要求抓取,而是提供此导出工具。Project Gutenberg 在这里指定了一个策略,最重要的是,尽量不要爬行,但如果您需要:“将您的机器人配置为在请求之间至少等待 2 秒。”
更新 2 维基百科转储是要走的路,感谢指出它们的回答者。我最终从这里使用了英文版本:http: //download.wikimedia.org/enwiki/20090306/,以及大约一半大小的西班牙转储。它们是一些需要清理的工作,但非常值得,并且它们在链接中包含许多有用的数据。
java - 在 Java 中创建自然 DSL 的最佳工具是什么?
几天前,我阅读了一篇博客文章 ( http://ayende.com/Blog/archive/2008/09/08/Implementing-generic-natural-language-DSL.aspx ),其中作者讨论了使用 .NET 的通用自然语言 DSL 解析器。
在我看来,他的想法的绝妙之处在于,文本被解析并与使用与句子同名的类进行匹配。
以下面几行为例:
将使用“已知”对象的集合进行转换,该集合采用解析结果。一些示例对象将是(在我的示例中使用 Java):
因此,在处理第一句时,CreateUser 类将是一个匹配项(显然是因为它是“create user”的串联),并且由于它在构造函数上接受一个参数,因此解析器会将“user1”作为用户参数。
之后,解析器将识别下一部分“with email”也匹配一个方法名称,并且由于该方法带有一个参数,它会将“test@email.com”解析为电子邮件参数。
我想你现在明白了,对吧?至少对我来说,一个非常明确的应用是允许应用程序测试人员用自然语言创建“测试脚本”,然后将句子解析为使用 JUnit 来检查应用程序行为的类。
我想听听关于可以使用 Java 编写此类解析器的工具或资源的想法、提示和意见。如果我们可以避免使用复杂的词法分析器,或者像 ANTLR 这样的框架,我认为这可能会用锤子杀死苍蝇,那就更好了。
不仅如此,如果有人愿意为此启动一个开源项目,我肯定会感兴趣。
algorithm - 地理标记或地理标签文本内容的方法
有哪些好的算法可以用城市/地区或原产地自动标记文本?也就是说,如果博客是关于纽约的,我怎么能以编程方式讲述。是否有任何包装/文件声称可以肯定地做到这一点?
我已经研究了一些基于 tfidf 的方法、专有名词交集,但到目前为止,还没有取得惊人的成功,我会很感激想法!
给定一些主题列表,更一般的问题是关于将文本分配给主题。
简单/天真的方法更喜欢完全使用贝叶斯方法,但我很开放。
encoding - 理论:“词汇编码”
我使用术语“词法编码”是因为我没有更好的词法编码。
与字母相反,单词可以说是交流的基本单位。Unicode 尝试为所有已知字母的每个字母分配一个数值。对一种语言来说是字母,对另一种语言来说是字形。目前,Unicode 5.1 为这些 Glyphs 分配了超过 100,000 个值。在现代英语中使用的大约 180,000 个单词中,据说使用大约 2,000 个单词的词汇,您应该能够进行一般性的交谈。“词汇编码”将对每个单词而不是每个字母进行编码,并将它们封装在一个句子中。
在这个例子中,String 中的每个 Token 都被编码为一个 Integer。这里的编码方案只是简单地根据单词使用的广义统计排名分配一个int值,并为问号分配一个常数。
最终,一个单词同时具有拼写和含义。任何“词汇编码”都会保留整个句子的含义和意图,而不是特定于语言的。一个英文句子将被编码为“……语言中立的原子意义元素……”,然后可以将其重构为具有结构化句法形式和语法结构的任何语言。
“词法编码”技术的其他例子是什么?
如果您对单词使用统计数据的来源感兴趣:
http ://www.wordcount.org
java - Java 的命名实体识别库
我正在为 java 寻找一个简单但“足够好”的命名实体识别库(和字典),我正在寻找处理电子邮件和文档并提取一些“基本信息”,例如:姓名、地点、地址和日期
我一直在环顾四周,大多数似乎都偏重于 NLP 类项目。
有什么建议吗?
php - 产生真实单词的词干算法
我需要提取一段文本并从中提取“标签”列表。其中大部分是非常直接的。但是,我现在需要一些帮助来阻止生成的单词列表以避免重复。示例:社区/社区
我使用了 Porter Stemmer 算法的实现(顺便说一下,我正在用 PHP 编写):
http://tartarus.org/~martin/PorterStemmer/php.txt
这在一定程度上有效,但不会返回“真实”单词。上面的例子源于“commun”。
我试过“Snowball”(在另一个 Stack Overflow 线程中建议)。
http://snowball.tartarus.org/demo.php
对于我的示例(社区/社区),Snowball 源于“communiti”。
问题
有没有其他的词干算法可以做到这一点?有没有其他人解决过这个问题?
我目前的想法是,我可以使用词干算法来避免重复,然后选择我遇到的最短单词作为要显示的实际单词。
algorithm - 潜在狄利克雷分配、陷阱、技巧和程序
我正在尝试使用潜在狄利克雷分配来进行主题消歧和分配,我正在寻求建议。
- 哪个程序是“最好的”,其中最好的是最容易使用、最好的先验估计、快速的组合
- 我如何结合我对话题性的直觉。假设我认为我知道语料库中的某些项目确实属于同一类别,就像同一作者的所有文章一样。我可以将其添加到分析中吗?
- 在开始之前我应该知道任何意想不到的陷阱或提示吗?
我更喜欢任何程序都有 R 或 Python 前端,但我希望(并接受)我将处理 C。
string - 如何拆分多个连接词?
我有一个包含 1000 个左右条目的数组,示例如下:
我希望能够将这些拆分为各自的单词,例如:
我希望正则表达式可以解决问题。但是,由于没有边界可以停止,也没有任何类型的大写可以键入,我在想,可能需要某种对字典的引用?
我想它可以手工完成,但是为什么 - 当它可以用代码完成时!=) 但这让我很难过。有任何想法吗?