Я хочу сделать обнаружение предложения с помощью OPENNLP и Hadoop. Я успешно реализовал это на Java. Хотите реализовать их на платформе Mapreduce. Может кто-нибудь мне помочь?Определение приговора с использованием opennlp на hadoop
ответ
Я сделал это двумя разными способами. Один из способов - вывести модель определения Sentence на каждый узел в стандартный каталог (т. Е./Opt/opennlpmodels /) и на уровне класса в классе класса, прочитанного в сериализованной модели, а затем использовать его соответствующим образом на вашей карте или уменьшить функцию.
Другой способ - разместить модель в базе данных или распределенном кеше (в виде капли или что-то еще ... Я использовал Accumulo для хранения моделей категоризации документов до этого). то на уровне класса выполните соединение с базой данных и получите модель как bytearrayinputstream.
Я использовал Puppet для выталкивания моделей, но использую то, что вы обычно используете, чтобы обновлять файлы на вашем кластере.
В зависимости от вашей версии hadoop вы можете использовать модель в качестве свойства в задании, а затем только мастер (или везде, где вы запускаете задания) должен иметь фактический файл модели на нем. Я никогда не пробовал это.
Если вам нужно знать, как на самом деле использовать детектор предложений OpenNLP, дайте мне знать, и я отправлю пример. НТН
import java.io.File;
import java.io.FileInputStream;
import opennlp.tools.sentdetect.SentenceDetector;
import opennlp.tools.sentdetect.SentenceDetectorME;
import opennlp.tools.sentdetect.SentenceModel;
import opennlp.tools.util.Span;
public class SentenceDetection {
SentenceDetector sd;
public Span[] getSentences(String docTextFromMapFunction) throws Exception {
if (sd == null) {
sd = new SentenceDetectorME(new SentenceModel(new FileInputStream(new File("/standardized-on-each-node/path/to/en-sent.zip"))));
}
/**
* this gives you the actual sentences as a string array
*/
// String[] sentences = sd.sentDetect(docTextFromMapFunction);
/**
* this gives you the spans (the charindexes to the start and end of each
* sentence in the doc)
*
*/
Span[] sentenceSpans = sd.sentPosDetect(docTextFromMapFunction);
/**
* you can do this as well to get the actual sentence strings based on the spans
*/
// String[] spansToStrings = Span.spansToStrings(sentPosDetect, docTextFromMapFunction);
return sentenceSpans;
}
}
НТН ... просто убедитесь, что файл находится в месте. Есть более элегантные способы сделать это, но это работает, и это просто.
это может помочь, а http://stackoverflow.com/questions/10592147/unable-to-load-opennlp-sentence-model-in-hadoop-map-reduce-job?rq=1 – markg
Привет, это будет большой помощью в понимании того, можно ли разместить сайт на каком-то примере. – user2830876