Ruby中的自然语言处理
我期待做一些句子分析(主要是twitter应用程序),并推断一些一般特征。 Ruby中有这种types的自然语言处理库吗?
类似于有一个很好的自然语言处理库,但对于Ruby。 我更喜欢一些非常一般的东西,但任何线索感谢!
Ruby语言学有一些东西,还有一些与之相关的链接,尽pipe它似乎并不接近于Python的NLTK 。
斯坦福大学的核心NLP , Open NLP和LingPipe是三种优秀和成熟的NLP软件包。 有Ruby绑定到斯坦福核心NLP工具(GPL许可证)以及OpenNLP工具(Apache许可证)。
在更多的实验方面,我维护了一个在GPL下发布的文本检索,提取和注释工具包 (Treat),为几乎所有与Ruby相关的NLP相关的gem提供了一个通用的API。 以下的Treat特性列表也可以作为与Ruby 1.9兼容的稳定的自然语言处理gem的一个很好的参考。
- 文本分段器和标记器(
punkt-segmenter
,tactful_tokenizer
,srx-english
,scalpel
) - 英语,法语和德语的自然语言分析器和英语命名实体提取(
stanford-core-nlp
)。 - 词汇变化和结合(
linguistics
),词干(ruby-stemmer
,uea-stemmer
,lingua
等) - WordNet接口(
rwordnet
),POS标签(rbtagger
,engtagger
等) - date/时间(
chronic
,kronic
,nickel
),关键字(lda-ruby
)提取。 - 文本检索与索引和全文search(
ferret
)。 - 命名实体提取(
stanford-core-nlp
)。 - 使用决策树(
decisiontree
),MLP(ruby-fann
fann),SVM(rb-libsvm
)和线性分类(tomz-liblinear-ruby-swig
)的基本机器学习。 - 文本相似度度量(
levenshtein-ffi
,fuzzy-string-match
,tf-idf-similarity
)。
不包含在Treat中,但与NLP相关: hotwater (string距离algorithm), yomu (Apache Tiki用于读取.doc,.docx,.pages,.odt,.rtf,.pdf的绑定), graph-rank的GraphRank)。
你总是可以使用jruby并使用java库。
编辑:能够在jvm本地做ruby,并轻松地利用java库是ruby的一大优点。 这是一个很好的select,应该在这样的情况下考虑。
在JAVA中使用哪个NLP工具包?
我在这里发现了一篇很好的文章,详细介绍了Ruby中的一些NLPalgorithm。 这包括词干分析器,date时间分析器和语法分析器。
TREAT – Text REtrieval and Annotation Toolkit – 是我所知道的Ruby最全面的工具包: https : //github.com/louismullie/treat/wiki/
另外考虑使用像MonkeyLearn这样的SaaS API。 您可以使用机器学习轻松地训练文本分类器,并通过API进行集成。 有一个Ruby SDK可用。
除了创build自己的分类器,您还可以select预先创build的模块进行情感分析,主题分类,语言检测等。 我们也有提取器,如关键字提取和实体,我们将继续添加更多的公共模块。
其他不错的function:
- 你有一个GUI来创build/testingalgorithm。
- algorithm在我们的云计算平台上运行得非常快。
- 您可以与Ruby或任何其他编程语言集成。
试试这个
https://github.com/louismullie/stanford-core-nlp
关于斯坦福核心nlpgem
这个gem提供了与Stanford Core NLP包的高级Ruby绑定,这是一套用于标记,句子分割,词性标注,词形和英语,法语和德语parsing的自然语言处理工具。 该软件包还为英语提供命名实体识别和共识解决。
http://nlp.stanford.edu/software/corenlp.shtml演示页http://nlp.stanford.edu:8080/corenlp/
我在GitHub上维护了Ruby自然语言处理资源 (库,API和演示文稿)的列表,其中涵盖了其他答案中列出的库以及其他一些库。
你需要更具体地了解这些“一般特征”是什么。
在NLP中,一个句子的“一般特征”可以表示一百万个不同的东西 – 情感分析(即说话者的态度),基本的词性标注,人称代词的使用,句子中是否包含主动或被动动词,什么是时态和动词的声音…
我不介意你是否模糊地描述它,但如果我们不知道你在问什么,那么我们就不太可能在帮助你。
我的一般build议,尤其是对于NLP,你应该得到最好的工具devise的工具,而不是限制自己的一种特定的语言。 限制自己使用特定的语言对于一些普遍工具在任何地方都可以实现的任务是很好的,但是NLP不是其中之一。
与Twitter合作的另一个问题是大量的句子将会以一种奇怪而奇妙的方式被压缩或压缩 – 大多数NLP工具都没有经过培训。 为此, 国大短信语料库由“学生收集的约1万条短信”组成。 由于类似的限制和使用,分析可能有助于您的Twitter探索。
如果你更具体,我会试着列出一些有用的工具。
我会检查出马克·沃森的免费书籍实用语义网和关联数据应用程序,爪哇,斯卡拉,Clojure和JRuby版 。 他有使用Java,clojure,ruby和scala的NLP章节。 他还提供了所需资源的链接。
对于寻求更轻量级和简单实现的人来说,这个选项对我来说效果不错。