Я пишу проект, который работает с НЛП (парсер естественного языка).Я использую анализатор Стэнфорда.
Я создаю пул потоков, который принимает предложения и запускает анализатор вместе с ними.Когда я создаю один поток, все работает нормально, но когда я создаю больше, я получаю ошибки.Процедура «test» находит слова, которые имеют некоторые связи.Если я делаю синхронизированный, он должен работать как один поток, но все равно я получаю ошибки.Моя проблема в том, что у меня есть ошибки в этом коде:
public synchronized String test(String s,LexicalizedParser lp )
{
if (s.isEmpty()) return "";
if (s.length()>80) return "";
System.out.println(s);
String[] sent = s.split(" ");
Tree parse = (Tree) lp.apply(Arrays.asList(sent));
TreebankLanguagePack tlp = new PennTreebankLanguagePack();
GrammaticalStructureFactory gsf = tlp.grammaticalStructureFactory();
GrammaticalStructure gs = gsf.newGrammaticalStructure(parse);
Collection tdl = gs.typedDependenciesCollapsed();
List list = new ArrayList(tdl);
//for (int i=0;i<list.size();i++)
//System.out.println(list.get(1).toString());
//remove scops and numbers like sbj(screen-4,good-6)->screen good
Pattern p = Pattern.compile(".*\\((.*?)\\-\\d+,(.*?)\\-\\d+\\).*");
if (list.size()>2){
// Split input with the pattern
Matcher m = p.matcher(list.get(1).toString());
//check if the result have more than 1 groups
if (m.find()&& m.groupCount()>1){
if (m.groupCount()>1)
{
System.out.println(list);
return m.group(1)+m.group(2);
}}
}
return "";
}
у меня есть следующие ошибки:
на blogsOpinions.ParserText. (ParserText.java:47) в blogsOpinions.ThreadPoolTest $ 1.run (ThreadPoolTest.java:50) в blogsOpinions.ThreadPool $ PooledThread.run (ThreadPoolTest.java:196) Восстановление с использованием стратегии падения через: создаст дерево (X ...).Исключительная ситуация в потоке "PooledThread-21".apply (LexicalizedParser.java:289) на блогахThreadPoolTest $ 1.run (ThreadPoolTest.java:50) в блогаххорошо, и я хочу получить экран хорошо из списка, который я получаю, а не как list.get(1)
.