This repo contains the sources of the Nevod library, as well as the code to build the Nevod NuGet package and the Negrep command-line utility for all supported platforms.
What is Nevod?
Nevod is a language and technology for pattern-based text search. It is specially aimed to rapidly reveal entities and their relationships in texts written in the natural language.
- Official Website: https://nevod.io/
- Language Tutorial: https://nevod.io/#/en/tutorial
- Language Reference: https://nevod.io/#/en/reference
- Playground: https://nevod.io/#/en/playground
The Nevod Web site is also an open-source project, hosted on GitLab: https://gitlab.com/nezaboodka/nevod.website
The Target Platform
The Nevod technology is based on the .NET Standard 2.0. It runs on Linux, Windows and macOS.
How Can I Use Nevod in My Project?
You can use Nevod in the following ways:
- Download source code and link it into your source tree.
- Add reference to the Nevod NuGet package.
- Download and use the command-line negrep utility, which is pre-compiled for Windows, Linux and macOS.
Example of Usage in C# Code
Below is the simple example that demonstrates usage of the Nevod library in C# code.
static void SimpleExample() { var patternPackage = PatternPackage.FromText("#Google = {'Google', ~'Google Drive'};"); var searchEngine = new TextSearchEngine(patternPackage); var searchResult = searchEngine.Search("Google but not Google Drive"); foreach (var tag in searchResult.GetTags()) Console.WriteLine(tag.GetText()); }
In the above example the pattern package is created from text with pattern definition. Then the search engine is created and used to search for the pattern in a given text string.
You may find this example in the Source/Example/Program.cs file.
There is also advanced example, which demonstrates advanced techniques like usage of package cache, package builder with options, stream-based text source, search options, as well as search result handling callback.
static void AdvancedExample(string packageName, string textFile) { // Create package cache. It should be a global static object in real life var packageCache = new PackageCache(); // Create pattern package var packageBuilder = new PackageBuilder( new PackageBuilderOptions() { SyntaxInformationBinding = true }, packageCache); var patternPackage = packageBuilder.BuildPackageFromFile(packageName); // Create parsed text source from text file stream var textReader = new StreamReader(textFile); var textSource = new StreamTextSource(textReader, shouldCloseReader: true, 64_000); // Create search engine with specific candidate limits var searchEngine = new TextSearchEngine( patternPackage, new SearchOptions() { CandidateLimit = 100_000, PatternCandidateLimit = 10_000 }); // Search and output pattern name for each match searchEngine.Search(textSource, (SearchEngine searchEngine, MatchedTag tag) => { Console.WriteLine(tag.PatternFullName); }); }
License
Nevod is licensed under Apache 2.0 license, which includes the patent license.
