我正在寻找一些句子分析(主要是针对Twitter应用程序)并推断出一些一般特征 . Ruby中有这种东西有什么好的自然语言处理库吗?
与Is there a good natural language processing library类似,但对于Ruby . 我更喜欢非常一般的东西,但是任何领导都会受到赞赏!
我正在寻找一些句子分析(主要是针对Twitter应用程序)并推断出一些一般特征 . Ruby中有这种东西有什么好的自然语言处理库吗?
与Is there a good natural language processing library类似,但对于Ruby . 我更喜欢非常一般的东西,但是任何领导都会受到赞赏!
11 回答
在Ruby Linguistics有一些东西和它的一些链接,虽然它似乎没有接近于NLTK对于Python而言 .
三个优秀且成熟的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
等)WordNet界面(
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,.pdf的Apache Tiki的 Binders ),graph-rank(GraphRank的一个实现) ) .
您始终可以使用jruby并使用java库 .
编辑:能够在jvm上本地执行ruby并轻松利用java库是rubyists的一大优势 . 这是一个很好的选择,应该在这种情况下考虑 .
Which NLP toolkit to use in JAVA?
我发现了一篇很好的文章,详细介绍了Ruby here中的一些NLP算法 . 这包括词干分析器,日期时间解析器和语法分析器 .
TREAT - Text REtrieval和Annotation Toolkit - 是我所知道的最全面的Ruby工具包:https://github.com/louismullie/treat/wiki/
还要考虑使用MonkeyLearn等SaaS API . 您可以通过机器学习轻松训练文本分类器并通过API进行集成 . 有一个Ruby SDK可用 .
除了创建自己的分类器,您还可以选择预先创建的模块,用于情感分析,主题分类,语言检测等 . 我们还有关键字提取和实体等提取器,我们将不断添加更多公共模块 .
其他不错的功能:
您有一个用于创建/测试算法的GUI .
算法在我们的 Cloud 计算平台上运行得非常快 .
您可以与Ruby或任何其他编程语言集成 .
试试这个吧
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/
我在GitHub上维护了一个Ruby Natural Language Processing resources(库,API和演示文稿)列表,其中包含了其他答案中列出的库以及一些其他库 .
你需要更具体地说明这些“一般特征”是什么 .
在NLP中,句子的“一般特征”可能意味着一百万种不同的东西 - 情感分析(即说话者的态度),基本的词性标注,人称代词的使用,句子是否包含主动或被动动词,是什么动词的紧张和声音......
我不介意你是否对描述它是模糊的,但如果我们不知道你在问什么,我们就不太可能具体帮助你 .
我的一般建议,特别是对于NLP,您应该获得最适合工作的工具,而不是限制自己使用特定语言 . 对于某些通用工具在任何地方实施的任务,限制自己使用特定语言是合适的,但NLP不是其中之一 .
与Twitter合作的另一个问题是,大量的句子会以奇怪而奇妙的方式被烘焙或压缩 - 大多数NLP工具都没有经过培训 . 为了帮助那里,NUS SMS Corpus由"about 10,000 SMS messages collected by students"组成 . 由于类似的限制和使用,分析可能有助于您在Twitter的探索 .
如果您更具体,我会尝试列出一些有用的工具 .
我会查看Mark Watson的免费书Practical Semantic Web and Linked Data Applications, Java, Scala, Clojure, and JRuby Edition . 他使用java,clojure,ruby和scala编写了关于NLP的章节 . 他还提供了所需资源的链接 .
对于寻找更轻巧,更易于实现的人来说,这个选项对我来说效果很好 .
https://github.com/yohasebe/engtagger