catalyst عبارة عن مكتبة معالجة لغة طبيعية C# مصممة للسرعة. مستوحى من تصميم SpaCy، فهو يوفر نماذج مدربة مسبقًا، ودعمًا خارج الصندوق لتدريب الكلمات وتضمين المستندات، ونماذج مرنة للتعرف على الكيانات.
يتم توفير جميع البيانات والنماذج الخاصة باللغة كحزم NuGet، ويمكنك العثور على جميع الحزم هنا.
يتم تدريب النماذج الجديدة على الإصدار الأحدث من Universal Dependeency 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 ( ) ;
لتضمين البحث بسرعة، قمنا أيضًا بإصدار إصدار C# من خوارزمية "العالم الصغير القابل للملاحة الهرمية" (HNSW) على NuGet، استنادًا إلى شوكة HNSW.Net الخاصة بشركة Microsoft. لقد أصدرنا أيضًا إصدار C# من خوارزمية "التقريب والإسقاط الموحد الموحد" (UMAP) لتقليل الأبعاد على GitHub وNuGet.
التوثيق | |
---|---|
يساهم | كيفية المساهمة في قاعدة بيانات catalyst . |
عينات | نماذج من المشاريع التي توضح قدرات catalyst |
انضم إلى قناة جيتر لدينا |