在處理和分類自然語言的庫/開源軟件方面有什麼可用的?我有一個充滿字符串的數據庫,它是特定項目的用戶描述。我想對這些詞語進行分類,以排除無用詞,並根據學生的猜測來確定該詞語適合什麼類別(例如技術,體育,音樂)。分類自然語言字符串的技巧?
我意識到這是一個相當具體的要求,我的自然語言處理知識非常有限。我想知道什麼是最好的,如果可能的話,最簡單的計算方式是做出這種預測?
我寧願在Ruby中這樣做,但是Python或Java也是可以接受的。
在處理和分類自然語言的庫/開源軟件方面有什麼可用的?我有一個充滿字符串的數據庫,它是特定項目的用戶描述。我想對這些詞語進行分類,以排除無用詞,並根據學生的猜測來確定該詞語適合什麼類別(例如技術,體育,音樂)。分類自然語言字符串的技巧?
我意識到這是一個相當具體的要求,我的自然語言處理知識非常有限。我想知道什麼是最好的,如果可能的話,最簡單的計算方式是做出這種預測?
我寧願在Ruby中這樣做,但是Python或Java也是可以接受的。
至於Python的,目前我可以建議考慮:
它具有良好的文檔,以及大量的很多功能在自然語言處理領域的。此外,Ubuntu存儲庫中還有一個軟件包(python-nltk),因此安裝和試用很容易。
對於大多數情況下,您需要訪問高質量的語料庫。
任何編程語言的頂級語言庫之一稱爲Wordnet。它用於解析文本,分解文本並確定詞類。如果您看到IBM的沃森在電視節目Jeopardy上競爭,您看到了Wordnet的行動,因爲它是使用的技術之一。
有一個「WordNet for Ruby」寶石。我沒有使用它,但我多次使用Wordnet。希望Wordnet的安裝過程會變得更加容易,因爲這是過去的痛苦。
Perl有我使用過的Lingua::Wordnet模塊。另外,快速搜索「Python + wordnet」會返回幾個匹配結果。
所以你有一堆文本塊,你想分爲不同的類別。該問題與垃圾郵件過濾相同。除了spam filter只將郵件分爲兩類,但您有幾個,但相同的原則(Bayes' theorem)仍然適用。 A Naive Bayes classifier是解決該問題的最簡單和計算要求最低的方法之一。然後,您可以利用這些知識並使用更復雜的方法(如神經網絡)來製作更準確的分類。關於這個話題的好書是Programming Collective Intelligence。
另請參見dANN這是一個具有Naive Bayes分類器實現和許多其他預測分析工具的Java庫。這個video about Google Predict顯示瞭如何將句子分類成語言。幾乎可以逐字分類地使用同樣的方法。
查看自然語言處理工具包列表http://en.wikipedia.org/wiki/List_of_natural_language_processing_toolkits。 這裏沒有提到一些: Weka,Mallet,Stanford分類器
嗯,這聽起來像我在MTurk回來看到的東西。有關? – 2011-03-26 01:18:10
我不得不穀歌MTurk找出那是什麼。所以我認爲這是一個沒有:) – Aidanc 2011-03-26 01:43:05
我有很好的Perl答案給你,但顯然你不想聽到這些。好吧。 – tchrist 2011-03-26 02:17:55