基於Gate的ANNIE插件的中文信息抽取

        在上一篇文章基於Gate的中文信息抽取API調用方式--未成功中本來想採用Gate中的中文插件進行命名實體識別,但是沒有成功,最後只能通過擴展Gate中的ANNIE插件來實現了。

       ANNIE是Gate中用於英文信息抽取的插件,可以實現英文中的諸如命名實體識別等任務。要想處理中文信息需要對ANNIE進行擴展,包括擴展詞表以及規則。ANNIE的主要詞表爲主目錄是ANNIE\resource\gazetteer,後綴名爲lst詞表文件中存放着詞語,詞表以UTF-8編碼,每個詞語獨立一行。Gate需要一個索引文件確定詞表文件以及類別之間的對應關係,一般爲lists.def,內容形如

airports.lst:location:airport

其中airports.lst爲詞表文件,location是爲詞表指定的主要類型,airport爲指定的次要類型。這些詞表會編譯成有限狀態機,用於後續過程調用。

      語法規則指定需要識別的特定類型,以jape爲後綴的文件均是存放的語法規則,放置目錄爲ANNIE\resource\NE,可以根據自己的需要進行擴展。main.jape存放着所需要的所有規則文件名稱。

      具體的代碼和執行過程與前一篇中的內容一致,主要區別在於加載ANNIE。

	public void initAnnie(){
		Out.prln("Initialising ANNIE...");
		try {
			annieController = (SerialAnalyserController) PersistenceManager.loadObjectFromFile(new File(new File(Gate.getPluginsHome(),ANNIEConstants.PLUGIN_DIR), ANNIEConstants.DEFAULT_FILE));
		} catch (PersistenceException e) {
			logger.error(e.getMessage());
			e.printStackTrace();
		} catch (ResourceInstantiationException e) {
			logger.error(e.getMessage());
			e.printStackTrace();
		} catch (IOException e) {
			logger.error(e.getMessage());
			e.printStackTrace();
		}

		Out.prln("...ANNIE loaded");
	} 

執行結果良好,能夠達到我的需要。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章