有誰知道一個很好的.NET字典API?我對意義不感興趣,而是需要能夠以多種不同的方式查詢單詞 - 返回單詞x長度,返回部分匹配等等......詞典API(詞法)
16
A
回答
21
從像ASpell(http://aspell.net/)這樣的開源拼寫檢查器中獲取平面文本文件,並將其加載到List或任何您喜歡的結構中。
例如,
List<string> words = System.IO.File.ReadAllText("MyWords.txt").Split(new string[]{Environment.NewLine}).ToList();
// C# 3.0 (LINQ) example:
// get all words of length 5:
from word in words where word.length==5 select word
// get partial matches on "foo"
from word in words where word.Contains("foo") select word
// C# 2.0 example:
// get all words of length 5:
words.FindAll(delegate(string s) { return s.Length == 5; });
// get partial matches on "foo"
words.FindAll(delegate(string s) { return s.Contains("foo"); });
4
您可能想要查找Trie執行。這肯定有助於「以XYZ開頭的單詞」以及完全匹配。您可能希望將所有數據都放在多個數據結構中,每個數據結構都針對特定任務進行調整 - 例如一個用於anagrams,一個用於「按長度」等。與RAM相比,自然語言字典與RAM相比是相對較小的,所以如果你真的想快速查找,那可能是一條可行的路。
2
根據您的查詢如何參與將是,它可能是值得研究WordNet,這基本上是一個語義字典。它包括詞的部分,同義詞和其他類型的關係。
2
NetSpell(http://www.loresoft.com/netspell/)是用.NET編寫的拼寫檢查程序,它具有您可以使用的多種語言的文字列表。
2
我與Barry Fandango在這一個,但你可以做到這一點沒有LINQ。 .NET 2.0在List(T)類型上有一些很好的過濾方法。一個我的建議是
List(T).FindAll(Predicate(T)) : List(T)
這種方法將使每一個元素在列表中通過判斷方法,並返回返回「真」字的列表。因此,按照建議從開源詞典中將您的單詞加載到List(字符串)中。爲了找到長度爲5的所有的話...
List(String) words = LoadFromDictionary();
List(String) fiveLetterWords = words.FindAll(delegate(String word)
{
return word.Length == 5;
});
還是爲了以 'ABC' 的所有單詞......
List(String) words = LoadFromDictionary();
List(String) abcWords = words.FindAll(delegate(String word)
{
return word.StartsWith('abc');
});
相關問題
- 1. C++詞典API
- 2. Clojure詞典詞典
- 3. Marklogic值詞典和單詞詞典
- 4. 詞典的處理詞典
- 5. Python:詞典中的詞典?
- 6. 名詞/形容詞/其他詞典或詞典(普通詞)
- 7. 字典詞典
- 8. 字典詞典
- 9. 更改詞典詞典中的每個詞典的類型
- 10. 詞典
- 11. 通過詞典詞典進行迭代
- 12. C#詞典到詞典自動翻譯
- 13. 使用LINQ到詞典的新詞典
- 14. 詞典和LINQ:過濾詞典列表
- 15. 計數詞典中的詞典數量
- 16. 詞典和混合詞典的區別
- 17. 結合詞典的兩個詞典(Python)
- 18. 轉換詞典的詞典串
- 19. 選擇詞典的詞典使用LINQ
- 20. LINQ Query創建詞典詞典
- 21. 在Python中更新詞典詞典
- 22. 不能在詞典中使用詞典
- 23. 詞頻與詞典理解
- 24. Swift詞典表示法
- 25. Django模型 - 將詞組鏈接到詞典/詞典中的單個詞
- 26. 連接詞典
- 27. 詞典在Python
- 28. ProviderCollection到詞典
- 29. 詞典檢查
- 30. JSON到詞典
我相信,代碼需要C#3.0,並且或者.NET 3.5。 NET 2.0與LINQBridge。在這方面,.NET 3.0沒有提供比.NET 2.0更有用的東西。 – 2008-12-03 11:15:36
的確,我已經在3.0中工作了一段時間了,所以我想我已經習慣了在我需要時使用LINQ。編輯爲包含非3.0樣本。 – 2008-12-03 14:03:33