我正在寻找一些句子分析(主要是针对Twitter应用程序)并推断出一些一般特征。在Ruby中有没有任何好的自然语言处理库?
与Is there a good natural language processing library类似,但对于Ruby。我更喜欢非常一般的东西,但是任何领导都会受到赞赏!
答案 0 :(得分:60)
三个优秀且成熟的NLP包是Stanford Core NLP,Open NLP和LingPipe。有Stanford Core NLP工具(GPL许可证)以及OpenNLP工具(Apache许可证)的Ruby绑定。
在更具实验性的方面,我维护了一个在GPL下发布的Text Retrieval, Extraction and Annotation Toolkit(Treat),它为几乎所有与Ruby存在的NLP相关的gem提供了一个通用的API。以下的Treat的功能列表也可以作为与Ruby 1.9兼容的稳定自然语言处理宝石的良好参考。
punkt-segmenter
,tactful_tokenizer
,srx-english
,scalpel
)stanford-core-nlp
)的命名实体提取。linguistics
),词干(ruby-stemmer
,uea-stemmer
,lingua
等。)rwordnet
),POS标记器(rbtagger
,engtagger
等)whatlanguage
),日期/时间(chronic
,kronic
,nickel
),关键字(lda-ruby
)提取。ferret
)进行文本检索。stanford-core-nlp
)。decisiontree
),MLP(ruby-fann
),SVM(rb-libsvm
)和线性分类(tomz-liblinear-ruby-swig
)进行基本机器学习。levenshtein-ffi
,fuzzy-string-match
,tf-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来说是一个很大的优势。这是一个很好的选择,应该在这种情况下考虑。答案 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。
除了创建自己的分类器外,您还可以选择预先创建的模块,用于情感分析,主题分类,语言检测等。 我们还有关键字提取和实体等提取器,我们将不断添加更多公共模块。
其他不错的功能:
答案 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)
对于寻找更轻巧,更易于实现的人来说,这个选项对我来说效果很好。