2009-06-16 175 views
63

我期待做一些句子分析(主要针对twitter应用程序)并推断出一些一般特征。 Ruby中有这种类型的任何好的自然语言处理库吗?Ruby中的自然语言处理

类似于Is there a good natural language processing library,但是对于Ruby。我更喜欢一般的东西,但任何线索感谢!

+0

为什么不试试wit.ai?这是一项免费的外部服务。我写了一个封装了它们功能的gem:[wit_bot](// bensites.com/wit_bot) – 2016-04-03 22:19:17

回答

23

有一些东西在Ruby Linguistics和其中的一些链接,尽管它似乎并没有接近NLTK的Python版本。

2

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

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

我不介意你是否模糊地描述它,但如果我们不知道你在问什么,这是不太可能的,我们可以是特定的帮助你。

我的一般建议,特别是对于NLP,你应该得到最适合这项工作的工具,而不是将自己限制为一种特定的语言。限制自己使用某种特定的语言对于一些普遍工具在任何地方都可以实现的任务来说都很好,但是NLP不是其中的一种。

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

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

11

您可以随时使用jruby并使用java库。

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

Which NLP toolkit to use in JAVA?

+4

您不应该只是说应该使用java库,而应该使用哪些java库。因为读者可能知道,它们甚至可能不存在。 – 2010-12-03 17:33:25

+0

http://stackoverflow.com/questions/895893/which-nlp-toolkit-to-use-in-java – jshen 2012-04-26 20:35:07

9

我发现一个很好的文章,详细说明红宝石here一些NLP算法。这包括词干分析器,日期时间分析器和语法分析器。

60

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

在事物的更实验方面,我维护一个在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),日期/时间(chronic,kronic,nickel),关键字(lda-ruby)提取。
  • 带索引和全文搜索的文本检索(ferret)。
  • 命名实体提取(stanford-core-nlp)。 (decisiontree),MLP(ruby-fann),SVM(rb-libsvm)和线性分类(tomz-liblinear-ruby-swig)的基本机器学习。
  • 文本相似度量度(levenshtein-ffi,​​,tf-idf-similarity)。

不包括在治疗,但相关的NLP:hotwater(字符串距离算法),yomu(粘合剂到Apache忻用于读取.DOC,.DOCX,.PAGES,的.odt,.RTF,.PDF), graph-rank(GraphRank的实现)。

5

还要考虑使用SaaS的API,如MonkeyLearn。您可以使用机器学习轻松地训练文本分类器,并通过API进行集成。有一个Ruby SDK可用。

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

很好的特性:

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