Skip to content

Commit b9f0712

Browse files
authored
OPENNLP-1684: Reduce creation of String instances in BrownBigramFeatureGenerator (#731)
1 parent 1a50db3 commit b9f0712

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

opennlp-tools/src/main/java/opennlp/tools/util/featuregen/BrownBigramFeatureGenerator.java

+10-8
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@
2424
*/
2525
public class BrownBigramFeatureGenerator implements AdaptiveFeatureGenerator {
2626

27+
private static final String BROWNCLUSTER = "browncluster";
28+
private static final String FEATURE_NEXT_BROWNCLUSTER_BASE = BROWNCLUSTER + ",n" + BROWNCLUSTER + "=";
29+
private static final String FEATURE_PREV_BROWNCLUSTER_BASE = "p" + BROWNCLUSTER + "," + BROWNCLUSTER + "=";
30+
2731
private final BrownCluster brownCluster;
2832

2933
/**
@@ -38,20 +42,18 @@ public BrownBigramFeatureGenerator(BrownCluster brownCluster) {
3842
public void createFeatures(List<String> features, String[] tokens, int index,
3943
String[] previousOutcomes) {
4044

41-
List<String> wordClasses = BrownTokenClasses.getWordClasses(tokens[index], brownCluster);
45+
List<String> wc = BrownTokenClasses.getWordClasses(tokens[index], brownCluster);
4246
if (index > 0) {
43-
List<String> prevWordClasses = BrownTokenClasses.getWordClasses(tokens[index - 1], brownCluster);
44-
for (int i = 0; i < wordClasses.size() && i < prevWordClasses.size(); i++) {
45-
features.add("p" + "browncluster" + "," + "browncluster" + "="
46-
+ prevWordClasses.get(i) + "," + wordClasses.get(i));
47+
List<String> prevWC = BrownTokenClasses.getWordClasses(tokens[index - 1], brownCluster);
48+
for (int i = 0; i < wc.size() && i < prevWC.size(); i++) {
49+
features.add(FEATURE_PREV_BROWNCLUSTER_BASE + prevWC.get(i) + "," + wc.get(i));
4750
}
4851
}
4952

5053
if (index + 1 < tokens.length) {
5154
List<String> nextWordClasses = BrownTokenClasses.getWordClasses(tokens[index + 1], brownCluster);
52-
for (int i = 0; i < wordClasses.size() && i < nextWordClasses.size(); i++) {
53-
features.add("browncluster" + "," + "n" + "browncluster" + "="
54-
+ wordClasses.get(i) + "," + nextWordClasses.get(i));
55+
for (int i = 0; i < wc.size() && i < nextWordClasses.size(); i++) {
56+
features.add(FEATURE_NEXT_BROWNCLUSTER_BASE + wc.get(i) + "," + nextWordClasses.get(i));
5557
}
5658
}
5759
}

0 commit comments

Comments
 (0)