2011-09-25 57 views
6

我想要一個單詞(例如「Apple」)並處理一個文本(或者更多),我想提出相關術語,例如:處理文檔蘋果和發現的iPod,iPhone,Mac是關係到「蘋果」條款。在文本中查找相關單詞的算法

如何解決這個任何想法?

+0

檢查了這一點:http://semantic-link.com/ –

回答

9

作爲一個起點:您的問題涉及到text mining

有兩種方法:統計方法和一種形式的自然語言處理(nlp)。

我不知道很多關於自然語言處理,但可以說說的統計方法:

  1. 你需要你的文檔的一些向量空間表示,看到 http://en.wikipedia.org/wiki/Vector_space_model http://en.wikipedia.org/wiki/Document-term_matrix http://en.wikipedia.org/wiki/Tf%E2%80%93idf

  2. 爲了學習語義,那就是:不同的詞意味着相同的詞,或者一個詞可以有不同的含義,你需要一個大的文本語料庫來學習。正如我所說這是一個統計方法,所以你需要大量的樣本。 http://www.daviddlewis.com/resources/testcollections/

    也許你有很多來自上下文的文檔要使用。這是最好的情況。

  3. 您必須從該語料庫中檢索潛在因素。最常見的有:

    這些方法涉及大量的數學。要麼挖它,要麼你必須找到好的圖書館。

我可以推薦以下書籍:

+0

對於像我這樣的傻瓜,我們只是建立一個大的共現矩陣。這告訴我們,單詞一起出現,實際上很體面。無論它們是同義詞還是那種東西......這就是AI並不存在,儘管UW的Hoifung Poon對這個(無監督語義解析)做了一些精細的研究。 – nflacco

2

像所有的AI,這是一個非常棘手的問題。你應該看看natural language processing以瞭解一些問題

一個非常非常簡單的方法可以是建立一個2d表的單詞,每對單詞的平均距離(窩rds),它們出現在文本中。顯然,你需要限制考慮的最大距離,以及可能的單詞數量。然後,在處理大量文本後,您將會看到某個單詞出現在同一個上下文中的頻率。

2

我會做的是獲取文本中的所有單詞並製作頻率列表(每個單詞出現的頻率)。也許還會增加一個啓發性因素,說明「蘋果」這個詞有多遠。然後閱讀多個文檔,並刪除所有文檔中不常見的單詞。然後根據關鍵字的頻率和距離確定優先級。當然,你會得到很多垃圾,並可能錯過一些相關的話,但通過調整啓發式,你至少應該得到一些像樣的比賽。

+0

思考更多地瞭解它,您還應該爲它提供一些與「Apple」無關的文本,並排除出現在這些文本中的文字。這將消除諸如「the」,「of」等常見單詞。 – Radu

1

您正在查找的技術稱爲Latent Semantic Analysis(LSA)。它有時也被稱爲潛在語義索引。該技術是基於相關概念在文本中一起出現的想法而運作的。它使用統計來建立單詞關係。給定一個足夠大的文檔語料庫,它肯定能解決你找到相關單詞的問題。