Lucene 单词共现-在一组n-gram中查找一个词的共现

Lucene 单词共现-在一组n-gram中查找一个词的共现,lucene,hadoop,nlp,weka,Lucene,Hadoop,Nlp,Weka,我该如何用Java之类的语言编写一个共现类,它获取一个满是n-gram的文件,并计算给定输入术语的单词共现 在Hadoop中是否有任何库或包可以使用Lucene(索引)或类似map reduce的东西来处理n-gram列表 谢谢。好的,假设您想在ngrams文件中找到两个不同单词的共现形式 下面是Java的伪代码: // Co-occurrence matrix Hashmap<String,HashMap<String,Integer>> map = new HashM

我该如何用Java之类的语言编写一个共现类,它获取一个满是n-gram的文件,并计算给定输入术语的单词共现

在Hadoop中是否有任何库或包可以使用Lucene(索引)或类似map reduce的东西来处理n-gram列表


谢谢。

好的,假设您想在ngrams文件中找到两个不同单词的共现形式

下面是Java的伪代码:

// Co-occurrence matrix
Hashmap<String,HashMap<String,Integer>> map = new HashMap();

// List of ngrams
ArrayList<ArrayList<String>> ngrams = ..... // assume we've loaded them into here already

// build the matrix
for(ArrayList<String> ngram:ngrams){
  // Calculate word co-occurrence in ngram for all words
  // result is an map strings-> count
  // words in alphabetical order
  Hashmap<String,<ArrayList<String>,Integer> wordCoocurrence = cooccurrence(ngram) // assume we have this

  // then just join this with original
}

// and just query with words in alphabetic order
//共现矩阵
Hashmap=newHashMap();
//NGRAM列表
ArrayList ngrams=……//假设我们已经把它们装到这里了
//构建矩阵
用于(阵列列表ngram:ngrams){
//计算所有单词在ngram中的单词共现
//结果是映射字符串->计数
//按字母顺序排列的单词

HashMap任何人都有任何想法……认为Solr/Lucene可能是最好的方法,但不确定如何……听起来很愚蠢,但是:它真的需要吗?如果语料库是几百万个标记,或者ngrams是几百万个,一个简单的java或python程序就可以了。我曾经做过类似的事情,只使用perl和mysql,并在一个屏幕上显示它webpage@GatoVolad或者你们有什么例子吗?很好的问题——我希望有更多的答案——我总是写一个……也许是时候发布一些代码了