43、哈工大NLP自然語言處理,LTP4j的測試+還是測試


1、首先需要構建自然語言處理的LTP的框架

(1)需要下載LTP的源碼包即c++程序(https://github.com/HIT-SCIR/ltp)下載完解壓縮之后的文件為ltp-master

(2)需要下載LTP4j的封裝包(https://github.com/HIT-SCIR/ltp4j),下載完解壓縮之后的文件為ltp4j-master

(3)需要下載cmake並且安裝

(4)需要下載ant用來編譯LTP4j,將LTP4j文件編譯成ltp.jar文件,最后在myeclipse中引用它

 

2、首先編譯ltp4j-master

直接進入ltp4j-master的文件夾中,運行ant命令,然后就會生成一個

output的文件夾,里邊是

jar包就在jar文件夾下。

 

3、編譯ltp-master的c++文件源碼

這個不會編譯實在太復雜了,所以直接上網找了個編譯好的,下了下來。大家可以上以下這個地址中去找去,下載64位已經編譯好的動態鏈接庫

http://download.csdn.net/index.php/mobile/source/download/sv2008337/9471357

 

4、構建java項目,然后進行分詞測試

構建的java項目如上圖所示,ltp4j.jar文件就是第2步中編譯出來的jar包。

edu.hit.ir.ltp4j是從ltp4j-master文件夾中直接拷過來的。

ltp_data文件是分詞的詞庫,據我們經理說現在都是用字典分詞來着,所以肯定要有詞庫的,這個詞庫在這里是從下邊這里拷進來的。

 好吧是我從網上下的,這里騙了大家了。

 

下面來說卡了我時間最長的一步,就是通過jni來調用dlll動態鏈接庫,因為這需要引入動態鏈接庫的library

就是下邊這樣,在這里配置你的dlll文件庫在哪里,在我的電腦中是在,下下張圖上邊

上面這張圖也就是我從第3步中從網上下下來的dlll庫,直接在java文件中配置就可以了

 

5、分詞測試

  經過了上面的准備工作我們就真的可以開始進行分詞測試了

(1)分詞功能測試

/**
     * 1,分詞功能測試
     */
    @Test
    public void test1(){
        if(Segmentor.create("ltp_data/cws.model")<0){
              System.err.println("load failed");
              return;
            }

            String sent = "我是中國人";
            List<String> words = new ArrayList<String>();
            int size = Segmentor.segment(sent,words);

            for(int i = 0; i<size; i++) {
              System.out.print(words.get(i));
              if(i==size-1) {
                System.out.println();
              } else{  
                System.out.print("\t");
              }
            }
            Segmentor.release();
    }

結果如下所示:

 

(2)詞性標注功能測試

/**
     * 詞性標注功能測試
     */
    @Test
    public void testPosTag(){
        if(Postagger.create("ltp_data//pos.model")<0){
            System.err.println("加載失敗!");
            return;
        }
        List<String> words = new ArrayList<String>();
        words.add("我");
        words.add("從事");
        words.add("自然");
        words.add("語言");
        words.add("處理");
        words.add("方面");
        words.add("的");
        words.add("工作");
        words.add("!");
        List<String> postags = new ArrayList<String>();
        int size = Postagger.postag(words, postags);
        for (int i = 0; i < size; i++) {
            System.out.println(words.get(i)+"_"+postags.get(i));
            if(i==size-1){
                System.out.println();
            }else{
                System.out.println("|");
            }
        }
        Postagger.release();
    }

結果如下所示:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM