- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图弄清楚是否可以使用多个单词的条件有效地提取 NP。这是我当前的代码:
public static List<Tree> getNounPhrasesWithMultipleKeywords(Annotation doc,
List<String> tags) {
StringBuilder sb = new StringBuilder();
boolean firstWord = true;
for (int i = 0; i < tags.size(); i++) {
String word = tags.get(i);
String[] splitted = word.split(" ");
for (String splitWord : splitted) {
if (!firstWord) {
sb.append(" &");
}
sb.append(" << " + splitWord);
firstWord = false;
}
}
// sb.append(")");
TregexPattern pattern = TregexPattern.compile("NP < (__"
+ sb.toString() + ")");
return getTreeWithPattern(doc, pattern);
}
现在,假设输入短语有这棵树:
(ROOT (S (NP (ADJP (RB Poorly) (VBN controlled)) (NN asthma)) (VP (VBZ is) (NP (DT a) (JJ vicious) (NN disease))) (. .)))
我只想获取那些 NP,其中包含函数参数中指定的标签,例如对于输入 [“受控”,“哮喘”],它应该返回
(NP (ADJP (RB Poorly) (VBN controlled)) (NN asthma))
但是当输入是[“注入(inject)”、“受控”、“哮喘”]时,它应该不返回任何内容。
如您所见,如果输入字符串之一是“多个单词”,则程序会将其拆分为单词。我认为应该有更好的解决方案,但我不知道它应该如何工作。
最佳答案
我认为你只需要稍微调整一下你的模式。您并没有真正给出您想要的完整规范,但据我所知["controlled", "asthma"]
应该会产生类似 (NP << (controlled .. asthma ))
的模式,这意味着“名词短语包含‘控制’后跟‘哮喘’”。我不确定你到底希望“短语”如何发挥作用;你想要["controlled asthma"]
表示“‘控制’后紧接着‘哮喘’”,即 (NP << (controlled . asthma))
?
这是创建这些模式的函数的新版本:
public static List<Tree> getNounPhrasesWithMultipleKeywords(Annotation doc,
List<String> tags) {
List<String> phrases = new ArrayList<String>();
for (int i = 0; i < tags.size(); i++) {
String word = tags.get(i);
String[] splitted = word.split(" ");
phrases.add(join(" . ", Arrays.asList(splitted)));
}
String pattern_str = join(" .. ", phrases);
TregexPattern pattern = TregexPattern.compile(
"NP << (" + pattern_str + ")");
return getTreeWithPattern(doc, pattern);
}
// In Java 8 use String.join.
public static String join(String sep, Collection<String> strs) {
System.out.println(strs);
StringBuilder sb = new StringBuilder();
boolean first = true;
for (String s : strs) {
if (!first) {
sb.append(sep);
}
sb.append(s);
first = false;
}
return sb.toString();
}
此函数提供您在示例中指定的输出。
关于java - 如何使用斯坦福 NLP Tregex 获取包含多个单词的名词短语?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31337604/
是否可以使用 R 包 openNLP 提取 noun+noun 或 (adj|noun)+noun?也就是说,我想使用语言过滤来提取候选名词短语。你能指导我该怎么做吗?非常感谢。 感谢您的回复。这是代
我正在寻找一个免费的(可下载的)名词词典来用作实际的单词生成器 - 与验证码相似但不同。 有人知道这样的东西是否可用吗? 谢谢, 凯尔 最佳答案 Kevin's Word List Page包括词性数
通常单词列表是 1 个包含所有内容的文件,但是是否有可单独下载的名词列表、动词列表、形容词列表等? 我特别需要它们来学习英语。 最佳答案 如果您仅从 wordnet.princeton.edu/dow
我正在使用 Rails 4,我遇到了 this cool gist前几天。 无论如何,我如何使用 Rails 做一些类似的事情,我可以从两个数组中随机选择以生成一个有点独特的名称? 我知道有用于此的
我想要一个 python 库函数,它可以跨不同的词性进行翻译/转换。有时它应该输出多个单词(例如“coder”和“code”都是动词“to code”的名词,一个是主语,另一个是宾语) # :: St
根据 this guide在设计 REST API 端点时,我们不应该在 URL 中使用 Action /动词(例如 /addNewEmployee),如果我们想执行一个 Action ,我们应该只使
根据 this guide在设计 REST API 端点时,我们不应该在 URL 中使用 Action /动词(例如 /addNewEmployee),如果我们想执行一个 Action ,我们应该只使
我有一个用 @Path 注释的类,如下所示: @Path("widgets") @Produces(MediaType.APPLICATION_XML) public class WidgetReso
我是一名优秀的程序员,十分优秀!