SolarixGrammarEngineNET.SyntaxTreeNode.GetLinkType C# (CSharp) Method

GetLinkType() public method

public GetLinkType ( int LeafIndex ) : int
LeafIndex int
return int
        public int GetLinkType( int LeafIndex )
        {
            return GrammarEngine.sol_GetLeafLinkType( hNode, LeafIndex );
        }

Usage Example

コード例 #1
0
    private void ProcessTree(SolarixGrammarEngineNET.SyntaxTreeNode node, SolarixGrammarEngineNET.GrammarEngine2 gren)
    {
        int p_ekey   = node.GetEntryID();
        int id_class = gren.GetEntryClass(p_ekey);

        if (
            id_class == SolarixGrammarEngineNET.GrammarEngineAPI.NOUN_ru ||
            id_class == SolarixGrammarEngineNET.GrammarEngineAPI.PRONOUN2_ru ||
            id_class == SolarixGrammarEngineNET.GrammarEngineAPI.PRONOUN_ru
            )
        {
            SetLabel(node, string.Format("NP:{0}", chunk_num++), true);

            for (int ileaf = 0; ileaf < node.leafs.Count; ++ileaf)
            {
                SolarixGrammarEngineNET.SyntaxTreeNode leaf = node.leafs[ileaf];

                if (
                    node.GetLinkType(ileaf) == SolarixGrammarEngineNET.GrammarEngineAPI.RIGHT_GENITIVE_OBJECT_link ||
                    node.GetLinkType(ileaf) == SolarixGrammarEngineNET.GrammarEngineAPI.OBJECT_link
                    )
                {
                    SetLabel(leaf, string.Format("NP:{0}", chunk_num++), true);
                }
            }
        }
        else if (id_class == SolarixGrammarEngineNET.GrammarEngineAPI.PREPOS_ru)
        {
            SetLabel(node, string.Format("PN:{0}", chunk_num++), true);

            for (int ileaf = 0; ileaf < node.leafs.Count; ++ileaf)
            {
                SolarixGrammarEngineNET.SyntaxTreeNode leaf = node.leafs[ileaf];

                int p_ekey2   = leaf.GetEntryID();
                int id_class2 = gren.GetEntryClass(p_ekey2);
                if (
                    id_class2 == SolarixGrammarEngineNET.GrammarEngineAPI.NOUN_ru ||
                    id_class2 == SolarixGrammarEngineNET.GrammarEngineAPI.ADJ_ru ||
                    id_class2 == SolarixGrammarEngineNET.GrammarEngineAPI.PRONOUN_ru ||
                    id_class2 == SolarixGrammarEngineNET.GrammarEngineAPI.PRONOUN2_ru ||
                    id_class2 == SolarixGrammarEngineNET.GrammarEngineAPI.NUMBER_ru
                    )
                {
                    SetLabel(leaf, string.Format("NP:{0}", chunk_num++), true);
                }
            }
        }
        else if (
            id_class == SolarixGrammarEngineNET.GrammarEngineAPI.IMPERSONAL_VERB_ru ||
            id_class == SolarixGrammarEngineNET.GrammarEngineAPI.VERB_ru ||
            id_class == SolarixGrammarEngineNET.GrammarEngineAPI.INFINITIVE_ru
            )
        {
            SetLabel(node, string.Format("VP:{0}", chunk_num++), true);
            SetLabel(node, string.Format("VX:{0}", chunk_num++), false); // корневой глагол отмечаем как VX

            for (int ileaf = 0; ileaf < node.leafs.Count; ++ileaf)
            {
                SolarixGrammarEngineNET.SyntaxTreeNode leaf = node.leafs[ileaf];

                if (node.GetLinkType(ileaf) == SolarixGrammarEngineNET.GrammarEngineAPI.SUBJECT_link)
                {
                    SetLabel(leaf, string.Format("NP:{0}", chunk_num++), true);
                }
                else if (node.GetLinkType(ileaf) == SolarixGrammarEngineNET.GrammarEngineAPI.OBJECT_link)
                {
                    SetLabel(leaf, string.Format("NP:{0}", chunk_num++), true);
                }
            }
        }

        for (int ileaf = 0; ileaf < node.leafs.Count; ++ileaf)
        {
            SolarixGrammarEngineNET.SyntaxTreeNode leaf = node.leafs[ileaf];
            ProcessTree(leaf, gren);
        }

        return;
    }
All Usage Examples Of SolarixGrammarEngineNET.SyntaxTreeNode::GetLinkType