2011-08-17 30 views
0

我有一個短語列表。每個短語可以是單個單詞或單詞列表。比較單詞或字符的百分比

我想比較一個短語與它的每個兄弟短語並排列那些匹配最多的短語。想到字符匹配或單詞匹配。然而,列表是相當髒的逗號和連字符,非封閉的括號等。

排名不一定非常準確。它是內容編輯的輔助工具。

列表示例:

Hello sir, how are you? 

排名弟妹這個階段在這個名單

Hello madam, how are you? 
How are you today? 
Today, are you well? 

有一個現有的功能都來幫助這個?

回答

1

我最近做了一些非常類似的事情。這裏是我的方法的改編版:

public IEnumerable<string> GetRankedPhrases(IEnumerable<string> phrases, string testPhrase) 
{ 
    return phrases 
     .Select(p => new { Phrase = p, Intersection = p.Intersect(testPhrase) }) 
     .OrderByDescending(pi => pi.Intersection.Count()) 
     .Select(pi => pi.Phrase); 
} 

請確保您有using System.Linq在你的代碼文件的頂部。

這比較phrases中的每個短語與測試短語。那些最常見的字符將浮動到列表的頂部。

+0

謝謝你的代碼。出色的起點。我在我的案例中發現它太慷慨。我要調整它,看看是否添加了一個規則,X的單詞必須匹配。或者,分開單詞並將字符與其他單詞進行匹配(哦,我已經把舌頭綁了起來)。 –

+0

的確,我的方法沒有任何過濾。它只是從共同字符的最高數量到最少。 – devuxer