我想将句子存储在 C/C++ 的数据结构中。示例这句话“这将文件上传到远程计算机。”
表示为:
(TOP
(S
(NP (DT This))
(VP
(VBZ uploads)
(NP (NNS files))
(PP (TO to) (NP (DT a) (JJ remote) (NN machine))))
(. .)))
喜欢here 有没有一种简单的方法可以在 C/C++ 中实现?我正在手动构建树(不使用解析器)。
最佳答案
http://opennlp.apache.org/ 中提到的解析器非常复杂。它将句子分为名词、动词、介词等。如果您尝试用 c/c++ 重写它,这是一项艰巨的任务。
最好使用解析器并将输出读入 C/C++ 数据结构。
假设您有解析器的输出,则输出的格式相当简单。结构大概是这样的:
struct SentencePart {
SType type;
// If the type is a basic word type (e.g. NN, JJ, etc)
char* word;
// If the type is a complex sub-sentence.
struct SentencePart* sentence_part;
};
您可以创建类型的枚举(TOP、S、VP、NP 等)。然后您可以读取输入并根据您扫描的类型创建结构。
这是一种非常简单的方法,可能还有其他方法。
关于c++ - 自然语言C/C++中解析树的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21284803/