2011-05-03 73 views
4

我需要將文本或單詞分類到特定類別。例如,文本「Pink Floyd」應該被歸類爲「音樂」或「維基媒體」,如'科技'或'愛因斯坦'爲'科學'。使用Java的文本分類

這怎麼辦?有沒有一種方法可以使用DBpedia相同?如果沒有,數據庫必須不時進行培訓,對吧?

+0

機器學習是唯一真正會如果術語在上下文中使用,那麼在這裏幫助你,否則它是一個基本的字典查找任務,可能有一些模糊的猜測來匹配拼寫錯誤和「愛因斯坦」與「阿爾伯特愛因斯坦」問題。你在哪裏得到你需要分類的術語?閱讀文字或只是一個大的條款清單? – Thien 2011-06-11 21:49:18

+0

閱讀文本,Thien。我只是從句子中提取可能的名詞和形容詞,並根據這些術語對文本進行分類。 – madCode 2011-06-17 06:21:24

回答

3

這是一個text classification的問題。 Manning, Raghavan and Schütze's Information Retrieval book chapter是一個很好的介紹。我認爲你不需要DBPedia和NER,只需要一個小標籤的訓練數據集,其中包含足夠的標記示例,供所有課程使用。

+0

有沒有我可以遵循的任何教程來應用此模型? – 2012-04-19 06:22:31

+0

嘗試斯坦福大學在線NLP課程的第3周:https://class.coursera.org/nlp/lecture/preview – 2012-04-19 08:24:16

1

這是深入研究的named entity recognition的問題。除非您特別需要推出自己的技術(提示:通常是一個難題),否則使用Gate或其中一種在線服務(例如TSO的Data Enrichment Service)將是一個不錯的選擇。另一種在線服務是OpenCalais

+1

實際上,命名實體識別/分類是在運行文本中這樣做的任務,並且通常用更廣泛的類別來完成。 – 2011-05-03 10:23:46

3

是的,DBpedia可能是這類問題的不錯選擇。你必須

  1. 壁球DBpedia的類別結構,使你得到正確的粒度(例如,平克·弗洛伊德的Capitol Records artists下所列出的其他類別的一臺主機,但不能直接下Music)。也許可以選擇幾個大類,並試圖找出你的概念是否在其中間接列出;
  2. 正常化文本;愛因斯坦被列爲Albert Einstein,而不是einstein
  3. 由於術語描述屬於多個頂級類別的多個概念和概念,因此處理模糊性。

這些問題可以使用機器學習來解決,但是我只看到如果從運行文本中提取這些術語以及相關特徵,它是如何完成的。但是在這種情況下,您可能會將整個文本分類爲您在步驟1中選擇的其中一個類別。

+0

感謝您的回覆。但我該如何去分類dbpedia結構?就像你說的那樣,它不在我喜歡的類別下。我想它工作正常,如果我想查詢隨機數據。 – madCode 2011-05-09 17:48:28

+0

@Madhura:DBpedia在其層次結構的頂部附近有'Music'和'Science'類別。你將不得不使用一些圖算法來找到它們。 – 2011-05-09 18:14:12

1
  1. 將您的類別映射到DBPedia。
  2. 帶lucene的索引選擇DBPedia類別和標籤數據與您的類別名稱。
  3. 搜索您的數據 - 標記化,標準化將由Lucene完成。

這種方法在某種程度上與KNN分類有關。

+0

你是說索引所有類別的建立一個Lucene的'文檔'的子類別和文章標題在每個?如果是這樣,那會有點類似於kNN,是的。我爲我的論文研究做了一些有點類似的事情,儘管在不同的數據上,它確實奏效。 – 2011-05-04 06:02:37

+0

是的,你理解正確。我用來創建Wikipedia類別的語義空間,這非常有用。 – yura 2011-05-17 08:59:23