나는 마침내 내가 기존 NLP 파서를 찾을 제안 나 자신 :
public static Node getParseTree(String[] parseTokens, ArrayList<Node> leafNodeList)
{
Node top = new Node("TOP");
Node rest = getParseTree(parseTokens, 2, top, false, leafNodeList);
return top;
}
public static Node getParseTree(String[] parseTokens, int currIndex, Node lastNode, Boolean closeBrace, ArrayList<Node> leafNodeList)
{
if(currIndex>=parseTokens.length) return lastNode;
else if("(".equals(parseTokens[currIndex]))
{
Node newNode = lastNode.addChild(parseTokens[currIndex+1]);//The next token is the data for the new node constructed
return getParseTree(parseTokens, currIndex+2, newNode, false, leafNodeList);
}
else if(")".equals(parseTokens[currIndex]))
{
if(closeBrace) return getParseTree(parseTokens, currIndex+1, lastNode.getParent(), true, leafNodeList);
else return getParseTree(parseTokens, currIndex+1, lastNode, true, leafNodeList);
}
else //leaf node
{
Node newNode = lastNode.addChild(parseTokens[currIndex]);
leafNodeList.add(newNode);
return getParseTree(parseTokens, currIndex+2, lastNode.getParent(), true, leafNodeList);
}
}
Node test(String parseDesc)
{
parseDesc = parseDesc.replace("(", " (");
parseDesc = parseDesc.replace(")", ") ");
String[] parseDescTokens = parseDesc.trim().split("\\s+");
Node treeReqd = getParseTree(parseDescTokens, leafNodes);// Required Tree
}
을 그것을 밖으로했다. 자연어를 파싱하는 것은 매우 어렵습니다. –
@IraBaxter 이미 문장에 대한 구문 분석 트리가 있습니다. 이는 코퍼스의 여러 문장에 대해 수작업으로 수정되었습니다. 통계적인 NLP 파서를 사용하는 것은 단지 오류를 가져올 것입니다. – damned
문제에 대한 설명이 너무 짧아 일관된 답변을 얻을 수 없습니다. 질문에서 "나는 파서 트리를 생성하고 싶다"라고 말합니다. 이 주석에서 "이미 구문 분석 트리가 있습니다"라고 말합니다. 그건 꽤 혼란 스럽네요. 문제에 대해 추측 할 필요가없는 방식으로 질문을 작성하십시오. –