![JAR search and dependency download from the Maven repository](/logo.png)
edu.berkeley.nlp.PCFGLA.MultiThreadedParserWrapper Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of berkeleyparser Show documentation
Show all versions of berkeleyparser Show documentation
The Berkeley parser analyzes the grammatical structure of natural language using probabilistic context-free grammars (PCFGs).
The newest version!
/**
*
*/
package edu.berkeley.nlp.PCFGLA;
import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import edu.berkeley.nlp.syntax.Tree;
import edu.berkeley.nlp.util.PriorityQueue;
/**
* @author petrov
*
*/
public class MultiThreadedParserWrapper {
int nThreads;
boolean allBusy;
PriorityQueue>> queue;
int lastReturned, lastSubmitted;
ConstrainedArrayParser[] parsers;
ExecutorService pool;
Future[] submits;
public MultiThreadedParserWrapper(ConstrainedArrayParser parser, int threads){
nThreads = threads;
pool = Executors.newFixedThreadPool(nThreads);
submits = new Future[nThreads];
parsers = new ConstrainedArrayParser[nThreads];
queue = new PriorityQueue>>();
parsers[0] = parser;
parsers[0].setID(0,queue);
for (int i=0; i> getNext(){
if (!hasNext()) return null;
lastReturned++;
synchronized(queue) {
List> result = queue.next();
queue.notifyAll();
return result;
}
}
public void parseThisSentence(List sentence){
// go through threads and submit this sentence to the next available thread, after getting the threads last result
synchronized(queue) {
while (true) {
for (int i=0; i
© 2015 - 2025 Weber Informatics LLC | Privacy Policy