选区树解析器(语言学分析 API)

Parser for Constituency Tree (Linguistics Analysis API)

我正在使用 Microsoft 的语言学 API。我正在尝试从返回的树中提取特定的标记。我在任何文档中都没有看到任何类型的用于遍历树的解析器...

我考虑过的一种方法是使用 Stanford NLP 解析器,但它似乎对我的需要来说有点矫枉过正。

是否有我可以使用的现有解析器?

这是返回的示例数据。例如,我可以用什么来提取 "NNP" (Tom)

[{
"analyzerId": "4FA79AF1-F22C-408D-98BB-B7D7AEEF7F04", 
"result": [ ["NNP",",","NNP","."], ["WRB","VBP","PRP","NN","."] ]  },

{
"analyzerId": "22A6B758-420F-4745-8A3C-46835A67C0D2", 
"result":["(TOP (S (NNP Hi) (, ,) (NNP Tom) (. !)))","(TOP (SBARQ (WHADVP (WRB How)) (SQ (VP (VBP are)) (NP (PRP you)) (NN today) (. ?))))"]  }]

在以下位置找到我的解析器到树(和往返)源代码:

https://github.com/BSalita/Woundify/blob/master/WoundifyShared/ParseHelpers.cs

ParseHelpers 是 Woundify 项目中的一个文件。该项目的功能之一是演示调用和使用来自所有领先 AI 服务提供商(Microsoft、Google、HPE、IBM、Wit、Hound 等)的 API。

我编辑了 command.cs 文件中的用法片段:

foreach (Newtonsoft.Json.Linq.JToken s in arrayOfResults)
{
    ConstituencyTreeNode root = ParseHelpers.ConstituencyTreeFromText(s.ToString());
    text = ParseHelpers.TextFromConstituencyTree(root); // roundtrip
    if (text != s.ToString()) // original and roundtrip must compare equal
        throw new FormatException();
    string words = ParseHelpers.WordsFromConstituencyTree(root);
    string[] printLines = ParseHelpers.FormatConstituencyTree(root);
    foreach (string p in printLines)
        Console.WriteLine(p);
}