哈工大自然言語処理ツールボックスのltpはwindows 10のインストールに教程を使います。


ltpは哈工大製品の自然言語処理ツールボックスで、pyltpはpythonの下でltp(c++)に対するパッケージです。
linuxの下で私たちは簡単にpylotpをインストールします。いろいろなコンパイルツールが便利です。しかし、windowsの下でvsをインストールして配置をしなければなりません。私がサービスしている人はみんなwindowsの下で仕事をしていますので、彼らがwindowsの下でltpを使うことができるようにします。だからこのノートがあります。私の計画は二つがあります。
  • はwin 10のbashの下にltpをインストールし、ltpのserverを起動し、httpプロトコルを通じてwindowsの下でpythonがltpを呼び出す方法を実現します。
  • にコンパイルされたwheelをインストールします。(現在はpython 3.6/3.5 amd 64しかありません。)
  • 私は文章の一番下にまた一つの方法を引用しました。公式でコンパイルされた実行可能なexeファイルを使って、直接コマンドライン(cmdなど)で呼び出します。
  • 第一案:bash下設置
    基本的な環境
  • windows 10
  • bash for windows
  • python 3.6
  • bash on uuntu on windowsをインストールします。
    これはみんな自分で作って、インストールは簡単です。
    コンパイル環境のインストール
    
    sudo apt install cmake
    sudo apt install g++
    インストールは10分ぐらいかかります。
    ltpソースをダウンロード
  • ソースをダウンロードします。これはgithubアドレスです。
  • です。
  • は、覚えられる位置まで解凍します。
    コンパイル
    cdからソースディレクトリ、例えば私のディレクトリ:
    
    cd /mnt/d/bash-sites/ltp-3.4.0
    コンパイルコマンドを実行:
    
    ./configure
    make
    コンパイルには10分ぐらいかかります。今のカタログにはもう一つのbinフォルダがあります。
    
    drwxrwxrwx 0 root root 512 Jan 31 15:42 ./
    drwxrwxrwx 0 root root 512 Jan 31 15:30 ../
    -rwxrwxrwx 1 root root 800 Jan 31 15:30 appveyor.yml*
    -rwxrwxrwx 1 root root 0 Jan 31 15:30 AUTHORS*
    drwxrwxrwx 0 root root 512 Jan 31 15:53 bin/
    drwxrwxrwx 0 root root 512 Jan 31 15:42 build/
    -rwxrwxrwx 1 root root 29301 Jan 31 15:30 ChangeLog.md*
    drwxrwxrwx 0 root root 512 Jan 31 15:30 cmake/
    -rwxrwxrwx 1 root root 1439 Jan 31 15:30 CMakeLists.txt*
    drwxrwxrwx 0 root root 512 Jan 31 15:30 conf/
    -rwxrwxrwx 1 root root 131 Jan 31 15:30 configure*
    -rwxrwxrwx 1 root root 902 Jan 31 15:30 COPYING*
    drwxrwxrwx 0 root root 512 Jan 31 15:30 doc/
    -rwxrwxrwx 1 root root 79976 Jan 31 15:30 Doxyfile*
    drwxrwxrwx 0 root root 512 Jan 31 15:30 examples/
    -rwxrwxrwx 1 root root 1028 Jan 31 15:30 .gitignore*
    drwxrwxrwx 0 root root 512 Jan 31 15:42 include/
    -rwxrwxrwx 1 root root 85 Jan 31 15:30 INSTALL*
    drwxrwxrwx 0 root root 512 Jan 31 15:53 lib/
    -rwxrwxrwx 1 root root 965 Jan 31 15:30 Makefile*
    -rwxrwxrwx 1 root root 6639 Jan 31 15:30 NEWS.md*
    -rwxrwxrwx 1 root root 4750 Jan 31 15:30 README.md*
    drwxrwxrwx 0 root root 512 Jan 31 15:30 src/
    -rwxrwxrwx 1 root root 3048 Jan 31 15:30 subproject.d.json*
    drwxrwxrwx 0 root root 512 Jan 31 15:31 thirdparty/
    drwxrwxrwx 0 root root 512 Jan 31 15:31 tools/
    -rwxrwxrwx 1 root root 1372 Jan 31 15:30 .travis.yml*
    セットセーバー
    最初に私はserverを起動してこのエラーに出会いました。
    [INFO]2018-01-31 15:54:39 Loading segmentor model from"ltp_data/cws.model「…
    [ERROR]2018-01-31 15:54/mnt/d/bash-sites/ltp-3.0/src/ltp/LTCPResource.cpp:line 50:LoadSegmentorResource():Failed to load segmentor model
    [ERROR]2018-01-31:54:39/mnt/d/bash-sites/ltp-3.0/src/ltp/Ltp.cpp:line 78:load():wodseg,failed to load segmentor reource
    [ERROR]2018-01-31 15:54/mnt/d/bash-sites/ltp-34.0/src/server/ltp_server.cpp:line 172:main():Failed to setup LTCP engine.
    モデルファイルが足りないので、ここで最新のモデルファイルをダウンロードします。
    解消/mnt/d/bash-sites/ltp-3.4.0/ltp_data/の下で、これはltpのデフォルトのデータモデルの保存位置です。
    そしてサーバーをスムーズに起動できます。
    syd@DESKTOP-J 02 R 2 VJ:/mnt/d/bash-sites/ltp-34.0$./bin/ltp_server-port 9090
    [INFO]2018-01-31 15:56 Loading segmentor model from"ltp_data/cws.model「…
    [INFO]2018-01-31:56:36 segmentor model is loaded.
    [INFO]2018-01-31 15:56 Loading postaggar model from"ltp_data/pos.model「…
    [INFO]2018-01-31 15:56:36 postaggar model is loaded
    [INFO]2018-01-31 15:56 Loading NER resource from"ltp_data/ner.model"
    [INFO]2018-01-31:56 NER resource is loaded.
    [INFO]2018-01-31 15:56 Loading parser resource from"ltp_data/parser.model"
    [INFO]2018-01-31:56:37 parser is loaded.
    [INFO]2018-01-31 15:56 Loading srl resource from「ltp_」data/pisrl.model"
    [dynet]random seed:49390432
    [dynet]allocating memory:2000 MB
    [dynet]memory allocation done.
    [INFO]2018-01-31:56:39 srl resource is loaded.
    [INFO]2018-01-31:56:39 Resource loading finished.
    [INFO]2018-01-31 15:56:39 Start listening on port[9090]…
    テスト
    勝手にお願いを書いて、効果を見てください。
    
    import requests
    import json
    uri_base = "http://127.0.0.1:9090/ltp"
    data = {'s': '              。', 'x': 'n', 't': 'srl'}
    response = requests.get(uri_base, data=data)
    rdata = response.json()
    print(json.dumps(rdata, indent=4, ensure_ascii=False))
    
    [
     [
     [
     {
     "arg": [],
     "cont": " ",
     "id": 0,
     "ne": "O",
     "parent": 1,
     "pos": "r",
     "relate": "SBV"
     },
     {
     "arg": [
      {
      "beg": 0,
      "end": 0,
      "id": 0,
      "type": "A0"
      },
      {
      "beg": 2,
      "end": 9,
      "id": 1,
      "type": "A1"
      }
     ],
     "cont": "  ",
     "id": 1,
     "ne": "O",
     "parent": -1,
     "pos": "v",
     "relate": "HED"
     },
     {
     "arg": [],
     "cont": " ",
     "id": 2,
     "ne": "O",
     "parent": 3,
     "pos": "r",
     "relate": "SBV"
     },
     {
     "arg": [
      {
      "beg": 2,
      "end": 2,
      "id": 0,
      "type": "A0"
      },
      {
      "beg": 4,
      "end": 4,
      "id": 1,
      "type": "A1"
      },
      {
      "beg": 5,
      "end": 9,
      "id": 2,
      "type": "A2"
      }
     ],
     "cont": " ",
     "id": 3,
     "ne": "O",
     "parent": 1,
     "pos": "v",
     "relate": "VOB"
     },
     {
     "arg": [],
     "cont": "  ",
     "id": 4,
     "ne": "S-Nh",
     "parent": 3,
     "pos": "nh",
     "relate": "DBL"
     },
     {
     "arg": [],
     "cont": " ",
     "id": 5,
     "ne": "O",
     "parent": 6,
     "pos": "v",
     "relate": "ADV"
     },
     {
     "arg": [
      {
      "beg": 7,
      "end": 9,
      "id": 0,
      "type": "A1"
      }
     ],
     "cont": " ",
     "id": 6,
     "ne": "O",
     "parent": 3,
     "pos": "v",
     "relate": "VOB"
     },
     {
     "arg": [],
     "cont": "  ",
     "id": 7,
     "ne": "O",
     "parent": 6,
     "pos": "n",
     "relate": "VOB"
     },
     {
     "arg": [],
     "cont": " ",
     "id": 8,
     "ne": "O",
     "parent": 9,
     "pos": "c",
     "relate": "LAD"
     },
     {
     "arg": [],
     "cont": "  ",
     "id": 9,
     "ne": "O",
     "parent": 7,
     "pos": "n",
     "relate": "COO"
     },
     {
     "arg": [],
     "cont": "。",
     "id": 10,
     "ne": "O",
     "parent": 1,
     "pos": "wp",
     "relate": "WP"
     }
     ]
     ]
    ]
    第二の案:wheelの設置
    ダウンロード
    次の二つのファイルはそれぞれのpythonバージョンに対して一つをダウンロードすればいいです。これは私が自分のコンピュータ(win 10)でコンパイルしたものです。あなたのシステムが使えるかどうかは分かりません。64 bitのwindowsは全部できます。問題があったら下のメッセージに残してください。
  • pylot p-00.2-cp 35-win_amd 64.whl
  • pylot p-000.21-cp 36 m-win_amd 64.whl
  • この二つのファイルの違いはpythonバージョンです。
    ファイルをインストール
    ダウンロードが完了したら、コマンドラインの下で、cdからwheelファイルのあるディレクトリに、コマンドpip install wheelファイル名でインストールします。
    テスト
    インストールが完了したら、python shellを開けて、試してみます。
    
    from pyltp import SentenceSplitter
    sents = SentenceSplitter.split('      ?        !') #   
    print('
    '.join(sents))
    modelsデータをダウンロードします
  • modelsリンクをダウンロードする:https://pan.baidu.com/s/1o9vytmUパスワード:5 ntf
  • は任意の便利なところに置いてもいいです。プログラムの中では自分から起動する
  • が必要です。
    第三の案:良いltpをコンパイルした実行可能ファイルを直接呼び出します。
    この文章を参照してもいいですが、3.4バージョンではテストが失敗して、srlリソースをロードできませんでした。しかし、3.3.1バージョンでテストは成功しました。
    締め括りをつける
    以上で、哈工大自然言語処理ツールボックスのltpはwindows 10でインストールして使用する教程の文章を紹介しました。もっと関連するltpはwindows 10でインストールして使っています。以前の文章を検索してください。または続けて下記の関連記事をご覧ください。これからもよろしくお願いします。