集成NLPIR語義分析_第1頁
集成NLPIR語義分析_第2頁
集成NLPIR語義分析_第3頁
集成NLPIR語義分析_第4頁
集成NLPIR語義分析_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、Java集成NLPIR語義分析系統(tǒng)1 簡介NLPIR是一套專門針對原始文本集進行處理和加工的軟件,提供了中間件處理效果的可視化展示,也可以作為小規(guī)模數(shù)據(jù)的處理加工工具。用戶可以使用該軟件對自己的數(shù)據(jù)進行處理。NLPIR分詞系統(tǒng)前身為2000年發(fā)布的ICTCLAS詞法分析系統(tǒng),從2009年開始,為了和以前工作進行大的區(qū)隔,并推廣NLPIR自然語言處理與信息檢索共享平臺,調(diào)整命名為NLPIR分詞系統(tǒng)。NLPIR 系統(tǒng)支持多種編碼(GBK 編碼、UTF8 編碼、BIG5 編碼)、多種操作系統(tǒng)(Windows, Linux, FreeBSD 等所有主流操作系統(tǒng))、多種開發(fā)語言與平臺(包括:C/C+/C

2、#,Java,Python,Hadoop 等)。本文中,我們討論NLPIR與Java Web項目的集成使用。2 源碼下載 out里輸入地址:3 與web項目集成web項目的搭建與配置在這里不在累述。NLPIR2016版本可以使用配置文件配置需要讀取的dll路徑使用配置文件時,代碼中初始化接口時需要修改讀取dll文件的路徑。如:圖中的nlpirpathString需要讀取dll_or_so_path來獲得(避免又用配置文件,有放dll到tomcat bin目錄下的問題)如果不用配置文件,則需要把用到的dll放到tomcat的bin目錄下。我們以提取文本摘要為例,講一下集成NLPIR。3.1 加入

3、jar包pom.xml里加入jna包的引用3.2 拷貝Data和win64兩個文件夾把下載的源碼中Data和win64兩個文件夾拷貝到tomcat的bin目錄下3.3 拷貝代碼拷貝src下的文件到項目下,修改包路徑3.4 對方法進行簡單封裝ClibraryDS.java類的代碼如下,我把初始化接口的靜態(tài)變量放到了自己的測試類中package com.springmvc.nlpir.summary.lingjoin.summary;import com.sun.jna.Library;/* * 生成摘要的組件,該組件可以自定義摘要的長度 * author lingjoin_zyp * */pub

4、lic interface CLibraryDS extends Library / 定義并初始化接口的靜態(tài)變量/* * 功能:初始化 * param sPath Data目錄的父目錄,可以直接傳入""來表示尋找項目下的Data目錄 * param nEncoding 設(shè)置分詞編碼,只能處理相應(yīng)初始編碼的文件.默認為GBK。 * 0:GBK;1:UTF-8;2:BIG5;3:GBK_FANTI * param sLicenseCode 授權(quán)碼,這里直接用"0",就可以了 * return true - 成功;false - 失敗 * 備注:在進程中此函數(shù)

5、必須在其他函數(shù)之前調(diào)用(只需執(zhí)行一次) */public boolean DS_Init(String sPath, int nEncoding, String sLicenseCode);/* * 功能:生成單文檔摘要 * param sText 文檔內(nèi)容 * param fSumRate 文檔摘要占原文百分比,該值最大不能超過1.00 * param iSumLen 用戶限定的摘要長度 * param bHtmlTagRemove-IN 是否需要對原文進行Html標簽的去除 * return * 備注:fSumRate和iSumLen這個兩個參數(shù)設(shè)置一個就可以了,例如: * DS_Sing

6、leDoc(sText, 0.00f, 80); * DS_SingleDoc(sText, 0.50f, 0); */public String DS_SingleDoc(String sText, float fSumRate, int iSumLen, boolean bHtmlTagRemove);/* * 退出,釋放資源;進程結(jié)束前須調(diào)用它釋放所占用的內(nèi)存資源 * 備注:如果需要頻繁的生成摘要,那么不要調(diào)用這個方法 */public void DS_Exit();/* * 獲得錯誤消息 * return 錯誤消息 * 備注:如果初始化失敗,可以用該方法輸出初始化失敗原因 */publ

7、ic String DS_GetLastErrMsg();新建一個測試類,封裝接口方法package com.springmvc.nlpir.impl;import java.math.BigDecimal;import com.springmvc.nlpir.keyword.CLibrary;import com.springmvc.nlpir.summary.lingjoin.deepClassify.DeepClassifierLibrary;import com.springmvc.nlpir.summary.lingjoin.fileutil.OSinfo;import com.sp

8、ringmvc.nlpir.summary.lingjoin.summary.CLibraryDS;import com.springmvc.utils.DoProperties;import com.sun.jna.Native;public class MyTest private CLibrary instance;private CLibraryDS dsInstance;private DeepClassifierLibrary dcInstance;public MyTest()CLibraryDS dsInstance = (CLibraryDS) Native.loadLibr

9、ary(OSinfo.getSysAndBit("LJSummary"), CLibraryDS.class);boolean flag = dsInstance.DS_Init("", 1, "0");if (flag = false) / 如果初始化失敗,就打印出失敗原因System.out.println(dsInstance.DS_GetLastErrMsg();String nlpirpathString = DoPperties.getProperty("dll_or_so_path&q

10、uot;); nlpirpathString = nlpirpathString.substring(0, nlpirpathString.lastIndexOf("."); System.out.println(nlpirpathString); this.dsInstance = dsInstance; CLibrary instance = (CLibrary)Native.loadLibrary(nlpirpathString, CLibrary.class);int init_flag = instance.NLPIR_Init("", 1,

11、"0");if (0 = init_flag) String resultString = instance.NLPIR_GetLastErrorMsg(); System.err.println("初始化失敗!n"+resultString); this.instance = instance;DeepClassifierLibrary dcInstance = (DeepClassifierLibrary)Native.loadLibrary(OSinfo.getSysAndBit("DeepClassifier"), DeepC

12、lassifierLibrary.class);boolean dcflag = dcInstance.DC_Init("", 1, 800, "");if (dcflag) System.out.println("deepClassifier初始化成功"); else System.out.println("deepClassifier初始化失?。?quot; + dcInstance.DC_GetLastErrorMsg();System.exit(1);this.dcInstance = dcInstance;/Sys

13、tem.out.println(System.getProperty("user.dir");public void setInstance(CLibrary instance) this.instance = instance;public void setDsInstance(CLibraryDS dsInstance) this.dsInstance = dsInstance;public CLibraryDS getDsInstance()return this.dsInstance;public CLibrary getInstance()return this.

14、instance;public DeepClassifierLibrary getDcInstance() return dcInstance;public void setDcInstance(DeepClassifierLibrary dcInstance) this.dcInstance = dcInstance;/* * 分詞 * param txt 需要分詞的字符串 * param bPOSTagged 是否輸出詞性 1:輸出;0:不輸出 */public String NLPIR_ParagraphProcess(String txt,int bPOSTagged)String r

15、esultString = this.instance.NLPIR_ParagraphProcess(txt, bPOSTagged);String arrStrings = resultString.split(" ");return arrStrings;/* * 詞頻 * 方法名稱 :NLPIR_WordFreqStat * 功能描述 : * 邏輯描述 : * param txt * return :String * throws :無 * since :Ver 1.00 */public String NLPIR_WordFreqStat(String txt)St

16、ring nativeBytes = this.instance.NLPIR_WordFreqStat(txt);return nativeBytes;/* * 添加自定義詞典 * param strings 用戶詞組 * param flag 是否持久化 true:yes;false:no */public void NLPIR_AddUserWord(String strings, boolean flag)if(strings != null)if(strings.length > 0)for(int i=0; i<strings.length; i+)this.instan

17、ce.NLPIR_AddUserWord(stringsi);if(flag)this.instance.NLPIR_SaveTheUsrDic();elseSystem.out.println("沒有需要添加的用戶詞典!");elseSystem.out.println("要添加的用戶詞典為空!");/* * 刪除自定義詞典 * param strings 刪除數(shù)組 * param flag 是否持久化 1:yes; 0:no */public void NLPIR_DelUsrWord(String strings, boolean flag)if(

18、strings != null)if(strings.length > 0)for(int i=0; i<strings.length; i+)this.instance.NLPIR_DelUsrWord(stringsi);if(flag)this.instance.NLPIR_SaveTheUsrDic();elseSystem.out.println("沒有需要刪除的用戶詞典!");elseSystem.out.println("要刪除的用戶詞典為空!");/* * 導(dǎo)入用戶詞典 * param path 文件路徑 * param fl

19、ag 是否持久化 */public void NLPIR_ImportUserDict(String path, boolean flag)if(path != null && !"".equals(path)this.instance.NLPIR_ImportUserDict(path);if(flag)this.instance.NLPIR_SaveTheUsrDic();/* * 提取關(guān)鍵詞 * param sLine 需要提取關(guān)鍵字字符串 * param nMaxKeyLimit 關(guān)鍵字最大長度 * param bWeightOut 是否輸出權(quán)重 *

20、/public String NLPIR_GetKeyWords(String sLine, int nMaxKeyLimit, boolean bWeightOut)String resultString = this.instance.NLPIR_GetKeyWords(sLine,nMaxKeyLimit,bWeightOut);String arrStrings = resultString.split("#");return arrStrings;/* * 提取新詞 * param sLine * param nMaxKeyLimit * param bWeigh

21、tOut * return */public String NLPIR_GetNewWords(String sLine, int nMaxKeyLimit, boolean bWeightOut)String resultString = this.instance.NLPIR_GetNewWords(sLine,nMaxKeyLimit,bWeightOut);String arrStrings = resultString.split("#");return arrStrings;/* * 處理文件分詞 * param resourcefile 源文件 * param

22、 resultfile 存儲結(jié)果文件 * param bPOStagged 判斷是否需要位置標記,0:無標記;1:有標記。默認值為1。 * return */public double NLPIR_FileProcess(String resourcefile, String resultfile,int bPOStagged)double double1 = this.instance.NLPIR_FileProcess(resourcefile, resultfile, bPOStagged);if(double1 > 0)BigDecimal b = new BigDecimal(

23、double1); System.out.println(b.divide(new BigDecimal(1000), 2, BigDecimal.ROUND_HALF_UP)+"秒"); elseSystem.out.println("無結(jié)果");return double1;/* * 從文件中提取關(guān)鍵詞 * param sTxtFile * param nMaxKeyLimit * param bWeightOut * return */public String NLPIR_GetFileKeyWords(String sTxtFile,int n

24、MaxKeyLimit, boolean bWeightOut)String resultString = this.instance.NLPIR_GetFileKeyWords(sTxtFile,nMaxKeyLimit,bWeightOut);String arrStrings = null;if(resultString != null && resultString.length() > 0)arrStrings = resultString.split("#");return arrStrings;/* * 退出程序并釋放所有資源和NLPIR

25、使用的緩存數(shù)據(jù)。 */public void NLPIR_Exit()this.instance.NLPIR_Exit();/* * 功能:生成單文檔摘要 * param sText 文檔內(nèi)容 * param fSumRate 文檔摘要占原文百分比,該值最大不能超過1.00 * param iSumLen 用戶限定的摘要長度 * param bHtmlTagRemove-IN 是否需要對原文進行Html標簽的去除 * return * 備注:fSumRate和iSumLen這個兩個參數(shù)設(shè)置一個就可以了,例如: * DS_SingleDoc(sText, 0.00f, 80); * DS_SingleDoc(sText, 0.50f, 0); */public String DS_SingleDoc(String sText, float fSumRate, int iSumLen, boolean bHtmlTagRemove)String summary = this.dsInstance.DS_SingleDoc(sText, fSumRate, iSumLen, bHtmlTagRemove);/CLibraryDS.Instance.DS_Exit();return summary;/* * * 方法名稱 :DS_Exit *

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論