2017-01-07 29 views
1

私はMicrosofts Linguistics APIを使用しています。返されたツリーから特定のトークンを抽出しようとしています。どのドキュメントでも木をたどるためのパーサは見当たらない...Constituency Treeの構文解析ツール(言語解析API)

私が考えたアプローチの1つは、スタンフォード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

での私のパーサツリーへ(およびラウンドトリップ)ソースコード検索:

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

ParseHelpersはからのファイルでありますWoundifyプロジェクトこのプロジェクトの機能の1つは、主要なすべてのAIサービスプロバイダ(Microsoft、Google、HPE、IBM、Wit、Houndなど)からのA​​PIの呼び出しと消費を実証することです。

私は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); 
} 
+0

ありがとうございました!これは私が探しているもののように見えますが、正しく使用しているとは思いません。私はそれを送っています:(TOP(S)(NP(NNP Wayne))(VP(VBZ)(NP(DT a)(NNカウボーイ))) – CodeInColor

+0

これは私が使用している呼び出しです:ParseHelpers.ConstituencyTreeFromText(newSent); – CodeInColor

+0

私はcommand.csのコード断片を追加しました。私は明日より少しの例をフォローアップしようとします – BSalita