- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 tokenregex 的规则文件为
$EDU_FIRST_KEYWORD = (/教育/|/类(class)[s]?/|/教育/|/学术/|/教育//和/?|/专业/|/认证[s]?//和/?)
$EDU_LAST_KEYWORD = (/背景/|/资格[s]?/|/培训[s]?/|/详细信息[s]?/|/记录[s]?/)
tokens = { 类型:“CLASS”,值:“edu.stanford.nlp.ling.CoreAnnotations$NamedEntityTagAnnotation” }
{ 规则类型:“ token ”,模式:( $EDU_FIRST_KEYWORD $EDU_LAST_KEYWORD ?),
结果:“教育”
}
我想要匹配 EDU_FIRST_KEYWORD
后跟 EDU_LAST_KEYWORD
。如果两个部分都不匹配,则检查 EDU_FIRST_KEYWORD
是否与给定字符串匹配。
例如1. 培训类(class)
匹配输出:教育(因为它与类(class)匹配,这不应该发生)
预期输出:无输出
这是因为它与字符串的第一部分或完整字符串都不匹配。
匹配输出:教育
预期输出:教育
我尝试更改模式:( $EDU_FIRST_KEYWORD $EDU_LAST_KEYWORD ?)
为模式:( $EDU_FIRST_KEYWORD + $EDU_LAST_KEYWORD ?)
但这没有帮助。
我尝试了 stanfordNLP tokenregex 文档,但无法了解如何实现这一点。有人可以帮我更改规则文件吗?提前致谢。
最佳答案
您希望使用 TokenSequenceMatcher 的 matches()
方法来针对整个字符串运行您的规则。
如果您使用find()
,它将搜索整个字符串...如果您使用matches()
,它将查看整个字符串是否与模式匹配。
目前我不确定 TokensRegexAnnotator 是否可以对句子执行完整的字符串匹配,因此您可能需要使用如下代码:
package edu.stanford.nlp.examples;
import edu.stanford.nlp.util.*;
import edu.stanford.nlp.ling.*;
import edu.stanford.nlp.ling.tokensregex.Env;
import edu.stanford.nlp.ling.tokensregex.TokenSequencePattern;
import edu.stanford.nlp.ling.tokensregex.TokenSequenceMatcher;
import edu.stanford.nlp.pipeline.*;
import java.util.*;
public class TokensRegexExactMatch {
public static void main(String[] args) {
Properties props = new Properties();
props.setProperty("annotators", "tokenize");
StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
Annotation annotation = new Annotation("Training & Courses");
pipeline.annotate(annotation);
//System.err.println(IOUtils.stringFromFile("course.rules"));
Env env = TokenSequencePattern.getNewEnv();
env.bind("$EDU_WORD_ONE", "/Education|Educational|Courses/");
env.bind("$EDU_WORD_TWO", "/Background|Qualification/");
TokenSequencePattern pattern = TokenSequencePattern.compile(env, "$EDU_WORD_ONE $EDU_WORD_TWO?");
List<CoreLabel> tokens = annotation.get(CoreAnnotations.TokensAnnotation.class);
TokenSequenceMatcher matcher = pattern.getMatcher(tokens);
// matcher.matches()
while (matcher.find()) {
System.err.println("---");
String matchedString = matcher.group();
List<CoreMap> matchedTokens = matcher.groupNodes();
System.err.println(matchedTokens);
}
}
}
关于java - 如何修改StanfordNLP中的TokenRegex规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43732780/
基本上,在句子中: is a fantasy movie. 我想检测化合物Lord of the bracelets作为一个实体(也可以在实体链接注释器中链接)。这意味着检测具有类似 NNP 形式的
我刚刚安装了 python stanford nlp,运行良好:- pip 安装 stanfordnlp 我在 python shell 中尝试实例化包,但出现以下错误:- >>> import st
我正尝试在 here 上使用新的基于神经网络的解析器查找句子中的所有形容词短语(例如,The weather is extremely good 中的 good 和 extremely good),但
我一直在试验 Stanford NLP 工具包及其词形还原功能。我很惊讶它如何使一些词词形还原。例如: depressing -> depressing depressed -> depressed
我在设置西类牙语版本中的 SUTime 时遇到问题stanford-spanish-corenlp-2018-10-05-models.jar 在斯坦福大学的文档中,它说选项 ner.applyNum
我正在尝试重现一项情感分析研究,该研究使用斯坦福 NLP 库生成的依赖结构,问题是该研究是从 2011 年开始的,我发现斯坦福图书馆使用的是 斯坦福依赖项,但它现在使用通用依赖项,它给出了不同的结果(
如何测试是否 stanfordnlp正在 GPU 上运行吗? Here是一些示例代码: import stanfordnlp stanfordnlp.download('en') # This d
我正在尝试使用 StanfordNLP 解析书本长度的文本 block 。 http 请求运行良好,但文本长度有一个不可配置的 100KB 限制,StanfordCoreNLPServer.java
(注:我知道以前也有关于这个问题的帖子(例如,这里或这里,但它们都很老了,我认为NLP在过去几年里取得了相当大的进展。)。我正在尝试使用Python中的自然语言处理来确定句子的时态。。有没有简单易用的
我是一名优秀的程序员,十分优秀!