NLP with Ruby
[RubyML | RubyDataScience | RubyInterop]
> 在 Ruby 中进行文本处理的有用资源
这个精选列表包括 awesome 有关文本计算处理的资源、图书馆、信息源 在人类语言中 Ruby programming language. 该字段通常被称为 NLP, Computational Linguistics, HLT (人类语言技术) 并可与 Artificial Intelligence, Machine Learning, Information Retrieval, Text Mining, Knowledge Extraction 及其他相关学科.
此列表来自我们在语言模型和 NLP 工具方面的日常工作. Read why 这个列表很棒. 我们 FAQ 描述了 您可能感兴趣的重要决定和有用的答案.
每个 contribution 欢迎! 通过pull添加链接 请求或创建问题以开始讨论.
跟着我们 Twitter
and please spread the word using the #RubyNLP
hash tag!
Tutorials¶
请帮助我们填写此部分! :笑脸:
NLP Pipeline Subtasks¶
NLP 管道以纯文本开始.
Pipeline Generation¶
- composable_operations - 操作管道的定义框架.
- ruby-spark - 具有易于理解的 DSL 的 Spark 绑定.
- phobos - 简化的 Ruby 客户端 Apache Kafka.
- parallel - 用于在多个 CPU 或多个线程中并行执行的主管.
- pwrake - Rake 扩展以并行运行本地和远程任务.
Multipurpose Engines¶
- open-nlp - Ruby 绑定 OpenNLP 工具包.
- stanford-core-nlp - 斯坦福大学的 Ruby 绑定 CoreNLP 工具.
- treat - Ruby 的自然语言处理框架(如 NLTK 对于 Python).
- nlp_toolz - 包装一些 OpenNLP 类和 原本 Berkeley Parser.
- open_nlp - JRuby 绑定 OpenNLP 工具包.
- ruby-spacy — spaCy NLP 库的包装器模块,通过 PyCall.
On-line APIs¶
- alchemyapi_ruby - 适用于 AlchemyAPI/Bluemix 的旧版 Ruby SDK.
- wit-ruby - Ruby 客户端库 Wit.ai 语言理解平台.
- wlapi - Ruby 客户端库 Wortschatz Leipzig 网页服务.
- monkeylearn-ruby - 情绪 分析、主题建模、语言检测、命名实体识别 基于 Ruby 的 Web API 客户端.
- google-cloud-language - Google 的 Ruby 自然语言服务 API.
Language Identification¶
语言识别是每个 NLP 管道中的第一个关键步骤之一.
- scylla - 语言分类和识别.
Segmentation¶
标记化、单词和句子边界检测和消歧的工具.
- tokenizer - 简单的多语言分词器. [tutorial]
- pragmatic_tokenizer - 将字符串拆分为标记的多语言分词器.
- nlp-pure - 在纯 Ruby 中实现的自然语言处理算法具有最小的依赖性.
- textoken - 简单且可自定义的文本标记化库.
- pragmatic_segmenter - 使用许多 cookie 的词边界消歧.
- punkt-segmenter - Punkt Segmenter 的纯 Ruby 实现.
- tactful_tokenizer - 用于不同语言的基于 RegExp 的分词器.
- scapel - 句子边界消歧工具.
Lexical Processing¶
Stemming¶
词干提取是信息检索中用来描述信息检索过程的术语 将字形简化为某种基本表示形式. 应区分词干 from Lemmatization 因为“茎”不一定有 语言动机.
- ruby-stemmer - Ruby-Stemmer 将 SnowBall API 公开给 Ruby.
- uea-stemmer - 用于搜索和索引的保守词干分析器.
Lemmatization¶
词形还原被认为是寻找单词基本形式的过程. 引理 经常收录在字典中.
- lemmatizer - 基于 WordNet 的英文文本 Lemmatizer.
Lexical Statistics: Counting Types and Tokens¶
- wc - 计算文本中单词出现次数的工具.
- word_count -
String
和Hash
对象的单词计数器. - words_counted - 纯 Ruby 库使用不同的自定义选项统计单词.
Filtering Stop Words¶
- stopwords-filter - 过滤和 基于 SnowBall lemmatizer 的停止词词典.
Phrasal Level Processing¶
- n_gram - N-Gram 生成器.
- ruby-ngram - 将单词和短语分解为 ngram.
- raingrams - 用纯 Ruby 编写的灵活且通用的 ngrams 库.
Syntactic Processing¶
Constituency Parsing¶
- stanfordparser - 斯坦福解析器的基于 Ruby 的包装器.
- rley - 纯 Ruby 实现 Earley 上下文无关选区语法的解析算法.
- rsyntaxtree - 基于 Ruby 语法树的可视化 RMagick. [dep: ImageMagick]
Semantic Analysis¶
- amatch - 字符串之间的五种距离类型集(包括 Levenshtein、Sellers、Jaro-Winkler、“对距离”).
- damerau-levenshtein - 使用 Damerau-Levenshtein 算法计算编辑距离.
- hotwater - 快速 Ruby FFI 字符串编辑距离算法.
- levenshtein-ffi - 快速字符串编辑距离计算,使用 Damerau-Levenshtein 算法.
- tf_idf - 纯 Ruby 中的词频/逆文档频率.
- tf-idf-similarity - 使用 TF/IDF 计算文本之间的相似度.
Pragmatical Analysis¶
- SentimentLib - 简单的可扩展情感分析 gem.
High Level Tasks¶
Spelling and Error Correction¶
- gingerice - 拼写和语法更正通过 Ginger 应用程序接口.
- hunspell-i18n - Ruby 绑定到标准 Hunspell 拼写检查器.
- ffi-hunspell - 基于 FFI 的 Ruby 绑定 Hunspell.
- hunspell - Ruby 绑定到 Hunspell 通过 Ruby C API.
Text Alignment¶
- alignment - 双语文本对齐例程(Gale-Church 实现).
Machine Translation¶
- google-api-client - 谷歌 API 红宝石客户端.
- microsoft_translator - 微软翻译器 API 的 Ruby 客户端.
- termit - 谷歌翻译在您的终端中进行语音合成.
- zipf - BLEU 和其他基本算法的实现.
Sentiment Analysis¶
Numbers, Dates, and Time Parsing¶
- chronic - 纯 Ruby 自然语言日期解析器.
- chronic_between - 用于日期和时间范围的简单 Ruby 自然语言解析器.
- chronic_duration - 经过时间的纯 Ruby 解析器.
- kronic - 解析和格式化人类可读日期的方法.
- nickel - 从自然措辞的文本中提取日期、时间和消息信息.
- tickle - 用于重复发生和重复事件的解析器.
- numerizer - 用于英语数字表达式的 Ruby 解析器.
Named Entity Recognition¶
Text-to-Speech-to-Text¶
- espeak-ruby - 用于利用“espeak”和“lame”创建文本转语音 mp3 文件的小型 Ruby API.
- tts - 使用谷歌翻译服务的文本到语音转换.
- att_speech - AT&T Speech API 上的 Ruby 包装器,用于语音到文本.
- pocketsphinx-ruby - Pocketsphinx 绑定.
Dialog Agents, Assistants, and Chatbots¶
- chatterbot - 简单的基于 ruby 的 Twitter Bot 框架,使用 OAuth 进行身份验证.
- lita - 高度可扩展的聊天操作机器人框架,使用持久存储编写 Redis.
Linguistic Resources¶
- rwordnet - 纯 Ruby 自包含的 API 库,用于 Princeton WordNet®.
- wordnet - 性能调优绑定 Princeton WordNet®.
Machine Learning Libraries¶
Machine Learning 算法 in pure Ruby or written in other programming languages with appropriate bindings 对于红宝石.
有关更多最新列表,请查看 [Awesome ML with Ruby][ml-with-ruby] 列表.
- rb-libsvm - 用 Ruby 支持向量机.
- weka - Weka 的 JRuby 绑定,通过 Weka 实现的不同 ML 算法.
- decisiontree - 纯 Ruby 中的决策树 ID3 算法 [post].
- rtimbl - 来自 Timbl 框架的基于记忆的学习者.
- classifier-reborn - 允许贝叶斯和其他类型分类的通用分类器模块.
- lda-ruby - 红宝石实现 LDA (潜在狄利克雷分配)用于自动主题建模和文档聚类.
- liblinear-ruby-swig - LIBLINEAR 的 Ruby 接口(在文本分类方面比 LIBSVM 更有效).
- linnaeus - Redis 支持的贝叶斯分类器.
- maxent_string_classifier - 基于 OpenNLP Maxent 框架的字符串数据的 JRuby 最大熵分类器.
- naive_bayes - 简单朴素贝叶斯分类器.
- nbayes - 朴素贝叶斯的全功能 Ruby 实现.
- omnicat - 用于文本分类的通用机架框架.
- omnicat-bayes - 作为 OmniCat 分类器策略的朴素贝叶斯文本分类实现.
- ruby-fann - Ruby 绑定到 Fast Artificial Neural Network Library (FANN).
- rblearn - 特征提取和交叉验证库.
Data Visualization¶
请参阅 Data Visualization [Data Science with Ruby][ds-with-ruby] 列表部分.
Optical Character Recognition¶
- tesseract-ocr - 基于 FFI 的包装器 Tesseract OCR Engine.
Text Extraction¶
- yomu - 用于从文件和文档中提取文本和元数据的库 使用 Apache Tika 内容分析工具包.
Full Text Search, Information Retrieval, Indexing¶
- rsolr - Ruby 和 Rails 客户端库 Apache Solr.
- sunspot - 以 Rails 为中心的客户端 Apache Solr.
- thinking-sphinx - Active Record 使用插件 Sphinx 在(不仅)基于 Rails 的项目中.
- elasticsearch - Ruby 客户端和 API Elasticsearch.
- elasticsearch-rails - Ruby 和 Rails 集成 Elasticsearch.
- google-api-client - Ruby API 库用于 Google 服务.
Language Aware String Manipulation¶
用于语言感知字符串操作的库,即搜索、模式匹配、 需要有关信息的大小写转换、转码、正则表达式 底层语言.
- fuzzy_match - 模糊字符串与距离度量和正则表达式的比较.
- fuzzy-string-match - Ruby 的模糊字符串匹配库.
- active_support -
RoR
ActiveSupport
gem 有各种可以处理大小写的字符串扩展. - fuzzy_tools - Ruby 中的模糊搜索工具集已针对准确性进行了调整.
- u - U 扩展了 Ruby 的 Unicode 支持.
- unicode - Unicode 规范化库.
- CommonRegexRuby - 在一个字符串中查找很多种常见的信息.
- regexp-examples - 生成与给定正则表达式匹配的字符串.
- verbal_expressions - 使困难的正则表达式变得简单.
- translit_kit - 将希伯来语和意第绪语文本音译为拉丁字符.
- re2 - 用于文本挖掘和文本提取的高速正则表达式库.
- regex_sample - 从给定的正则表达式生成样本字符串.
- iuliia — 以多种可能的方式将西里尔字母音译为拉丁字母(由 reference implementation).
Articles, Posts, Talks, and Presentations¶
- 2019
- 使用 Ruby 从图像中提取文本 by aonemd [post | code]
- 2018
- 自然语言处理和推文情感分析 by Cassandra Corrales [post]
- 2017
- _Google NLP API 与 Ruby 相遇_作者: Aja Hammerly [post] -_语法不是一切:Rubyists 的 NLP_作者 Aja Hammerly [slides] -_JRuby 上的科学计算_作者: Prasun Anand [slides | video | slides | slides]
- Ruby 中的 Unicode 规范化 by Starr Horne [post]
- 2016 -_在 Ruby 中快速创建 Telegram 机器人_作者: Ardian Haxha [tutorial] -_深度学习:Ruby 开发人员简介_作者: Geoffrey Litt [slides]
- 我如何使纯 Ruby word2vec 程序快 3 倍以上 by Kei Sawada [slides]
- Dōmo arigatō,Roboto 先生:使用 Ruby 进行机器学习 作者: Eric Weinstein [slides | video]
- 2015
- N-gram 分析的乐趣和利润 by Jesus Castello [tutorial] -_Ruby 使机器学习变得简单_作者: Lorenzo Masini [tutorial]
- 使用 Ruby 机器学习查找 Paris Hilton 语录 作者: Rick Carlino [tutorial] -_探索 Ruby 中的自然语言处理_作者: Kevin Dias [slides] -_Ruby 使机器学习变得简单_作者: Lorenzo Masini [post] -_Ruby 中的实用数据科学_作者:Bobby Grayson [slides]
- 2014 -_用 Ruby 进行自然语言解析_作者: Glauco Custódio [tutorial] -_揭开数据科学的神秘面纱:使用 Rails 和 Ngrams 分析会议谈话_作者: Todd Schneider [video | code] -_用 Ruby 进行自然语言处理_作者: Konstantin Tennhard [video | video | video | slides]
- 2013
- How to parse 'go' - Ruby 中的自然语言处理 by Tom Cartwright [slides | video]
- Ruby 中的自然语言处理 作者: Brandon Black [slides | video]
- 用 Ruby 进行自然语言处理:n-grams by Nathan Kleyn [tutorial | code] -_Seeking Lovecraft,第 1 部分:NLP 和 Treat Gem 简介_作者: Robert Qualls [tutorial]
- 2012 -_Ruby 机器学习,第一部分_作者: Vasily Vasinov [tutorial]
- 2011
- Ruby one-liners by Benoit Hamelin [post]
- Ruby 中的集群 Colin Drake [post/)]
- 2010
- bayes_motel – Bayesian classification for Ruby by Mike Perham [post]
- 2009
- 将 UEA-Lite Stemmer 移植到 Ruby by Jason Adams [post] -_Ruby 的 NLP 资源_作者: Jason Adams [post]
- 2008
- Ruby 中的支持向量机 (SVM) 作者: Ilya Grigorik [post]
- Ruby 实用文本分类 by Gleicon Moraes [post | code]
- 2007 -_Ruby 中的决策树学习_作者: Ilya Grigorik [post]
- 2006 -_Speak My Language:使用 Ruby 进行自然语言处理_作者: Michael Granger [slides | write-up | write-up]
Projects and Code Examples¶
- Going the Distance - 通过示例计算实现各种距离算法.
- Named entity recognition with Stanford NER and Ruby - Ruby 和 Java 中的 NER 示例以及一些 explanations.
- Words Counted - 可自定义的单词统计示例 words_counted.
- RSyntaxTree - 基于 Web 的句法树可视化演示.
Books¶
- Miller, Rob. 使用 Ruby 进行文本处理:从您周围的数据中提取价值. 实用程序员,2015 年. [link]
- Watson, Mark. 脚本智能:Web 3.0 信息收集和处理. 美联社,2010 年. [link]
- Watson, Mark. 实用语义网和关联数据应用程序. Lulu,2010 年. [link]
Community¶
Needs your Help!¶
本节中的所有项目对社区都非常重要,但需要 更多的关注. 如果您有空闲时间和奉献精神,请花几个小时 在这里的代码上.
- ferret - C 和 Ruby 中的信息检索.
- summarize - Ruby 原生包装器 Open Text Summarizer.
Related Resources¶
- Neural Machine Translation Implementations
- Awesome Ruby - 在其他很棒的项目中,有一个 NLP 相关项目的简短列表.
- Ruby NLP - NLP 的最先进的 Ruby 库集合.
- Speech and Natural Language Processing - NLP 相关资源的一般列表(大部分不适合 Ruby 程序员).
- Scientific Ruby - Ruby 的线性代数、可视化和科学计算.
- iRuby - 用于 Jupyter 的 IRuby 内核(正式名称为 IPython).
- Awesome OCR - 大量的 OCR(光学字符识别)资源.
- Awesome TensorFlow - 使用 TensorFlow 库进行机器学习.
- ImageMagick
License¶
Awesome NLP with Ruby
by Andrei Beliankou 和
Contributors.
在法律允许的范围内,将 CC0 与
Awesome NLP with Ruby
放弃了所有版权和相关或相邻的权利
到 Awesome NLP with Ruby
.
您应该已经收到一份 CC0 合法代码的副本以及此 工作. 如果没有,请参阅https://creativecommons.org/publicdomain/zero/1.0/ .
[红宝石]:https://www.ruby-lang.org/en/ 【动机】:https://github.com/arbox/nlp-with-ruby/blob/master/motivation.md
[ds-with-ruby]:https://github.com/arbox/data-science-with-ruby [ml-with-ruby]:https://github.com/arbox/machine-learning-with-ruby [更改-pr]:https://github.com/RichardLitt/knowledge/blob/master/github/amending-a-commit-guide.md