2009-06-16 216 views
63

我期待做一些句子分析(主要針對twitter應用程序)並推斷出一些一般特徵。 Ruby中有這種類型的任何好的自然語言處理庫嗎?Ruby中的自然語言處理

類似於Is there a good natural language processing library,但是對於Ruby。我更喜歡一般的東西,但任何線索感謝!

+0

爲什麼不試試wit.ai?這是一項免費的外部服務。我寫了一個封裝了它們功能的gem:[wit_bot](// bensites.com/wit_bot) – 2016-04-03 22:19:17

回答

23

有一些東西在Ruby Linguistics和其中的一些鏈接,儘管它似乎並沒有接近NLTK的Python版本。

2

你需要更具體地瞭解這些「一般特徵」是什麼。

在NLP中,一個句子的「一般特徵」可能意味着一百萬個不同的事物 - 情感分析(即說話者的態度),基本的詞性標註,使用人稱代詞,句子是否包含主動或被動動詞,什麼是動詞的時態和語態...

我不介意你是否模糊地描述它,但如果我們不知道你在問什麼,這是不太可能的,我們可以是特定的幫助你。

我的一般建議,特別是對於NLP,你應該得到最適合這項工作的工具,而不是將自己限制爲一種特定的語言。限制自己使用某種特定的語言對於一些普遍工具在任何地方都可以實現的任務來說都很好,但是NLP不是其中的一種。

與Twitter一起工作的另一個問題是大量的句子會以一種奇怪而奇妙的方式被壓縮或壓縮 - 大多數NLP工具都沒有受過培訓。爲了幫助那裏,NUS SMS Corpus包括「約10000學生收集的SMS消息」。由於類似的限制和使用,分析可能有助於您使用Twitter進行探索。

如果您更具體,我會嘗試列出一些有用的工具。

11

您可以隨時使用jruby並使用java庫。

編輯:能夠在jvm上本地執行ruby並輕鬆利用java庫是rubyists的一大優點。這是一個很好的選擇,應該在這種情況下考慮。

Which NLP toolkit to use in JAVA?

+4

您不應該只是說應該使用java庫,而應該使用哪些java庫。因爲讀者可能知道,它們甚至可能不存在。 – 2010-12-03 17:33:25

+0

http://stackoverflow.com/questions/895893/which-nlp-toolkit-to-use-in-java – jshen 2012-04-26 20:35:07

9

我發現一個很好的文章,詳細說明紅寶石here一些NLP算法。這包括詞幹分析器,日期時間分析器和語法分析器。

60

三個優,成熟NLP包Stanford Core NLPOpen NLPLingPipe。有Ruby綁定到Stanford Core NLP工具(GPL許可證)以及OpenNLP工具(Apache許可證)。

在事物的更實驗方面,我維護一個在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),日期/時間(chronic,kronic,nickel),關鍵字(lda-ruby)提取。
  • 帶索引和全文搜索的文本檢索(ferret)。
  • 命名實體提取(stanford-core-nlp)。 (decisiontree),MLP(ruby-fann),SVM(rb-libsvm)和線性分類(tomz-liblinear-ruby-swig)的基本機器學習。
  • 文本相似度量度(levenshtein-ffi,​​,tf-idf-similarity)。

不包括在治療,但相關的NLP:hotwater(字符串距離算法),yomu(粘合劑到Apache忻用於讀取.DOC,.DOCX,.PAGES,的.odt,.RTF,.PDF), graph-rank(GraphRank的實現)。

5

還要考慮使用SaaS的API,如MonkeyLearn。您可以使用機器學習輕鬆地訓練文本分類器,並通過API進行集成。有一個Ruby SDK可用。

除了創建自己的分類器,您還可以選擇預先創建的模塊進行情感分析,主題分類,語言檢測等。 我們也有提取器,如關鍵字提取和實體,我們將繼續添加更多的公共模塊。

很好的特性:

  • 你有一個GUI創建/測試算法。
  • 算法在我們的雲計算平臺上運行得非常快。
  • 您可以與Ruby或任何其他編程語言集成。