有没有办法使用OpenNLP获得句子的主题?我试图找出用户句子中最重要的部分.通常,用户将向我们的"引擎"提交句子,并且我们想要确切地知道该句子的核心主题是什么.
目前我们使用openNlp来:
如果您有任何好主意,请告诉我.
我有一个文本,我想从中提取名词短语.我可以很容易地获得我所拥有的文本的类型解析器,但想知道如何在文本中提取名词短语?
我是自然语言处理的新手.我需要从文本中提取名词短语.到目前为止,我已经使用open nlp的分块解析器来解析我的文本以获得树结构.但是我无法从中提取名词短语.树结构,在打开的nlp中是否有任何正则表达式模式,以便我可以用它来提取名词短语.
以下是我正在使用的代码
InputStream is = new FileInputStream("en-parser-chunking.bin");
ParserModel model = new ParserModel(is);
Parser parser = ParserFactory.create(model);
Parse topParses[] = ParserTool.parseLine(line, parser, 1);
for (Parse p : topParses){
p.show();}
Run Code Online (Sandbox Code Playgroud)
在这里,我得到的输出为
(TOP(S(S(ADJP(JJ welcome)(PP(TO to)(NP(NNP Big)(NNP Data.)))))(S(NP(PRP We))(VP(VP(VBP)) (VP(VBG工作)(PP(IN on)(NP(NNP Natural)(NNP语言)(NNP Processing.can)))))(NP(DT some)(CD one)(NN帮助))(NP( PRP us))(PP(IN in)(S(VP(VBG提取)(NP(DT)(NN名词)(NNS短语))(PP(IN)(NP(DT))(NN树)( WP结构.))))))))))
有人可以帮助我获取像NP,NNP,NN等名词短语.可以告诉我,我是否需要使用任何其他NP Chunker来获取名词短语?是否有任何正则表达式模式来实现相同的目的.
请帮帮我.
提前致谢
Gouse.
我想打破下string
一句话:
library(NLP) # NLP_0.1-7
string <- as.String("Mr. Brown comes. He says hello. i give him coffee.")
Run Code Online (Sandbox Code Playgroud)
我想展示两种不同的方式.一个来自包装openNLP
:
library(openNLP) # openNLP_0.2-5
sentence_token_annotator <- Maxent_Sent_Token_Annotator(language = "en")
boundaries_sentences<-annotate(string, sentence_token_annotator)
string[boundaries_sentences]
[1] "Mr. Brown comes." "He says hello." "i give him coffee."
Run Code Online (Sandbox Code Playgroud)
第二个来自包装stringi
:
library(stringi) # stringi_0.5-5
stri_split_boundaries( string , opts_brkiter=stri_opts_brkiter('sentence'))
[[1]]
[1] "Mr. " "Brown comes. "
[3] "He says hello. i give him coffee."
Run Code Online (Sandbox Code Playgroud)
在第二种方式之后,我需要准备句子以删除多余的空格或再次将新的字符串分解成句子.我可以调整stringi函数来提高结果的质量吗?
当它是一个大数据时,openNLP
(非常)慢stringi
.
有没有办法结合stringi
( - >快速)和openNLP …
我想在java中实现递归神经张量网络(RNTN).
我已经将Deeplearning4j用于word2vec管道来矢量化单词语料库.
对于NLP管道,我使用过Opennlp.(用于标记化,POStaging和解析)
现在,我发现我需要一个RNTN用于我的目的,我没有找到太多的支持,任何参考都会有所帮助.许多库都是用R或python编写的,甚至是用Scala编写的,而大多数人使用的NLP管道都是stanfordnlp.但是我想用Opennlp和java来做这件事.
之后,我想将单词向量与神经网络结合起来,然后完成我想做的事情,比如情绪分析.
我该怎么办?任何输入都会有所帮助.
谢谢.
我一直在对这两个包进行一些比较,并且不确定要进入哪个方向.我正在寻找的是:
据我所知,OpenNLP和Stanford CoreNLP提供了非常相似的功能.然而,斯坦福CoreNLP似乎有更多活动,而OpenNLP在过去六个月中只有一些提交.
根据我所看到的,OpenNLP似乎更容易训练新模型,仅凭这个原因可能更具吸引力.但是,我的问题是其他人开始将其作为将Java功能添加到Java应用程序的基础?我最担心的是OpenNLP是"刚刚成熟"还是半成熟.
我在python nltk中开发了几种用于聚类,数据抽象等的算法.现在,问题是,我将在风险投资之前呈现大规模.NLTK有自己的优势,比如快速开发等.但是当我在开始时选择时,这对我来说很有意义.现在我已经足够成熟,并且发现它有一些局限性,比如缺乏可扩展性.对Mahout进行了一些研究,但这也是针对集群/分类和搭配的.打开NLP是一个选项,但我不确定我能用多长时间.对于高规模的nlp有什么好的吗?
请注意 - 这个问题与我的旧问题无关 - 如何提高NLTK的性能?备择方案?.我已经完全在生产Web应用程序上阅读了NLTK.
好的,我有以下代码来训练OpenNLP的NER标识符
FileReader fileReader = new FileReader("train.txt");
ObjectStream fileStream = new PlainTextByLineStream(fileReader);
ObjectStream sampleStream = new NameSampleDataStream(fileStream);
TokenNameFinderModel model = NameFinderME.train("pt-br", "train", sampleStream, Collections.<String, Object>emptyMap());
nfm = new NameFinderME(model);
Run Code Online (Sandbox Code Playgroud)
我不知道如果缺少某些东西我是否做错了,但分类不起作用.我假设train.txt错了.
发生的错误是所有令牌都只分类为一种类型.
我的train.txt数据类似于以下示例,但具有更多的条目变化和数量.另一件事是我每次都是从文本中逐字逐句地分类,而不是所有的标记.
<START:distance> 8000m <END>
<START:temperature> 100ºC <END>
<START:weight> 50kg <END>
<START:name> Renato <END>
Run Code Online (Sandbox Code Playgroud)
有人可以证明我做错了吗?
我正在使用OpenNLP的NameFinder API示例文档.初始化名称查找器后,文档使用以下代码作为输入文本:
for (String document[][] : documents) {
for (String[] sentence : document) {
Span nameSpans[] = nameFinder.find(sentence);
// do something with the names
}
nameFinder.clearAdaptiveData()
}
Run Code Online (Sandbox Code Playgroud)
然而,当我把它带入eclipse时,'documents'(而不是'document')变量给我一个错误,说变量文件无法解析.使用'documents'数组变量引用的文档是什么?我是否需要初始化一个名为'documents'的数组,该数组包含txt文件以便此错误消失?
谢谢您的帮助.
我想了解以下问题的最佳方法.
我的文件与resume/cv非常相似,我必须提取实体(姓名,姓氏,生日,城市,邮政编码等).
为了提取这些实体我正在组合不同的查找器(正则表达式,字典等)
这些查找器没有问题,但是,我正在寻找方法/算法或类似的东西来确认实体.
使用"确认",我的意思是我必须在邻近中找到特定的术语(或实体)(更接近我找到的实体).
例:
My name is <name>
Name: <name>
Name and Surname: <name>
Run Code Online (Sandbox Code Playgroud)
我可以确认实体,<name>
因为它更接近让我理解"背景"的特定术语.如果我在实体附近有"姓名"或"姓"字样,那么我可以说我已经找到<name>
了很有可能.
因此,目标是编写那些规则来确认实体.另一个例子应该是:
我的地址是......,00143罗马
意大利邮政编码是5位数字(仅限数字),很容易在我的文档中找到一个5位数字(我使用上面写的正则表达式),我也通过查询数据库来检查它是否存在.这里的问题是我需要再检查一下(肯定)它.
我必须看看这个数字是否在实体附近<city>
,如果是,好的......我有很好的概率.
我也尝试训练模型,但我没有真正的"背景"(句子).培训模型:
My name is: <name>John</name>
Name: <name>John</name>
Name/Surname: <name>John</name>
<name>John</name> is my name
Run Code Online (Sandbox Code Playgroud)
对我来说听起来不太好,因为:
我不知道有多少不同的方式可以找到确切的说法,但我肯定找不到15000种方法:)
我应该使用什么方法来确认我的实体?
非常感谢!
opennlp ×10
java ×7
nlp ×6
stanford-nlp ×3
text-mining ×2
apache ×1
data-mining ×1
nltk ×1
python ×1
r ×1
regex ×1
stringi ×1
text ×1
word2vec ×1