catalyst
1.0.0
catalyst是為提高速度而建置的 C# 自然語言處理函式庫。受 spaCy 設計的啟發,它帶來了預訓練模型、對訓練單字和文件嵌入的開箱即用支援以及靈活的實體識別模型。
所有特定於語言的資料和模型均以 NuGet 套件的形式提供,您可以在此處找到所有套件。
新模型在最新版本的 Universal Dependency v2.7 上進行訓練。
我們還添加了使用流存儲和加載模型的選項:
// Creates and stores the model
var isApattern = new PatternSpotter ( Language . English , 0 , tag : " is-a-pattern " , captureTag : " IsA " ) ;
isApattern . NewPattern (
" Is+Noun " ,
mp => mp . Add (
new PatternUnit ( P . Single ( ) . WithToken ( " is " ) . WithPOS ( PartOfSpeech . VERB ) ) ,
new PatternUnit ( P . Multiple ( ) . WithPOS ( PartOfSpeech . NOUN , PartOfSpeech . PROPN , PartOfSpeech . AUX , PartOfSpeech . DET , PartOfSpeech . ADJ ) )
) ) ;
using ( var f = File . OpenWrite ( " my-pattern-spotter.bin " ) )
{
await isApattern . StoreAsync ( f ) ;
}
// Load the model back from disk
var isApattern2 = new PatternSpotter ( Language . English , 0 , tag : " is-a-pattern " , captureTag : " IsA " ) ;
using ( var f = File . OpenRead ( " my-pattern-spotter.bin " ) )
{
await isApattern2 . LoadAsync ( f ) ;
}
使用catalyst非常簡單,只需安裝其 NuGet 套件並將儲存設定為使用我們的線上儲存庫。這樣,模型將從磁碟延遲載入或從我們的線上儲存庫下載。另請查看一些範例項目,以獲取有關如何使用catalyst更多範例。
catalyst . Models . English . Register ( ) ; //You need to pre-register each language (and install the respective NuGet Packages)
Storage . Current = new DiskStorage ( " catalyst -models " ) ;
var nlp = await Pipeline . ForAsync ( Language . English ) ;
var doc = new Document ( " The quick brown fox jumps over the lazy dog " , Language . English ) ;
nlp . ProcessSingle ( doc ) ;
Console . WriteLine ( doc . ToJson ( ) ) ;
您也可以利用 C# 惰性求值和本機多執行緒支援來並行處理大量文件:
var docs = GetDocuments ( ) ;
var parsed = nlp . Process ( docs ) ;
DoSomething ( parsed ) ;
IEnumerable < IDocument > GetDocuments ( )
{
//Generates a few documents, to demonstrate multi-threading & lazy evaluation
for ( int i = 0 ; i < 1000 ; i ++ )
{
yield return new Document ( " The quick brown fox jumps over the lazy dog " , Language . English ) ;
}
}
void DoSomething ( IEnumerable < IDocument > docs )
{
foreach ( var doc in docs )
{
Console . WriteLine ( doc . ToJson ( ) ) ;
}
}
訓練新的 FastText word2vec 嵌入模型非常簡單:
var nlp = await Pipeline . ForAsync ( Language . English ) ;
var ft = new FastText ( Language . English , 0 , " wiki-word2vec " ) ;
ft . Data . Type = FastText . ModelType . CBow ;
ft . Data . Loss = FastText . LossType . NegativeSampling ;
ft . Train ( nlp . Process ( GetDocs ( ) ) ) ;
ft . StoreAsync ( ) ;
為了快速嵌入搜索,我們還在 NuGet 上發布了「分層可導航小世界」(HNSW) 演算法的 C# 版本,該演算法基於我們的 Microsoft HNSW.Net 分支。我們也在 GitHub 和 NuGet 上發布了用於降維的「統一流形逼近和投影」(UMAP) 演算法的 C# 版本。
文件 | |
---|---|
貢獻 | 如何為catalyst程式碼庫做出貢獻。 |
樣品 | 展示catalyst能力的範例項目 |
加入我們的 gitter 頻道 |