|
@@ -20,6 +20,8 @@ namespace HyperCube.Pages
|
|
|
{
|
|
|
[Inject]
|
|
|
NavigationManager _navigationManager { get; set; }
|
|
|
+ [Inject]
|
|
|
+ AppData _appData { get; set; }
|
|
|
|
|
|
//const string FOLDER_NAME = "articles_storage";
|
|
|
const long MAX_FILE_SIZE = 5120000; //bytes
|
|
@@ -118,6 +120,9 @@ namespace HyperCube.Pages
|
|
|
_articleClone.FileHashSum = hash;
|
|
|
_article = (ArticleModel)_articleClone.Clone();
|
|
|
|
|
|
+ ReportModel report = _appData.Report;
|
|
|
+ report.FileName = file.Name;
|
|
|
+ report.FileSize = _memoryStream.Length.ToString();
|
|
|
|
|
|
_memoryStream.Position = 0;
|
|
|
byte[] content = _memoryStream.ToArray();
|
|
@@ -183,7 +188,7 @@ namespace HyperCube.Pages
|
|
|
|
|
|
Console.WriteLine($"Initializing SDK Pullenti ver {Pullenti.Sdk.Version} ({Pullenti.Sdk.VersionDate})... ");
|
|
|
Pullenti.Sdk.InitializeAll();
|
|
|
- Console.WriteLine($"OK (by ... ms), version {Pullenti.Ner.ProcessorService.Version}");
|
|
|
+ //Console.WriteLine($"OK (by ... ms), version {Pullenti.Ner.ProcessorService.Version}");
|
|
|
|
|
|
List<string> npt_tokens = new();
|
|
|
|
|
@@ -199,7 +204,8 @@ namespace HyperCube.Pages
|
|
|
if (npt == null)
|
|
|
continue;
|
|
|
// получилось, выводим в нормализованном виде
|
|
|
- System.Console.Write($"[{npt.GetSourceText()}=>{npt.GetNormalCaseText(null, Pullenti.Morph.MorphNumber.Singular, Pullenti.Morph.MorphGender.Undefined, false)}] ");
|
|
|
+ //System.Console.Write($"[{npt.GetSourceText()}=>{npt.GetNormalCaseText(null, Pullenti.Morph.MorphNumber.Singular, Pullenti.Morph.MorphGender.Undefined, false)}] ");
|
|
|
+ report.NounGroups += $"[{npt.GetSourceText()}=>{npt.GetNormalCaseText(null, Pullenti.Morph.MorphNumber.Singular, Pullenti.Morph.MorphGender.Undefined, false)}] ";
|
|
|
|
|
|
npt_tokens.Add(npt.GetNormalCaseText(null, Pullenti.Morph.MorphNumber.Singular, Pullenti.Morph.MorphGender.Undefined, false));
|
|
|
|
|
@@ -211,17 +217,19 @@ namespace HyperCube.Pages
|
|
|
// анализируем текст
|
|
|
Pullenti.Ner.AnalysisResult ar = proc.Process(new Pullenti.Ner.SourceOfAnalysis(plainText), null, null);
|
|
|
// результирующие сущности
|
|
|
- Console.WriteLine("\r\n==========================================\r\nEntities: ");
|
|
|
+ //Console.WriteLine("\r\n==========================================\r\nEntities: ");
|
|
|
foreach (Pullenti.Ner.Referent en in ar.Entities)
|
|
|
{
|
|
|
- Console.WriteLine($"{en.TypeName}: {en}");
|
|
|
+ //Console.WriteLine($"{en.TypeName}: {en}");
|
|
|
+ report.Entities += $"{en.TypeName}: {en}\r\n";
|
|
|
foreach (Pullenti.Ner.Slot s in en.Slots)
|
|
|
{
|
|
|
- Console.WriteLine($" {s.TypeName}: {s.Value}");
|
|
|
+ //Console.WriteLine($" {s.TypeName}: {s.Value}");
|
|
|
+ report.Entities += $" {s.TypeName}: {s.Value}<br>";
|
|
|
}
|
|
|
}
|
|
|
// пример выделения именных групп
|
|
|
- Console.WriteLine("\r\n==========================================\r\nNoun groups: ");
|
|
|
+ //Console.WriteLine("\r\n==========================================\r\nNoun groups: ");
|
|
|
for (Pullenti.Ner.Token t = ar.FirstToken; t != null; t = t.Next)
|
|
|
{
|
|
|
// токены с сущностями игнорируем
|
|
@@ -232,7 +240,8 @@ namespace HyperCube.Pages
|
|
|
// не получилось
|
|
|
if (npt == null)
|
|
|
continue;
|
|
|
- Console.WriteLine(npt.ToString());
|
|
|
+ //Console.WriteLine(npt.ToString());
|
|
|
+ report.EntitiesNounGroups += $"{npt}<br>";
|
|
|
// указатель перемещаем на последний токен группы
|
|
|
t = npt.EndToken;
|
|
|
}
|
|
@@ -240,13 +249,14 @@ namespace HyperCube.Pages
|
|
|
using (Pullenti.Ner.Processor proc = Pullenti.Ner.ProcessorService.CreateSpecificProcessor(Pullenti.Ner.Keyword.KeywordAnalyzer.ANALYZER_NAME))
|
|
|
{
|
|
|
Pullenti.Ner.AnalysisResult ar = proc.Process(new Pullenti.Ner.SourceOfAnalysis(plainText), null, null);
|
|
|
- Console.WriteLine("\r\n==========================================\r\nKeywords1: ");
|
|
|
+ //Console.WriteLine("\r\n==========================================\r\nKeywords1: ");
|
|
|
foreach (Pullenti.Ner.Referent en in ar.Entities)
|
|
|
{
|
|
|
if (en is Pullenti.Ner.Keyword.KeywordReferent)
|
|
|
- Console.WriteLine(en.ToString());
|
|
|
+ //Console.WriteLine(en.ToString());
|
|
|
+ report.Keywords1 += $"{en}<br>";
|
|
|
}
|
|
|
- Console.WriteLine("\r\n==========================================\r\nKeywords2: ");
|
|
|
+ //Console.WriteLine("\r\n==========================================\r\nKeywords2: ");
|
|
|
for (Pullenti.Ner.Token t = ar.FirstToken; t != null; t = t.Next)
|
|
|
{
|
|
|
if (t is Pullenti.Ner.ReferentToken)
|
|
@@ -255,12 +265,12 @@ namespace HyperCube.Pages
|
|
|
if (kw == null)
|
|
|
continue;
|
|
|
string kwstr = Pullenti.Ner.Core.MiscHelper.GetTextValueOfMetaToken(t as Pullenti.Ner.ReferentToken, Pullenti.Ner.Core.GetTextAttr.FirstNounGroupToNominativeSingle | Pullenti.Ner.Core.GetTextAttr.KeepRegister);
|
|
|
- Console.WriteLine($"{kwstr} = {kw}");
|
|
|
+ //Console.WriteLine($"{kwstr} = {kw}");
|
|
|
+ report.Keywords2 += $"{kwstr} = {kw}<br>";
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- Console.WriteLine("Over!");
|
|
|
-
|
|
|
+ Console.WriteLine("Analysis is over!");
|
|
|
|
|
|
int res = (from x in npt_tokens
|
|
|
select x).Distinct().Count();
|
|
@@ -274,8 +284,11 @@ namespace HyperCube.Pages
|
|
|
select new { Name = g.Key, Count = count1 };
|
|
|
foreach (var result in query)
|
|
|
{
|
|
|
- Console.WriteLine($"Name: {result.Name}, Count: {result.Count}");
|
|
|
+ report.NounGroupsSorted += $"{result.Name}, Count: {result.Count}<br>";
|
|
|
+ //Console.WriteLine($"Name: {result.Name}, Count: {result.Count}");
|
|
|
}
|
|
|
+
|
|
|
+ _navigationManager.NavigateTo("report");
|
|
|
}
|
|
|
else
|
|
|
{
|