當前位置:首頁 » 操作系統 » linuxictclas

linuxictclas

發布時間: 2022-02-22 10:08:43

1. ictclas 怎麼使用 python

以前ictclas014似乎只能在windows下被python調用。我就成功過。 不過到了linux下比較麻煩。java調用是可以的。但是python似乎有些麻煩。不過當時谷哥的code項目里有一個開源版本。 現在不用這么麻煩了。

2. 有人在linux中nlpir/ictclas2014分詞系統使用python編譯過的嗎

直接放在最外層才行,不要放在src裡面,當然你也要把data文件夾放在最外面,還有一系列的文檔也要放在最外面,只有.java文件放在src下

3. 誰會用ICTCLAS這個分詞程序

ICTCLAS分詞系統是個NB的系統,這幾天找到了仔細試了試,效率奇高,比自己搞字典,分詞演算法效率不知高了很多倍,用起來也是非常簡單的,BOSS需要導出自定義詞庫,然後用文章訓練詞庫,不管了,反正可以使用了。DT地用hash做了兩個星期,進度很慢,分析一本《天龍八部》,統計出現的詞語頻率(詞語只是僅僅基於頻率,在並沒有字典的情況下無法實現智能分詞!)大概要花費十幾分鍾,可見效率底下,而且內存200M左右。使用ICTCLAS分詞系統可以高效地實現分詞。下面把過程貼出來。
使用方法,首先到網上下載ICTCLAS,因為我是windows下的C++實現, 下載ICTCLAS2011_Windows_32_c,解壓,裡面有很好的Demo,Doc, API目錄下的所有文件(夾)到你所在的工程,在你的源文件加上
#include "ICTCLAS50.h"
#pragma comment(lib, "ICTCLAS50.lib") //ICTCLAS50.lib庫加入到工程中
//
//your code here,可參考Demo裡面的代碼
//
即可。
大概的函數C++函數介面都在Doc文件下的文檔中:

bool ICTCLAS_Init(const char* pszInitDir=NULL);初始化函數
返回值
如果初始化成功返回true, 否則返回false. 如初始化不成功,請查看ictclas.log文件了解詳細錯誤原因.
參數
pszInitDir:初始化路徑,應包含配置文件(Configure.xml)和詞典目錄(Data目錄)以及授權文件(user.lic). 如果這些文件及目錄在系統運行當前目錄下,此參數可以為null。

bool ICTCLAS_Exit( );退出,釋放內存
返回值

成功返回true;否則返回false。

unsigned int ICTCLAS_ImportUserDict(const char *sFilename,eCodeType eCT)
//導入用戶自定義詞典
返回值
導入成功的詞的個數
參數
sFilename: 用戶定義詞典文件
eCT:編碼格式
int ICTCLAS_ParagraphProcess(const char *sParagraph,int nPaLen,eCodeType eCt,int bPOStagged,char* sResult);//對一段文字進行分詞
返回值
返回結果緩沖區的指針(sResult)以及結果的長度R
參數
sParagraph: 原始文欄位
nPaLen: 文欄位的長度
eCodeType: 文欄位的編碼格式
bPOStagged: 需不需要根據標注集做標記 0 = 做標記 ; 1 = 不標記; 默認為1.
sResult: 輸出結果
t_pstRstVec ICTCLAS_ParagraphProcessA(const char *sParagraph,int PaLen,eCodeType eCodeType,int bPOStagged,int &nRstCnt);
//處理文欄位
返回值
結果vector的指針,系統調用,用戶無法分配以及釋放

struct stResult{
int start; //start position
int length; //length
#ifdef POS_TAGGER
int iPOS; //POS
char sPOS[POS_SIZE];//word type
#endif
int word_ID; //word_ID
int word_type; //Is the word of the user's dictionary?(0-no,1-yes)
int weight;// word weight
};

參數
sParagraph: 原始文欄位
nPaLen: 文欄位長度
eCodeType: 編碼格式
bPOStagged:

需不需要根據標注集做標記 0 = 做標記 ; 1 = 不標記; 默認為1.

nRstcnt: 處理結果的長度值。
詳細用法參見Doc文件。

