我希望有人可以帮助我:首先,我仍然是Java的新手,但我想这会慢慢改进。
所以,我有一个带有语言注释的XML文件,我想访问一个特定的节点,a)对它执行模式匹配操作,b)对匹配执行进一步的操作
这是一个文本样本,显示节点:
<token id="13">
<word>.</word>
<lemma>.</lemma>
<CharacterOffsetBegin>57</CharacterOffsetBegin>
<CharacterOffsetEnd>58</CharacterOffsetEnd>
<POS>.</POS>
<NER>O</NER>
</token>
</tokens>
<parse>(ROOT (S (NP (DT The) (NN world)) (VP (VBZ owes) (NP (DT all)) (NP (NP (NP (PRP$ its) (ADJP (RB onward) (NP (NNS impulses)) (PP (TO to))) (NNS men)) (ADJP (RB ill))) (PP (IN at) (NP (NN ease))))) (. .))) </parse>
<basic-dependencies>
<dep type="det">
<governor idx="2">world</governor>
<dependent idx="1">The</dependent>
</dep>
<dep type="nsubj">
<governor idx="3">owes</governor>
<dependent idx="2">world</dependent>
</dep>
<dep type="iobj">
<governor idx="3">owes</governor>
<dependent idx="4">all</dependent>
</dep>
<dep type="poss">
<governor idx="9">men</governor>
<dependent idx="5">its</dependent>
</dep>
(所以在这里,我有一些文本的语言注释,例如一些令牌,词性(POS),命名实体识别(NER)和句法/依赖解析。这实际上是输出斯坦福CoreNLP工具包应用于文本..不要添加整个文件,因为它很大)
我的问题是:根据我一直在阅读的内容,似乎StaX解析器可以很好地访问该文件并使用我的操作生成一个新文件。这是正确的吗?我的问题还包括,我可以与StaX进行模式匹配操作吗?
提前一千谢谢。
答案 0 :(得分:0)
表达式(ROOT ...)
采用称为S-expression的格式。 Java SE中的任何内容都无法解析它,因此您将不得不做其他事情。
当然,你必须使用StAX(或其他东西)来解析xml文件。这样你就会得到上面的字符串,就像字符串一样。您将不得不在这些字符串上运行另一个解析器来获取它们的结构。
初步谷歌搜索给了我 http://rosettacode.org/wiki/S-Expressions#Java基于。{ http://jfkbits.blogspot.jp/2008/05/thoughts-on-s-expression-parser.html。 但是你可以自己使用Java中的&#34; S-expression解析器等搜索术语。并查看前几个结果,看看哪些适合你。