```csharp title="extract_keywords.cs" using Kreuzberg; using System; using System.Collections.Generic; using System.Linq; var config = new ExtractionConfig { Keywords = new KeywordConfig { Algorithm = KeywordAlgorithm.YAKE, MaxKeywords = 10, MinScore = 0.3 } }; var result = KreuzbergLib.ExtractFileSync("research_paper.pdf", config); Console.WriteLine("Extracted Keywords:"); if (result.Metadata.Keywords != null) { foreach (var keyword in result.Metadata.Keywords.OrderByDescending(k => k.Score)) { Console.WriteLine($" - {keyword.Text}: {keyword.Score:F3}"); } } else { Console.WriteLine(" (No keywords extracted)"); } var tfidfConfig = new ExtractionConfig { Keywords = new KeywordConfig { Algorithm = KeywordAlgorithm.TfIdf, MaxKeywords = 15, MinScore = 0.2 } }; var tfidfResult = KreuzbergLib.ExtractFileSync("document.pdf", tfidfConfig); Console.WriteLine("\nTF-IDF Keywords:"); if (tfidfResult.Metadata.Keywords != null) { var topKeywords = tfidfResult.Metadata.Keywords .OrderByDescending(k => k.Score) .Take(10) .ToList(); foreach (var keyword in topKeywords) { Console.WriteLine($" - {keyword.Text}: {keyword.Score:F3}"); } } Console.WriteLine($"\nKeyword Extraction Summary:"); Console.WriteLine($" - Algorithm: YAKE"); Console.WriteLine($" - Total Keywords: {result.Metadata.Keywords?.Count ?? 0}"); Console.WriteLine($" - Top Keyword: {result.Metadata.Keywords?.FirstOrDefault()?.Text}"); ```