我正在使用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) (. ?))))"] }]
答案 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);
}