起源
想用openie5.0進行開放信息抽取,但是因爲其中一個重要的附件languagemodel因爲有6.8G,且存儲在Google硬盤,下載時經常斷開連接(居然不能斷點續傳,西方神奇)。搜索博客後,發現有人寫了一份參考實現。但是我在具體使用時發現,他遺漏了重要細節。下面是我重新寫的一個可以完美實現openIE 5的berkeley language model的生成。
過程
1、下載如下兩個文件(都來自berkeley的小組官網):
截止2019年3月21日仍可以有效訪問。
http://tomato.banatao.berkeley.edu:8080/google_books_binaries/eng.blm.gz
http://tomato.banatao.berkeley.edu:8080/google_books_dirs/books_google_ngrams_eng/1gms/vocab_cs.gz
2、git 獲取berkeley的項目 https://github.com/adampauls/berkeleylm
3、在src文件夾下添加一個如下類stupidOff
import edu.berkeley.nlp.lm.StupidBackoffLm;
import edu.berkeley.nlp.lm.io.IOUtils;
public class stupidOff {
public static void main(String []args) {
String file1="/home/rise1001/project/berkeleylm-master/languageModel"; //定義生成的語言模型位置
String file2="/home/rise1001/project/berkeleylm-master/src/eng.blm.gz";
String file3="/home/rise1001/project/berkeleylm-master/src/vocab_cs.gz";
StupidBackoffLm<String> stupidBackoffLm=edu.berkeley.nlp.lm.io.LmReaders.readGoogleLmBinary(file2, file3);
IOUtils.writeObjFileHard(file1,stupidBackoffLm);
}
}
項目整體結構和最後生成的模型見下圖