2017-01-07 4 views
1

Я использую API лингвистики Microsoft. Я пытаюсь извлечь определенные маркеры из возвращаемого дерева. Я не вижу никакого синтаксического анализатора для перемещения по дереву в любой документации ...Parser for the Constituency Tree (API лингвистического анализа)

Один из подходов, который я рассматривал, заключался в использовании парсера Stanford NLP, но, похоже, он немного переполнен тем, что мне нужно.

Есть ли существующий парсер, который я мог бы использовать?

вот образец данных, который возвращается. например, что я могу использовать, чтобы извлечь "НПН" (Том)

[{ 
"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

Найти мой парсер-на-дереве (и roundtripping) исходный код по адресу:

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

ParseHelpers файл из проект Woundify. Одна из функций проекта - продемонстрировать вызов и потребление API от всех ведущих поставщиков услуг AI (Microsoft, Google, HPE, IBM, Wit, Hound и т. Д.).

Я редактировал в фрагменте использования из 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 John) (NNP Wayne)) (VP (VBZ)) (NP (DT a) (NN cowboy))) (...)), и я получаю за пределами ошибки границ. – CodeInColor

+0

Это вызов, который я использую: ParseHelpers.ConstituencyTreeFromText (newSent); – CodeInColor

+0

Я добавил в фрагмент кода из command.cs. Я попытаюсь выполнить более минимальный пример завтра – BSalita