2013-04-29 90 views
2

我正在處理用戶在數據庫中添加一些文本的項目,同時保存還會將標記添加到他/她的條目中,以便其他人可以使用這些標記進行搜索。分別使用NLP和Ontology自動標記和分類文本

例:

文字:「下一個F1比賽是在西班牙」

標籤:「一級方程式」,「種族」,西班牙」

如果任何用戶將這些標籤搜索但我想要搜索「體育」或「汽車運動」或「歐洲」的用戶也應該得到這個條目,雖然這些標籤沒有明確地標記到條目中,但是因爲「一級方程式」是一種類型的「賽車運動」,這是一種「體育」和「西班牙」的類型在「歐洲」。

在我提交表格的那一刻,用戶在一個文本框中寫下他們的文本,然後將他們的標籤寫入下面的第二個文本框中,並提交。

這些標籤稍後會由管理員手動分類。因此,在上述情況下,管理員將手動將「西班牙」作爲「歐洲」的子元素。 (MS SQL Server層次結構列)

我認爲這可以通過使用一些Ontologies軟件來實現。 dotNetRdf,OWL ......但我不確定。我幾天前纔開始瞭解這個世界的這個方面,我不確定這些可以幫助我。這是解決方案,還是我正在考慮完全錯誤的東西?任何建議,以實現上述?

此外,在進行分類之前,我想自動從文本中選取標籤並將其作爲標籤填充到較低的文本框中。

爲此,我想我將不得不使用一些NLP服務?任何想法,哪一個使用,或任何其他建議?

回答

0

如果您正在尋找的關係足夠一般(即國家和大洲),本體可能會有所幫助。對於「比賽」與「運動」之間的語義關聯性。我會推薦一些可以利用的單詞(或標籤)之間的語義相似性。

基本上,如果您生成一個MxM矩陣建模不同標籤之間的依賴關係/相似性,您可以使用這些權重來獲得相似的概念。比如「比賽」和「運動」比「比賽」和「西班牙」更有關係。

如何計算權重?這可以通過多種技術解決,例如[顯式語義分析](http://en.wikipedia.org/wiki/Explicit_semantic_analysis)或[分佈語義](http://en.wikipedia.org/wiki/Distributional_semantics)技術。最簡單的度量標準之一是使用一些協同度量指標(即文件「種族」和「體育」的百分比一起出現)。

此外,您還可以使用更多的NLP技術,如同義詞。

你也可以將這些權重與本體論關係結合起來。如果你知道西班牙是歐洲的一部分,你可以在總體基礎上增加體重。

對於提取標籤,您應該查看實體提取,nltk可能是一個很好的工具。

我希望這會有所幫助。

0

在這種情況下,您正在使用的解決方案(MS SQL Server層次結構列)可以通過OWL本體(它是一個層次結構/分類法)進行補充。我給你舉一個例子,說明你的情況會如何,以及你能從中得到什麼。

有關體育的本體看起來像:

Class: Sport 

Class: Formula_1 
    SubClassOf: Motor_Sport 

Class: Motor_Sport 
    SubClassOf: Sport 

然後用程序的幫助稱爲推理你可以要求查詢,如:什麼是比更具體的東西Sport? (Sport的子類)

結果列表包含Motor_SportFormula_1。然後,您可以使用這些類來註釋您的數據。

一個好的入門方法是看Protégé OWL Tutorial

+0

感謝您的@loopasam。是本體/分類/ NLP這個世界的初學者。你的教程網站肯定會有所幫助。我會詳細介紹它。但是我想我在這裏有點困惑......比如像你上面提到的那樣,Motor_Sport將會成爲Formula_1的一個子類。誰將首先根據Formula_1對Motor_Sports進行分類。這是否會自動發生?或者有些必須手動完成? – 2013-04-30 10:42:30

+0

「Motor_Sport」斷言是「Formula_1」的超類,是手動完成的。這是做到這一點的唯一方法,這是你如何指定你的領域知識。然後,一旦建立了本體,您可以按照我的答案中的指示查詢它。這樣做的好處在於,您只需對信息進行一次整理,然後在其餘時間利用它。一些本體已經存在,所以我建議你在構建你自己的域之前就開始對你正在尋找的域進行搜索。如果你找到適合你的人,你可以用它來解決你的問題。 – loopasam 2013-04-30 10:54:26