Ruby中的自然语言处理

时间:2009-06-16 02:53:18

标签: ruby artificial-intelligence nlp

我正在寻找一些句子分析(主要是针对Twitter应用程序)并推断出一些一般特征。在Ruby中有没有任何好的自然语言处理库?

Is there a good natural language processing library类似,但对于Ruby。我更喜欢非常一般的东西,但是任何领导都会受到赞赏!

11 个答案:

答案 0 :(得分:60)

三个优秀且成熟的NLP包是Stanford Core NLPOpen NLPLingPipe。有Stanford Core NLP工具(GPL许可证)以及OpenNLP工具(Apache许可证)的Ruby绑定。

在更具实验性的方面,我维护了一个在GPL下发布的Text Retrieval, Extraction and Annotation Toolkit(Treat),它为几乎所有与Ruby存在的NLP相关的gem提供了一个通用的API。以下的Treat的功能列表也可以作为与Ruby 1.9兼容的稳定自然语言处理宝石的良好参考。

  • 文本分段程序和标记程序(punkt-segmentertactful_tokenizersrx-englishscalpel
  • 英语,法语和德语的自然语言解析器以及英语(stanford-core-nlp)的命名实体提取。
  • 词语变形和结合(linguistics),词干(ruby-stemmeruea-stemmerlingua等。)
  • WordNet界面(rwordnet),POS标记器(rbtaggerengtagger等)
  • 语言(whatlanguage),日期/时间(chronickronicnickel),关键字(lda-ruby)提取。
  • 使用索引和全文搜索(ferret)进行文本检索。
  • 命名实体提取(stanford-core-nlp)。
  • 使用决策树(decisiontree),MLP(ruby-fann),SVM(rb-libsvm)和线性分类(tomz-liblinear-ruby-swig)进行基本机器学习。
  • 文字相似度指标(levenshtein-ffifuzzy-string-matchtf-idf-similarity)。

不包含在Treat中,但与NLP相关:hotwater(字符串距离算法),yomu(用于阅读.doc,.docx,.pages,.odt,.rtf的Apache Tiki的绑定器) ,.pdf),graph-rank(GraphRank的一个实现)。

答案 1 :(得分:23)

Ruby Linguistics有一些内容和一些链接,但它似乎与NLTK对于Python的任何内容都没有接近。

答案 2 :(得分:11)

您始终可以使用jruby并使用java库。

编辑:能够在jvm上本地执行ruby并轻松利用java库的能力对于rubyists来说是一个很大的优势。这是一个很好的选择,应该在这种情况下考虑。

Which NLP toolkit to use in JAVA?

答案 3 :(得分:9)

我发现了一篇很好的文章,详细介绍了Ruby here中的一些NLP算法。这包括词干分析器,日期时间解析器和语法分析器。

答案 4 :(得分:6)

TREAT - Text REtrieval和Annotation Toolkit - 是我所知道的最全面的Ruby工具包:https://github.com/louismullie/treat/wiki/

答案 5 :(得分:5)

还要考虑使用像MonkeyLearn这样的SaaS API。您可以通过机器学习轻松训练文本分类器并通过API进行集成。可以使用Ruby SDK

除了创建自己的分类器外,您还可以选择预先创建的模块,用于情感分析,主题分类,语言检测等。 我们还有关键字提取和实体等提取器,我们将不断添加更多公共模块。

其他不错的功能:

  • 您有一个用于创建/测试算法的GUI。
  • 算法在我们的云计算平台上运行得非常快。
  • 您可以与Ruby或任何其他编程语言集成。

答案 6 :(得分:4)

试试这个

https://github.com/louismullie/stanford-core-nlp

关于stanford-core-nlp gem

这个gem提供了对Stanford Core NLP包的高级Ruby绑定,这是一套用于标记化,句子分割,词性标注,词形还原以及英语,法语和德语解析的自然语言处理工具。该软件包还为英语提供命名实体识别和共同参考解析。

http://nlp.stanford.edu/software/corenlp.shtml 演示页面 http://nlp.stanford.edu:8080/corenlp/

答案 7 :(得分:4)

我在GitHub上维护了一个Ruby Natural Language Processing resources(库,API和演示文稿)列表,其中包含了其他答案中列出的库以及一些其他库。

答案 8 :(得分:2)

你需要更具体地说明这些“一般特征”是什么。

在NLP中,句子的“一般特征”可能意味着一百万种不同的东西 - 情感分析(即说话者的态度),基本的词性标注,人称代词的使用,句子是否包含主动或被动动词什么是动词的紧张和声音......

我不介意你是否对描述它是模糊的,但如果我们不知道你在问什么,我们就不太可能具体帮助你了。

我的一般建议,特别是对于NLP,你应该得到最适合工作的工具,而不是限制自己使用特定的语言。对于某些通用工具在任何地方都实现的任务,限制自己使用特定语言是合适的,但NLP不是其中之一。

与Twitter合作的另一个问题是,大量的句子会以奇怪而奇妙的方式被烘焙或压缩 - 大多数NLP工具都没有经过培训。为了提供帮助,NUS SMS Corpus包含“学生收集的大约10,000条SMS消息”。由于类似的限制和使用,分析可能有助于您使用Twitter进行探索。

如果你更具体,我会尝试列出一些有用的工具。

答案 9 :(得分:1)

我会查看Mark Watson的免费书Practical Semantic Web and Linked Data Applications, Java, Scala, Clojure, and JRuby Edition。他使用java,clojure,ruby和scala编写了关于NLP的章节。他还提供了所需资源的链接。

答案 10 :(得分:1)

对于寻找更轻巧,更易于实现的人来说,这个选项对我来说效果很好。

https://github.com/yohasebe/engtagger