CoreNLP是否具有用于获取带有位置等的ngram的API?
例如,我有一个字符串“我有最好的汽车”。如果我使用的是mingrams = 1和maxgrams = 2。我应该像下面这样得到以下内容。我知道带有ngram函数的stringutil,但如何获得位置。
(I,0)
(I have,0)
(have,1)
(have the,1)
(the,2)
(the best,2) etc etc
基于我传递的字符串。
任何帮助都非常感谢。
谢谢
我在公用程序中看不到任何东西。以下是一些示例代码可以帮助您:
import java.io.*;
import java.util.*;
import edu.stanford.nlp.io.*;
import edu.stanford.nlp.ling.*;
import edu.stanford.nlp.pipeline.*;
import edu.stanford.nlp.trees.*;
import edu.stanford.nlp.semgraph.*;
import edu.stanford.nlp.trees.TreeCoreAnnotations.*;
import edu.stanford.nlp.util.*;
public class NGramPositionExample {
public static List<List<String>> getNGramsPositions(List<String> items, int minSize, int maxSize) {
List<List<String>> ngrams = new ArrayList<List<String>>();
int listSize = items.size();
for (int i = 0; i < listSize; ++i) {
for (int ngramSize = minSize; ngramSize <= maxSize; ++ngramSize) {
if (i + ngramSize <= listSize) {
List<String> ngram = new ArrayList<String>();
for (int j = i; j < i + ngramSize; ++j) {
ngram.add(items.get(j));
}
ngram.add(Integer.toString(i));
ngrams.add(ngram);
}
}
}
return ngrams;
}
public static void main (String[] args) throws IOException {
String testString = "I have the best car";
List<String> tokens = Arrays.asList(testString.split(" "));
List<List<String>> ngramsAndPositions = getNGramsPositions(tokens,1,2);
for (List<String> np : ngramsAndPositions) {
System.out.println(Arrays.toString(np.toArray()));
}
}
}
您可以剪切并粘贴该实用程序方法。
这可能是添加的有用功能,因此我将其放在我们要处理的事情清单上。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句