bool ICTCLAS_FileProcess(const char *sSrcFilename,eCodeType eCt,const char *sDsnFilename,int bPOStagged);//處理txt文件
返回值
處理文本文件成功返回true, 否則返回false
參數
sSourceFilename: 原始處理文件
eCodeType: 原始文件編碼格式
sDsnFilename: 存儲結果的文件名T
bPOStagged: 需不需要根據標注集做標記 0 = 做標記 ; 1 = 不標記; 默認為1.
注意事項
調用此函數之前需要調用init函數成功,輸出格式可以通過ICTCLAS 配置來更改,這個需要研究下配置文件。
int ICTCLAS_SetPOSmap(int nPOSmap);//設置標注集
返回值
成功為1,其他為0
參數
nPOSmap :
ICT_POS_MAP_FIRST 計算所一級標注集
ICT_POS_MAP_SECOND 計算所二級標注集 PKU_POS_MAP_SECOND 北大二級標注集 PKU_POS_MAP_FIRST 北大一級標注集
int ICTCLAS_GetWordId(const char *sWord,int nWrdLen,eCodeType eCT);
返回值
單詞的ID(我覺得是詞典裡面的存儲位置,不清楚詞典的具體結構)
參數
sWord: 目標單詞
nWrdLen: 單詞長度
eCodeType: 編碼格式
bool ICTCLAS_ResultFree ( t_pstRstVec pRetVec)
//釋放調用ICTCLAS_ParagraphProcessAW得到的vector指針
返回值
成功為1,失敗為0
參數
t_pstRstVec: ICTCLAS_ParagraphProcessAW得到的vector指針
總結:這些函數都很好用,我需要使用處理文件函數ICTCLAS_FileProcess我出現的問題是:單獨調用這個函數沒有問題,但是在MFC界面調用兩個選擇打開文件路徑和保存結果文件路徑的CFileDialog以後就會出現ICTCLAS_Init初始化失敗!郁悶了半天,查看ICTCLAS.log文件,
Default Path : E:\test_ICTCLAS\test_ICTCLAS\test_ICTCLAS
start lic check.
License succeed!Cannot open user dictionary
E:\test_ICTCLAS\test_ICTCLAS\test_ICTCLAS\Data\UserDict.pdat.
Cannot open file E:\test_ICTCLAS\test_ICTCLAS\test_ICTCLAS\Data\UserDict.map.
Cannot open user dictionary E:\test_ICTCLAS\test_ICTCLAS\test_ICTCLAS\Data\UserDict.pos.
Load dictionary down!
並沒有異常,載入失敗是因為並沒有自定義詞典。
仔細排查,發現bool ICTCLAS_Init(const char* pszInitDir=NULL)有一個默認的工作路徑,在沒有打開CFileDialog的時候默認的路徑是exe文件執行路徑,但是打開以後若不進行設置,會改變工作路徑!這就是為什麼點擊CFileDialog路徑更改,找不到路徑下的文件,當然無法初始化了!( pszInitDir:初始化路徑,應包含配置文件(Configure.xml)和詞典目錄(Data目錄)以及授權文件(user.lic). 如果這些文件及目錄在系統運行當前目錄下,此參數可以為null)
解決方案:
方案1. 在每次調用CFileDialog打開文件後重新設置工作路徑
方案2. 在程序中使用絕對路徑
方案3. CFileDialog的構造函數有8個參數,平時為了省事一般只是指定第一個。其實解決這個問題,只要在第四個參數dwFlags中加上OFN_NOCHANGEDIR即可

4. 有人在linux中nlpir/ictclas2014分詞系統使用python編譯過的嗎

用過。不過不是老版本的,用的是它的開源版本。最近張博士似乎又出了一個開源項目,更方便了。

以前ictclas014似乎只能在windows下被python調用。我就成功過。 不過到了linux下比較麻煩。java調用是可以的。但是python似乎有些麻煩。不過當時谷哥的code項目里有一個開源版本。

現在不用這么麻煩了。

5. ictclas4j既然是用java編寫的,為什麼在linux系統下運行還報錯呢(錯誤類型:java.lang.NullPointerExce

這跟系統沒關系,你報的是空指針異常

熱點內容
php判斷字元開頭 發布:2024-11-15 00:35:33 瀏覽:507
網易蘋果游戲怎麼轉移到安卓 發布:2024-11-15 00:07:52 瀏覽:270
win7php環境搭建 發布:2024-11-15 00:06:55 瀏覽:17
erpjava 發布:2024-11-14 23:52:23 瀏覽:253
電腦版地平線四怎麼連上伺服器 發布:2024-11-14 23:46:42 瀏覽:472
ios怎麼變安卓 發布:2024-11-14 23:46:36 瀏覽:333
win7共享xp列印機拒絕訪問 發布:2024-11-14 23:45:29 瀏覽:750
引起資源配置失效的原因有哪些 發布:2024-11-14 23:35:22 瀏覽:15
c語言打字 發布:2024-11-14 23:11:06 瀏覽:893
存儲程序和程序控制的原理 發布:2024-11-14 22:53:23 瀏覽:323