All Downloads are FREE. Search and download functionalities are using the official Maven repository.

edu.berkeley.nlp.PCFGLA.MultiThreadedParserWrapper Maven / Gradle / Ivy

Go to download

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