首页 文章

Ruby中的自然语言处理[关闭]

提问于
浏览
63

我正在寻找一些句子分析(主要是针对Twitter应用程序)并推断出一些一般特征 . Ruby中有这种东西有什么好的自然语言处理库吗?

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

11 回答

  • 11

    Ruby Linguistics有一些东西和它的一些链接,虽然它似乎没有接近于NLTK对于Python而言 .

  • 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,.pdf的Apache Tiki的 Binders ),graph-rank(GraphRank的一个实现) ) .

  • 4

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

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

    Which NLP toolkit to use in JAVA?

  • 1

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

  • 4

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

  • 9

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

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

    其他不错的功能:

    • 您有一个用于创建/测试算法的GUI .

    • 算法在我们的 Cloud 计算平台上运行得非常快 .

    • 您可以与Ruby或任何其他编程语言集成 .

  • 6

    试试这个吧

    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/

  • 1

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

  • 2

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

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

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

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

    与Twitter合作的另一个问题是,大量的句子会以奇怪而奇妙的方式被烘焙或压缩 - 大多数NLP工具都没有经过培训 . 为了帮助那里,NUS SMS Corpus由"about 10,000 SMS messages collected by students"组成 . 由于类似的限制和使用,分析可能有助于您在Twitter的探索 .

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

  • 5

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

  • 23

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

    https://github.com/yohasebe/engtagger

相关问题