- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为我的一个项目使用 Apache OpenNLP。我正在创建一个新模型来识别位置,因为预训练模型 (en-ner-location.bin) 没有此位置。
这是代码:
package com.equinox.nlp;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import opennlp.tools.namefind.NameFinderME;
import opennlp.tools.namefind.NameSample;
import opennlp.tools.namefind.NameSampleDataStream;
import opennlp.tools.namefind.TokenNameFinderModel;
import opennlp.tools.tokenize.SimpleTokenizer;
import opennlp.tools.tokenize.Tokenizer;
import opennlp.tools.util.InvalidFormatException;
import opennlp.tools.util.ObjectStream;
import opennlp.tools.util.PlainTextByLineStream;
import opennlp.tools.util.Span;
public class NlpTesting {
protected Map<String, NameFinderME> finders;
protected Tokenizer tokenizer;
public static void main(String[] args) throws InvalidFormatException,
IOException {
String bankura = "In the 2011 census, Bankura municipality had a population of 138,036, out of which 70,734 were males and 67,302 were females.";
String london = "London is the capital city of England and the United Kingdom.";
NlpTesting nlpTesting = new NlpTesting();
NameFinderME nameFinderA = nlpTesting.createNameFinder("./opennlp-models/en-ner-location.bin");
nlpTesting.findLocation(london, nameFinderA);
System.out.println("--------------------------");
nlpTesting.findLocation(bankura, nameFinderA);
nlpTesting.train();
NameFinderME nameFinderB = nlpTesting.createNameFinder("./opennlp-models/en-ner-custom-location.bin");
nlpTesting.findLocation(bankura, nameFinderB);
}
public String findLocation(String str,NameFinderME nameFinder) throws InvalidFormatException,
IOException {
String commaSeparatedLocationNames = "";
tokenizer = SimpleTokenizer.INSTANCE;
String tokens[] = tokenizer.tokenize(str);
Span nameSpans[] = nameFinder.find(tokens);
HashSet<String> locationSet = new HashSet<String>();
for (int i = 0; i < nameSpans.length; i++) {
locationSet.add(tokens[nameSpans[i].getStart()]);
}
for (Iterator<String> iterator = locationSet.iterator(); iterator
.hasNext();) {
String location = iterator.next();
commaSeparatedLocationNames += location + ",";
}
System.out.println(commaSeparatedLocationNames);
return commaSeparatedLocationNames;
}
public void train() throws IOException {
File trainerFile = new File("./train/train.txt");
File output = new File("./opennlp-models/en-ner-custom-location.bin");
ObjectStream<String> lineStream = new PlainTextByLineStream(
new FileInputStream(trainerFile), "UTF-8");
ObjectStream<NameSample> sampleStream = new NameSampleDataStream(
lineStream);
System.out.println("lineStream = " + lineStream);
TokenNameFinderModel model = NameFinderME.train("en", "location",
sampleStream, Collections.<String, Object> emptyMap());
BufferedOutputStream modelOut = null;
try {
modelOut = new BufferedOutputStream(new FileOutputStream(output));
model.serialize(modelOut);
} finally {
if (modelOut != null)
modelOut.close();
}
}
public NameFinderME createNameFinder(String str) throws InvalidFormatException,
FileNotFoundException, IOException {
NameFinderME nameFinder = new NameFinderME(new TokenNameFinderModel(
new FileInputStream(new File(str))));
return nameFinder;
}
}
到目前为止,一切正常。
问题是我无法向我创建的此自定义模型添加另一个位置。因此,我浏览了 OpenNLP - README 文档。
在那里,它说,“注意:为了训练模型,您需要所有训练数据。目前没有一种机制可以使用附加数据更新随项目一起分发的模型。”
这是否意味着我也无法更新我的自定义模型?有什么办法可以做到这一点吗?很可能我在创建模型时可能没有所有数据,并且应该有更新模型的选项。请帮助我。
最佳答案
这正是它所说的:每次要添加新的训练实例时,您都需要从头开始重新训练整个模型。
如果您需要更新模型而不重新训练,那么 OpenNLP 不是适合您任务的工具。
关于java - 无法更新 Open NLP 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26583483/
我尝试进行词形还原,即识别动词的词形和可能的阿拉伯语词根,例如: يتصل ==> lemma(动词的不定式)==> اتصل ==> root(三字根/Jidr thoulathi) ==> و ص
在执行 NLP 或 IR/IE 相关任务时,是否有人们通常用来删除标点符号和关闭类别词(例如 he, she, it)的停用词列表? 我一直在尝试使用 gibbs 抽样来进行词义消歧的主题建模,并且它
我不知道StackOverflow是否涵盖NLP,所以我来试试。 我有兴趣从特定 Realm 中找到两个词的语义相关性,即“图像质量”和“噪声”。我正在做一些研究,以确定相机的评论对于相机的特定属性是
是否有算法或方法可以评估文本项之间的共同趋势/主题? 例如,假设有四个数据点(文本条目): “我发现学校今天压力很大” “物理测试非常容易。” “我的物理测试根本没有挑战” “每个人都提早离开了,因为
我有兴趣了解有关 Natural Language Processing 的更多信息(NLP)并且我很好奇目前是否有任何不基于字典识别的策略来识别文本中的专有名词?另外,任何人都可以解释或链接到解释当
特征用于模型训练和测试。自然语言处理中的词汇特征和正字法特征有什么区别?例子首选。 最佳答案 我不知道这样的区别,大多数时候当人们谈论词汇特征时,他们谈论的是使用这个词本身,而不是仅使用其他特征,即它
在 NLP 任务中,人们用 SOC(句子开头)和 EOC(句子结尾)注释句子是很常见的。他们为什么这样做? 这是一个任务相关的表现吗?例如,您在 NER 问题中进行填充的原因与您在翻译问题中进行填充的
我一直在研究 NLP 并使用 notepad++ 来处理文本文件。这很好,在某些情况下,但问题是无法使用包含大量文本的大型文件进行锻炼。 VIM 不支持 UTF-8。哪一个是最好的支持 unicode
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 3年前关闭。 Improve this questi
我在 Stanford CoreNLP demo page 中解析了以下句子和 Stanford parser demo page .尽管两者都会导致可以暗示目的语义的解析(相应地取决于 advcl
语义网和自然语言处理之间究竟有什么区别? 语义网是自然语言处理的一部分吗? 最佳答案 这是两个独立的学科领域,但它们在某些地方确实重叠。因为文档,无论其格式如何,都是由异构语法和语义组成的,所以目标是
我需要解析非结构化文本并将相关概念转换为格式,以便所有三元组可以合并形成一个图。例如如果我有 2 个句子,比如 A improves B 和 B improves C,我应该能够创建一个像这样的图 A
使用 GATE 时,本体在自然语言处理中的作用是什么? 据我了解,在较高层次上,本体允许对由类、它们的实例、这些实例的属性以及域中类之间的关系组成的域进行建模。 但是,在使用 GATE 时创建自定义本
我最后一年的工程项目要求我使用 Java 或 Python 构建一个应用程序,该应用程序使用自然语言处理来总结文本文档。我什至如何开始编写这样的应用程序? 根据一些研究,我刚刚注意到基于提取的摘要对我
我想知道是否可以使用 Stanford CoreNLP检测一个句子是用哪种语言写的?如果是这样,这些算法的精确度如何? 最佳答案 几乎可以肯定,此时斯坦福 COreNLP 中没有语言识别。 “几乎”
我在一家制造可以与 child 交谈的玩具车的公司工作。我们想使用斯坦福核心 NLP 作为解析器。但是,它以 GPL 许可:他们不允许在商业上使用 NLP。我可以从斯坦福 NLP 小组购买其他许可证吗
我想使用 Natural Language Processing Libraries 从句子中找到谓词和主语.这种技术在NLP的世界里有什么名字吗?或者有没有办法做到这一点? Example : He
所以,这个问题可能有点幼稚,但我认为询问 Stackoverflow 的友好人士不会有什么坏处。 我现在的公司已经使用第三方 API 进行 NLP 一段时间了。我们基本上对一个字符串进行 URL 编码
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 3年前关闭。 Improve thi
这可能是一个愚蠢的问题,但是如何迭代解析树作为 NLP 解析器(如斯坦福 NLP)的输出?它都是嵌套的括号,既不是 array 也不是 dictionary 或我使用过的任何其他集合类型。 (ROOT
我是一名优秀的程序员,十分优秀!