说我有以下宾夕法尼亚树:
(S (NP-SBJ the steel strike)
(VP lasted
(ADVP-TMP (ADVP much longer)
(SBAR than
(S (NP-SBJ he)
(VP anticipated
(SBAR *?*))))))
.)
Run Code Online (Sandbox Code Playgroud)
什么缩略语喜欢VP和SBAR等是什么意思?我在哪里可以找到这些定义?这些缩写名称是什么?
截至2.0版本(02.03.2012),斯坦福分析师现在是"线程安全的" .我目前正在运行命令行工具,无法通过线程化程序来弄清楚如何利用我的多核.
在过去,这个问题已得到回答,"斯坦福分析师不是线程安全的",正如常见问题解答仍然说的那样.我希望找到一个成功穿越最新版本的人.
我已经尝试使用-t标志(-t10和-tLLP),因为这是我在搜索中找到的所有内容,但两者都抛出错误.
我发出的命令的一个例子是:
java -cp stanford-parser.jar edu.stanford.nlp.parser.lexparser.LexicalizedParser \
-outputFormat "oneline" ./grammar/englishPCFG.ser.gz ./corpus > corpus.lex
Run Code Online (Sandbox Code Playgroud) 这更像是一个算法问题,而不是一个特定的语言问题,所以我很高兴收到任何语言的答案 - 甚至伪代码,甚至只是一个想法.
这是我的问题:我需要处理来自PDF文章的大型数据集,这些文章被残酷地复制/粘贴到.txt中.我只得到这种可憎的结果,大约是16k文件,3.5 GB或文本(我使用的语料库是ACL Antology Network,http: //clair.si.umich.edu/clair/aan/DatasetContents . HTML).
"垃圾"来自公式,图像,表格等等.它只是弹出正在运行的文本的中间,所以我不能使用正则表达式来清理它,我也想不出任何使用机器学习的方法.我已经花了一个星期的时间,然后我决定继续进行快速而肮脏的修复.我不在乎完全清理它,只要大部分文本区域被删除,我就不会关心漏报和积极因素.
文本的一些例子:请注意公式包含垃圾字符,但表格和标题不包含(但它们仍然使我的句子很长,因此不可解析).垃圾以粗体显示.
容易一个:
重复实验,同时抑制第一个具有最大扩展的方案的专业化,然后是两个最扩展的模式.覆盖和加速的措施很重要1只要我们有兴趣保留分配给句子的f结构,这种覆盖概念就比必要的更严格.实际上,相同的f结构可以由多个解析分配,因此在某些情况下,即使专门语法为其分配正确的f结构,也认为句子不在覆盖范围内. 2'VPv'和'VPverb [main]'涵盖由主要动词为首的VP.'NPadj'涵盖附有形容词的NP.205原规则:l/Pperfp - + ADVP*SE(t ADJUNCT)($ ADV_TYPE)= t,padv~/r {@M_Head_Perfp I @ M_Head_Passp} @(Anaph_Ctrl $){AD VP + SE('~ADJUNCT) ($ ADV_TYPE)= vpadv由以下内容替换:ADVP,[.E(~ADJUNCT)(.升.ADV_TYPE)= vpadv l /'Pperfp - + @PPadjunct @PPcase_obl {@M.Head_Pevfp [@M .. Head_Passp} @(Anaph_Ctrl~)V {@M_Head_Perfp I @ M_Head_Passp} @(Anaph_Ctrl~)图1:从实际的法语语法中修剪规则. "*"和"+"符号具有正则表达式中的通常解释.括号中的子表达式是可选的.替代子表达式用大括号括起来,并用"["符号分隔.后跟标识符的"@"是宏扩展操作符,最终由其他功能描述替换. 语料库 - .. ,, 0.1 [消除歧义的Treebank树库人类专家语法专业化专业语法图2:我们的语法专业化实验的设置.这种形式的语法修剪可以实现什么的指标. 然而,它们可能会产生误导,因为如果没有覆盖,那么未被发现的句子的失败时间可能远低于他们的句子时间.
艰难的一个:
表4总结了英语和罗马尼亚语参考的精确结果.结果表明,英语的共指是比罗马尼亚共识更明显的,但是SNIZZLE提高了两种语言的共指分辨率.通过优先级高于罗马尼亚对应的启发式的启发式解决英语共指的情况,有64%的情况.这个结果解释了为什么英语罗马尼亚语SWIZZLE在罗马尼亚名词代词上有更好的精确度增强 73%89%66%78%76%93%71°/ o 82%表4:共指精度总计84%72%87% 76%英语罗马尼亚语SWIZZLE on English SWIZZLE on Romanian Nominal 69%63%66%61%Pronomoninal Total 89%78%83%72%87%77%80%70%表5:Coreference回顾英语的共识.表5还说明了召回结果.数据驱动的共参考分辨率优于其他方法的优势在于其更好的回忆性能.这可以通过这种方法捕获更多种共参照模式来解释.即使其他共参考分辨率系统对某些特定形式的系统表现更好,但它们的召回结果却被系统方法所超越.与单语数据驱动的共参照系统的召回相比,多语言共参数反过来提高了精度.此外,表5显示英语核心结果比罗马尼亚核心结构更能回忆.但是,召回显示SNIZZLE的两种语言都有所减少,因为删除了不精确的共参考链接.通常情况下,删除数据会降低召回率.通过使用为MUC评估开发的自动记分器程序获得所有结果.
请注意表格中没有包含奇怪的字符,并且正好在句子的中间:"这个结果解释了为什么有更好的精确度增强 …
当使用解析器或Core NLP中的任何Annotation时,有没有办法访问错误的概率或余量?
为了将我的问题放到上下文中,我试图理解是否有一种方法可以检测出歧义的情况.例如,在下面的句子中,动词欲望被检测为名词.我希望能够知道我可以从Core NLP APi访问或计算的那种措施告诉我可能存在歧义.
(NP (NP (NNP Whereas)) (, ,) (NP (NNP users) (NN desire) (S (VP (TO to) (VP (VB sell))))))
Run Code Online (Sandbox Code Playgroud) 我下载了Stanford解析器2.0.5并使用了包中的Demo2.java源代码,但是在编译并运行程序之后,它有很多错误.我的计划的一部分是:
public class testStanfordParser {
/** Usage: ParserDemo2 [[grammar] textFile] */
public static void main(String[] args) throws IOException {
String grammar = args.length > 0 ? args[0] : "edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz";
String[] options = { "-maxLength", "80", "-retainTmpSubcategories" };
LexicalizedParser lp = LexicalizedParser.loadModel(grammar, options);
TreebankLanguagePack tlp = new PennTreebankLanguagePack();
GrammaticalStructureFactory gsf = tlp.grammaticalStructureFactory();
...
Run Code Online (Sandbox Code Playgroud)
错误是:
Loading parser from serialized file edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz java.io.IOException: Unable to resolve edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz" as either class path, filename or URL
at edu.stanford.nlp.io.IOUtils.getInputStreamFromURLOrClasspathOrFileSystem(IOUtils.java:408)
at edu.stanford.nlp.io.IOUtils.readStreamFromString(IOUtils.java:356)
at edu.stanford.nlp.parser.lexparser.LexicalizedParser.getParserFromSerializedFile(LexicalizedParser.java:594)
at edu.stanford.nlp.parser.lexparser.LexicalizedParser.getParserFromFile(LexicalizedParser.java:389)
at …Run Code Online (Sandbox Code Playgroud) 我将使用Stanford Corenlp 2013找到短语标题.我看到了这个帖子.
但是,答案对我来说并不清楚,我无法添加任何评论来继续该线程.所以,我很抱歉重复.
我现在所拥有的是一个句子的解析树(使用Stanford Corenlp)(我也尝试过由Stanford Corenlp创建的CONLL格式).而我所需要的只是名词短语的头部.
我不知道如何使用依赖关系和解析树来提取名词短语的头部.我所知道的是,如果我有nsubj (x, y),y是主题的头.如果我有dobj(x,y),y是直接对象的头部.我有iobj(x,y),y是间接对象的头.
但是,我不确定这种方式是否是查找所有词组头的正确方法.如果是,我应该添加哪些规则来获取所有名词短语?
也许,值得一提的是,我需要在java代码中使用名词短语的头部.
我想知道是否有可能用来Stanford CoreNLP检测一个句子写入哪种语言?如果是这样,那些算法有多精确?
我需要在句子中提取单词的关系.我最感兴趣的是识别一个主题,谓词和一个对象.例如,对于以下句子:
She gave him a pen
Run Code Online (Sandbox Code Playgroud)
我想:
She_subject gave_predicate him a pen_object.
Run Code Online (Sandbox Code Playgroud)
斯坦福NLP能做到吗?我试过他们的relation注释器,但它似乎没有像我预期的那样工作?也许有其他软件可以产生这个结果?
给定一个NLP解析树
(ROOT (S (NP (PRP You)) (VP (MD could) (VP (VB say) (SBAR (IN that) (S (NP (PRP they)) (ADVP (RB regularly)) (VP (VB catch) (NP (NP (DT a) (NN shower)) (, ,) (SBAR (WHNP (WDT which)) (S (VP (VBZ adds) (PP (TO to) (NP (NP (PRP$ their) (NN exhilaration)) (CC and) (NP (FW joie) (FW de) (FW vivre))))))))))))) (. .)))
Run Code Online (Sandbox Code Playgroud)
原来的句子是"你可以说他们经常洗澡,这增加了他们的兴奋和生活乐趣."
如何提取和逆向设计条款?我们将分裂为S和SBAR(以保留子句的类型,例如从属)
- (S (NP (PRP You)) (VP (MD could) (VP (VB say)
- (SBAR (IN that) (S (NP …Run Code Online (Sandbox Code Playgroud) 我试图创建一个python进程,读取一些输入,处理它并打印出结果.处理由子流程(斯坦福大学的NER)完成,对于ilustration,我将使用'cat'.我不确切知道NER会给出多少输出,所以我使用一个单独的线程来收集它并打印出来.以下示例说明.
import sys
import threading
import subprocess
# start my subprocess
cat = subprocess.Popen(
['cat'],
shell=False, stdout=subprocess.PIPE, stdin=subprocess.PIPE,
stderr=None)
def subproc_cat():
""" Reads the subprocess output and prints out """
while True:
line = cat.stdout.readline()
if not line:
break
print("CAT PROC: %s" % line.decode('UTF-8'))
# a daemon that runs the above function
th = threading.Thread(target=subproc_cat)
th.setDaemon(True)
th.start()
# the main thread reads from stdin and feeds the subprocess
while True:
line = sys.stdin.readline()
print("MAIN PROC: %s" % line)
if not …Run Code Online (Sandbox Code Playgroud) stanford-nlp ×10
nlp ×9
java ×2
clause ×1
eclipse ×1
grammar ×1
nltk ×1
parsing ×1
phrase ×1
pos-tagger ×1
python ×1
subprocess ×1