7

下面是問題 - 我有幾千個小文本片段,從幾個字到幾個句子的任何地方 - 最大的片段大約是磁盤上的2k。我想能夠比較每個,並計算相關性因素,以便我可以顯示用戶的相關信息。找到兩個文本主體的「相關性」有哪些好方法?

有什麼好方法可以做到這一點?是否有已知的算法可以做到這一點,是否有任何GPL解決方案等?

我不需要這個實時運行,因爲我可以預先計算一切。我更關心的是獲得比運行時更好的結果。

我只是想在去寫自己的東西之前問Stack Overflow社區。那裏有人在那裏找到了很好的解決方案。

+1

非常欠定義的問題。你認爲兩個文本是相互關聯的?常見主題?重複的短語?長度?複雜?字母頻率? – 2009-08-31 18:17:40

回答

2

這些文章可能會有所幫助。而這個問題關於Latent Semantic Analysis

您還可以查看Soundex中「發音相似」的發音。

+0

謝謝。潛在的語義分析看起來很有前途,我將不得不閱讀並看看實現它。 – Matt 2009-08-31 19:07:36

2

我從來沒有使用過它,但你可能想看看Levenshtein distance

+0

在很多情況下都能很好地工作 – 2009-08-31 18:19:52

+0

Levenshtein給出了編輯距離,而不是語義差異。 – Bob 2009-08-31 18:27:38

0

對於合理的大文本,這是相當可行的,然而對於較小的文本來說這很難。

我做到了一次這樣的,它工作得很好:

  • 過濾器的所有「一般」的話(如,一,在中,等...)(過濾器約10-30 %的話)
  • 計算其餘單詞的頻率,存儲最常見單詞的頂部x,這些是你的主題。
  • 作爲額外的步驟,您可以創建2/3/4個後續單詞組,並將它們與其他文本中的組進行比較。我用它來衡量普拉格式。
0

查看Manning和Raghavan關於MinHashing和搜索相似項目的筆記以及C#(?) version。我相信這些技術來自於Ullman和Motwani的研究。

0

語音算法

文章,Beyond SoundEx - Functions for Fuzzy Searching in MS SQL Server,展示瞭如何安裝和使用SimMetrics庫到SQL Server。這個庫可以讓你找到字符串之間的相對相似性,並且包含許多算法

我最終使用Jaro Winkler來匹配名稱。以下是我詢問有關SO上匹配名稱的更多信息:Matching records based on Person Name

一些基於Levenshtein Distance的算法也可在SimMetric庫中找到,並且可能在您的應用程序中很有用。

相關問題