Фактический ответ
Вы просто хотели выровнять текст (из целевого файла и исходного файла), верно?
Если это так, после создания пары предложений вам даже не нужно было помещать их в CombinedAligner
.
Вы можете получить выравнивание: (SentencePair, boolean)
от этого. Логическое значение, если вы хотите выравнивание дерева.
Помещение в конструктор автоматически сгенерирует выравнивание!
Так просто!
Вот где я получил код: http://code.google.com/p/berkeleyaligner/source/browse/trunk/src/edu/berkeley/nlp/wa/mt/Alignment.java
UPDATE
К сожалению, я неправильно понял ваш вопрос и опубликовал неуместный ответ.
Однако я скачал файл jar, нашел CombinedAligner.class и декомпилировал его .
Вот что я получил:
пакет edu.berkeley.nlp.wordAlignment.combine;
import edu.berkeley.nlp.mt.Alignment;
import edu.berkeley.nlp.mt.SentencePair;
import edu.berkeley.nlp.wordAlignment.PosteriorAligner;
import edu.berkeley.nlp.wordAlignment.WordAligner;
import fig.basic.Fmt;
import fig.basic.ListUtils;
import java.util.ArrayList;
import java.util.List;
public abstract class CombinedAligner extends PosteriorAligner {
private static final long serialVersionUID = 1;
WordAligner wa1;
WordAligner wa2;
public CombinedAligner (WordAligner, WordAligner)
public String getName()
public Alignment alignSentencePair(SentencePair)
public List alignSentencePairReturnAll(SentencePair)
public void setThreshold(int)
abstract Alignment combineAlignments(Alignment, Alignment, SentencePair)
}
Похоже, класс Alignment
, который вы используете, edu.berkeley.nlp.mt.Alignment
.
В любом случае, CombinedAligner
является абстрактным, поэтому вы не можете создать его экземпляр. И я не знаю, что такое .something
, потому что нет статического метода или поля.
Я думаю, что вы хотите, однако, это alignSentencePair(SentencePair)
.
Чтобы получить это, вам нужно использовать подкласс CombinedAligner
, так как CombinedAligner
является абстрактным.
Итак, покопавшись в файлах, я нашел следующие подклассы:
edu.berkeley.nlp.wordAlignment.combine.HardUnion
edu.berkeley.nlp.wordAlignment.combine.HardIntersect
edu.berkeley.nlp.wordAlignment.combine.SoftUnion
edu.berkeley.nlp.wordAlignment.combine.SoftIntersect
Вы можете использовать их вместо CombinedAligner
и вставить два предложения в виде SentencePair
!
После проверки я понял, что WordAligner
тоже абстрактно!
package edu.berkeley.nlp.wordAlignment;
import edu.berkeley.nlp.mt.Alignment;
import edu.berkeley.nlp.mt.SentencePair;
import fig.basic.LogInfo;
импорт java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
импорт java.util.Iterator;
import java.util.List;
import java.util.Map;
открытый абстрактный класс WordAligner реализует Serializable {
private static final long serialVersionUID = 1;
protected String modelPrefix;
public WordAligner ()
public abstract String getName()
public void setThreshold(double)
public Alignment alignSentencePair(SentencePair)
public Map alignSentencePairs(List)
public Alignment thresholdAlignment(Alignment, double)
public String getModelPrefix()
public String toString()
}
Я нашел подкласс, хотя:
edu.berkeley.nlp.wordAlignment.IterWordAligner
К сожалению, это все еще абстрактно.
Но есть подкласс IterWordAligner
, который не:
edu.berkeley.nlp.wordAlignment.EMWordAligner
Однако конструктор действительно странный.
public EMWordAligner (SentencePairState$Factory, Evaluator, boolean)
Он использует ВНУТРЕННИЙ КЛАСС в КОНСТРУКТОРЕ !? Это ужасная практика программирования.
WAIT ...
Я нашел выравниватель слов!
http://code.google.com/p/tdx-nlp/source/browse/trunk/pa2/java/src/cs224n/assignments/WordAlignmentTester.java?r=67
Может быть, это поможет, и вы можете решить с ним свою проблему.