我目前的理解是,可以使用诸如OpenNLP,Stanford NLP之类的工具包从文本文档中提取实体。
但是,有没有办法找到这些实体之间的关系?
例如,考虑以下文本:
“正如你们中某些人所知,我上周在欧洲高能物理实验室CERN呆了,去年7月发现了著名的希格斯玻色子。每次去CERN时,我都会感到一种崇高的敬意。多年来,我在1990年代后期作为访问科学家在这里呆了三个月,从事早期宇宙物理学的工作,试图弄清楚如何将我们今天看到的宇宙与婴儿期发生的事情联系起来。”
实体:我(作者),欧洲核子研究组织(CERN),希格斯玻色子
关系:-我“ 访问 ” CERN-CERN“ 发现 ”希格斯玻色子
谢谢。
我已经使用此链接中提供的OpenNLP解析器代码解析了文档,并且得到了以下输出:
(TOP (S (NP (NN Programcreek)) (VP (VBZ is) (NP (DT a) (ADJP (RB very) (JJ huge) (CC and) (JJ useful)) (NN website)))))
Run Code Online (Sandbox Code Playgroud)
我只想从中提取有意义的词,这意味着我想删除所有停用词,因为我想进一步根据这些有意义的词进行分类。您能否建议我如何从解析的输出中删除停用词?
最后我想得到以下输出
(TOP (S (NP (NN Programcreek)) (JJ useful)) (NN website)))))
Run Code Online (Sandbox Code Playgroud)
请帮助我,如果OpenNLP无法实现,那么建议我使用其他任何Java库进行自然语言处理。因为我的主要目的是解析文档并仅获取有意义的单词。
我有一个Ubuntu Quantal 12.10服务器64位实例.我正在使用openNLP进行句子的POS标记.
我正在使用带有"Parallel Lapply setup"的openNLP进行POS标记.它在RStudio环境中运行良好.但在Ubuntu环境中,它显示以下错误.
Error in do.call(c, clusterApply(cl, x = splitList(X, length(cl)), fun = lapply, :
second argument must be a list
Run Code Online (Sandbox Code Playgroud)
对我面临的问题有任何建议吗?
这是我正在使用的代码:
tagPOS <- function(x, ...) {
s <- as.String(x)
word_token_annotator <- Maxent_Word_Token_Annotator()
a2 <- Annotation(1L, "sentence", 1L, nchar(s))
a2 <- annotate(s, word_token_annotator, a2)
a3 <- annotate(s, PTA, a2)
a3w <- a3[a3$type == "word"]
POStags <- unlist(lapply(a3w$features, `[[`, "POS"))
POStagged <- paste(sprintf("%s/%s", s[a3w], POStags), collapse = " ")
list(POStagged = POStagged, POStags = POStags)
}
cl …
Run Code Online (Sandbox Code Playgroud) 我正在努力从出现在英文报纸上的各种广告中提取人名。
但是,我注意到在提取其中存在的名称之前,我需要确定广告的边界,因为我只需要提取第一个出现的名称。我从斯坦福 NLP 开始。我成功提取了名称。但我陷入了识别段落边界的困境。
有没有办法识别段落边界。?
我刚开始使用openNLP来识别名字.我正在使用开放式NLP附带的模型(en-ner-person.bin).我注意到虽然它识别我们,英国和欧洲名字,却无法识别印度或日本的名字.我的问题是(1)是否已有可用于识别外国名称的模型(2)如果没有,那么我相信我需要生成新模型.在那种情况下,是否有可用的copora?
我必须在基于桌面的java应用程序中实现自动建议功能.要求如下:
用户将给出一个句子作为输入,我必须返回下一个可能Part-Of-Speech
的建议.例如:
1.UserInput:
迈克希望 Suggestions:
[阅读,玩耍,玩乐,学习,编码,等等]
2. UserInput:
迈克有 Suggestions:
[阅读,Naboo N-1星际战斗机,马,...等]
这是这个问题的重复,但这个是针对Android的.这可以通过使用一些NLP库来完成,如Stanford-NLP或OpenNLP等吗?如果您需要更多细节,请告诉我.
谢谢!
Standford Core NLP和GATE提供各种NLP操作,如NER,POS标记.有一些NLP操作,如Tokenizer,Snowball Stemmer可用作UIMA组件.那么,UIMA是否可以与StandfordCore NLP/GATE相媲美,还是用于为管道包装这些API?
这是R代码:
library(NLP)
library(openNLP)
tagPOS <- function(x, ...) {
s <- as.String(x)
word_token_annotator <- Maxent_Word_Token_Annotator()
a2 <- Annotation(1L, "sentence", 1L, nchar(s))
a2 <- annotate(s, word_token_annotator, a2)
a3 <- annotate(s, Maxent_POS_Tag_Annotator(), a2)
a3w <- a3[a3$type == "word"]
POStags <- unlist(lapply(a3w$features, `[[`, "POS"))
POStagged <- paste(sprintf("%s/%s", s[a3w], POStags), collapse = " ")
list(POStagged = POStagged, POStags = POStags)}
str <- "this is a the first sentence."
tagged_str <- tagPOS(str)
Run Code Online (Sandbox Code Playgroud)
输出是:
tagged_str $ POStagged [1]"this/DT is/VBZ a/DT the/DT first/JJ sentence/NN ./."
现在我想从上面的句子中只提取NN单词即句子,并希望将其存储到变量中.任何人都可以帮我解决这个问题.
我使用OpenNLP模型进行名称 - 实体识别,但问题是它只能识别美国和英国的名字(外国名字),所以我需要识别印度名字.
这怎么可能?
NLP 解析器有没有办法识别列表?
例如,“老虎、狮子和大猩猩”应该被标识为一个列表
(我不需要将它标识为一个动物列表;一个列表就足够了)。
我的最终目标是将一个常用动词/单词链接到列表中的所有项目。例如,考虑句子“他找到了一支笔、一本书和一个手电筒”。在这里,“发现”动词应与所有 3 个项目相关联。
另一个例子,“他的癌症、贫血和糖尿病检测呈阴性”。在这里,“阴性”一词应该与三种疾病联系在一起。
任何开源 NLP 软件包(如 OpenNLP 或 Stanford CoreNLP)都可以做到这一点吗?还有其他解决办法吗?
编辑:
就像在其中一个答案中提到的那样,我最初的想法是手动解析列表并通过查看逗号的位置等来查找项目。
但后来我发现了斯坦福 NLP 的 OpenIE 模型。这似乎做得很好。
例如,“He has a pen and a book”给出了 2 个关系(He;has;a pen)和(He;has;a book)。
该模型的问题在于它不适用于不完整的句子,例如“has a pen and a book”。
(据我了解,这是因为 OpenIE 只能提取三元组)
当涉及否定时它也会失败。例如,“他没有笔”。
这些问题有解决方案吗?目前可用于信息提取的最佳解决方案是什么?
opennlp ×10
nlp ×7
stanford-nlp ×5
java ×3
gate ×2
pos-tagger ×2
r ×2
text ×2
uima ×2
algorithm ×1
cloud ×1
command-line ×1
stop-words ×1
text-mining ×1