使用 Curiosity-AI/Catalyst 查找动词的词根形式

问题描述 投票:0回答:1

我正在尝试找到动词的词根形式。我通过管道运行文本,可以识别与

PartOfSpeech.VERB
匹配的所有标记,但我不知道如何从那里继续。

这是我到目前为止所拥有的:

const string text = "The disastrous cat runs after the fat field mouse.";
Catalyst.Models.English.Register();

Storage.Current = new DiskStorage(AppDomain.CurrentDomain.BaseDirectory);
var nlp = await Pipeline.ForAsync(Language.English);
var doc = new Document(text, Language.English);
nlp.ProcessSingle(doc);


foreach (var sentence in doc.TokensData)
{
    foreach (var token in sentence)
    {
        if(token.Tag == PartOfSpeech.VERB)
        {
            //  so here I'd like to the root form of the verb
        }
    }
}

非常感谢任何帮助。

c# nlp
1个回答
0
投票

以下代码(针对 .NET 8.0)演示了一种从屈折形式获取动词词根形式的方法。

(我已经以代码注释的形式注释了所需的三个 NuGet 包(带有版本)。大部分代码与上面的原始示例相同。)

//// Installed Curiosity.Library v24.10.52882
//// Installed Catalyst v1.0.51118
//// Installed Catalyst.Models.English v1.0.30952

using Catalyst;

using Mosaik.Core;

const string text = "The disastrous cat quickly runs after the fat field mouse.";
Catalyst.Models.English.Register();

Storage.Current = new DiskStorage(AppDomain.CurrentDomain.BaseDirectory);
var nlp = await Pipeline.ForAsync(Language.English);
var doc = new Document(text, Language.English);
nlp.ProcessSingle(doc);

foreach (var span in doc.Spans)
{
    foreach (var token in span.Tokens)
    {
        if (token.POS == PartOfSpeech.VERB)
        {
            Console.WriteLine($"Root of the verb '{token.Value}' is '{token.Lemma}'.");
        }
    }
}

Console.WriteLine();
Console.WriteLine("Complete; press any key.");
Console.ReadKey();

注意: 对于这个特定的句子,我在动词(“runs”)之前添加了一个副词(“quickly”)。如果没有这个,库就会错误地将“runs”解释为名词。根据您的源文本,这对您来说可能是一个问题,但我相信它与所提出的问题是分开的。

© www.soinside.com 2019 - 2024. All rights reserved.