标签: opennlp

有没有办法使用OpenNLP获得句子的主题?

有没有办法使用OpenNLP获得句子的主题?我试图找出用户句子中最重要的部分.通常,用户将向我们的"引擎"提交句子,并且我们想要确切地知道该句子的核心主题是什么.

目前我们使用openNlp来:

  1. 大块的句子
  2. 识别句子的名词短语,动词等
  3. 确定句子的所有"主题"
  4. (没有完成!)确定句子的"核心主题"

如果您有任何好主意,请告诉我.

java nlp opennlp

13
推荐指数
1
解决办法
9354
查看次数

使用stanford类型解析器从文本文件中提取名词短语

我有一个文本,我想从中提取名词短语.我可以很容易地获得我所拥有的文本的类型解析器,但想知道如何在文本中提取名词短语?

java text nlp stanford-nlp opennlp

13
推荐指数
3
解决办法
2万
查看次数

如何使用Open nlp的分块解析器提取名词短语

我是自然语言处理的新手.我需要从文本中提取名词短语.到目前为止,我已经使用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.

java nlp stanford-nlp opennlp

12
推荐指数
1
解决办法
1万
查看次数

如何使用OpenNLP和stringi检测句子边界?

我想打破下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 …

regex r text-mining opennlp stringi

12
推荐指数
2
解决办法
705
查看次数

Java中的RNTN实现

我想在java中实现递归神经张量网络(RNTN).

我已经将Deeplearning4j用于word2vec管道来矢量化单词语料库.

对于NLP管道,我使用过Opennlp.(用于标记化,POStaging和解析)

现在,我发现我需要一个RNTN用于我的目的,我没有找到太多的支持,任何参考都会有所帮助.许多库都是用R或python编写的,甚至是用Scala编写的,而大多数人使用的NLP管道都是stanfordnlp.但是我想用Opennlp和java来做这件事.

之后,我想将单词向量与神经网络结合起来,然后完成我想做的事情,比如情绪分析.

我该怎么办?任何输入都会有所帮助.

谢谢.

java neural-network opennlp word2vec deeplearning4j

11
推荐指数
1
解决办法
784
查看次数

OpenNLP与斯坦福CoreNLP

我一直在对这两个包进行一些比较,并且不确定要进入哪个方向.我正在寻找的是:

  1. 命名实体识别(人员,地点,组织等).
  2. 性别认同.
  3. 一个体面的培训API.

据我所知,OpenNLP和Stanford CoreNLP提供了非常相似的功能.然而,斯坦福CoreNLP似乎有更多活动,而OpenNLP在过去六个月中只有一些提交.

根据我所看到的,OpenNLP似乎更容易训练新模型,仅凭这个原因可能更具吸引力.但是,我的问题是其他人开始将其作为将Java功能添加到Java应用程序的基础?我最担心的是OpenNLP是"刚刚成熟"还是半成熟.

java stanford-nlp opennlp

11
推荐指数
2
解决办法
9146
查看次数

NLTK在生产环境中?

我在python nltk中开发了几种用于聚类,数据抽象等的算法.现在,问题是,我将在风险投资之前呈现大规模.NLTK有自己的优势,比如快速开发等.但是当我在开始时选择时,这对我来说很有意义.现在我已经足够成熟,并且发现它有一些局限性,比如缺乏可扩展性.对Mahout进行了一些研究,但这也是针对集群/分类和搭配的.打开NLP是一个选项,但我不确定我能用多长时间.对于高规模的nlp有什么好的吗?

请注意 - 这个问题与我的旧问题无关 - 如何提高NLTK的性能?备择方案?.我已经完全在生产Web应用程序上阅读了NLTK.

python nltk opennlp

10
推荐指数
1
解决办法
1649
查看次数

我如何在OpenNLP中训练命名实体识别器标识符?

好的,我有以下代码来训练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)

有人可以证明我做错了吗?

java nlp named-entity-recognition opennlp

9
推荐指数
1
解决办法
9780
查看次数

OpenNLP名称查找器

我正在使用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文件以便此错误消失?

谢谢您的帮助.

apache nlp data-mining opennlp

9
推荐指数
1
解决办法
6957
查看次数

确认实体的最佳方法

我想了解以下问题的最佳方法.

我的文件与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)

对我来说听起来不太好,因为:

  1. 我读过我们需要很多句子来训练一个好的模型
  2. 那些不是"句子"我没有"上下文"(记得我说文件类似于resume/cv)
  3. 也许那些短语太短了

我不知道有多少不同的方式可以找到确切的说法,但我肯定找不到15000种方法:)

我应该使用什么方法来确认我的实体?

非常感谢!

java nlp named-entity-recognition text-mining opennlp

9
推荐指数
1
解决办法
507
查看次数