2011-03-26 56 views
2

在處理和分類自然語言的庫/開源軟件方面有什麼可用的?我有一個充滿字符串的數據庫,它是特定項目的用戶描述。我想對這些詞語進行分類,以排除無用詞,並根據學生的猜測來確定該詞語適合什麼類別(例如技術,體育,音樂)。分類自然語言字符串的技巧?

我意識到這是一個相當具體的要求,我的自然語言處理知識非常有限。我想知道什麼是最好的,如果可能的話,最簡單的計算方式是做出這種預測?

我寧願在Ruby中這樣做,但是Python或Java也是可以接受的。

+0

嗯,這聽起來像我在MTurk回來看到的東西。有關? – 2011-03-26 01:18:10

+0

我不得不穀歌MTurk找出那是什麼。所以我認爲這是一個沒有:) – Aidanc 2011-03-26 01:43:05

+0

我有很好的Perl答案給你,但顯然你不想聽到這些。好吧。 – tchrist 2011-03-26 02:17:55

回答

3

至於Python的,目前我可以建議考慮:

http://www.nltk.org/

它具有良好的文檔,以及大量的很多功能在自然語言處理領域的。此外,Ubuntu存儲庫中還有一個軟件包(python-nltk),因此安裝和試用很容易。

對於大多數情況下,您需要訪問高質量的語料庫。

2

不幸的是Ruby沒有質量NLP,但是如果你使用JRuby,你可以充分利用Java的質量NLP的如:

GATE

LingPipe

OpenNLP

+0

+1。我使用JRuby和OpenNLP編寫了一個工作原型,這是一次非常棒的體驗。 – 2011-03-26 21:45:04

1

任何編程語言的頂級語言庫之一稱爲Wordnet。它用於解析文本,分解文本並確定詞類。如果您看到IBM的沃森在電視節目Jeopardy上競爭,您看到了Wordnet的行動,因爲它是使用的技術之一。

有一個「WordNet for Ruby」寶石。我沒有使用它,但我多次使用Wordnet。希望Wordnet的安裝過程會變得更加容易,因爲這是過去的痛苦。

Perl有我使用過的Lingua::Wordnet模塊。另外,快速搜索「Python + wordnet」會返回幾個匹配結果。

1

所以你有一堆文本塊,你想分爲不同的類別。該問題與垃圾郵件過濾相同。除了spam filter只將郵件分爲兩類,但您有幾個,但相同的原則(Bayes' theorem)仍然適用。 A Naive Bayes classifier是解決該問題的最簡單和計算要求最低的方法之一。然後,您可以利用這些知識並使用更復雜的方法(如神經網絡)來製作更準確的分類。關於這個話題的好書是Programming Collective Intelligence

另請參見dANN這是一個具有Naive Bayes分類器實現和許多其他預測分析工具的Java庫。這個video about Google Predict顯示瞭如何將句子分類成語言。幾乎可以逐字分類地使用同樣的方法。