2

我目前正在使用此处提供的 Twitter POS 标记器将推文标记到 Penn-Tree Bank 标签中。

这是该代码:

import java.util.List;

import cmu.arktweetnlp.Tagger;
import cmu.arktweetnlp.Tagger.TaggedToken;

/* Tags the tweet text */
List<TaggedToken> tagTweet(String text) throws IOException {

    // Loads Penn Treebank POS tags
    tagger.loadModel("res/model.ritter_ptb_alldata_fixed.txt");

    // Tags the tweet text
    taggedTokens = tagger.tokenizeAndTag(text);

    return taggedTokens;
}

现在我需要确定直接对象在这些标签中的位置。经过一番搜索,我发现 Stanford Parser 可以通过 Stanford Typed Dependencies 做到这一点(在线示例)。通过使用 dobj() 调用,我应该能够得到我需要的东西。

但是,我还没有找到任何关于如何将已标记的句子输入此工具的好的文档。据我了解,在使用 Dependency Parser 之前,我需要从句子的标记/标签创建一棵树。这是怎么做到的?我找不到任何示例代码。

Twitter POS Tagger 包含一个 Stanford NLP Tools 的实例,所以我离得不远,但是我对 Stanford 工具不够熟悉,无法将我的 POS 标记文本输入到其中以使依赖项解析器正常工作. 常见问题解答确实提到了这个功能,但是没有任何示例代码可以关闭,我有点卡住了。

4

1 回答 1

2

以下是完全手动创建常见问题解答List中讨论的方法:

String[] sent3 = { "It", "can", "can", "it", "." };
// Parser gets second "can" wrong without help (parsing it as modal MD)
String[] tag3 = { "PRP", "MD", "VB", "PRP", "." };                                                 
List<TaggedWord> sentence3 = new ArrayList<TaggedWord>();
for (int i = 0; i < sent3.length; i++) {
  sentence3.add(new TaggedWord(sent3[i], tag3[i]));
}
Tree parse = lp.parse(sentence3);
parse.pennPrint();
于 2014-01-09T00:56:57.427 回答