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

时间:2017-01-07 06:10:34

标签: microsoft-cognitive

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

我考虑过的一种方法是使用斯坦福NLP解析器但是对于我需要的东西来说似乎有点过分。

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

这里是返回的示例数据。例如,我可以用什么来提取“NNP”(汤姆)

[{
"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) (. ?))))"]  }]

1 个答案:

答案 0 :(得分:0)

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

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);
}